From 437af0ec640fd2d58b4b05f5262c4f376a0d14d3 Mon Sep 17 00:00:00 2001 From: Bekket Date: Thu, 25 Nov 2021 22:10:20 +0300 Subject: [PATCH 01/38] single sale --- contracts/721/singleton/MSNFT.sol | 18 ++++--- .../721/singleton/TokenSaleSingleton.sol | 51 ++++++++++--------- 2 files changed, 37 insertions(+), 32 deletions(-) diff --git a/contracts/721/singleton/MSNFT.sol b/contracts/721/singleton/MSNFT.sol index 5cc7b86..1e1f0d4 100644 --- a/contracts/721/singleton/MSNFT.sol +++ b/contracts/721/singleton/MSNFT.sol @@ -76,7 +76,7 @@ contract MSNFT is ERC721Enumerable, Ownable { /** * @dev Rarity type of token * @param Unique -- only one token can exist - * @param Rare -- there are limited number of tokens + * @param Rare -- there are limited number of tokens ------ usefull for so called collections * @param Common -- there are unlimited number of tokens */ enum RarityType {Unique, Rare, Common} @@ -115,9 +115,12 @@ contract MSNFT is ERC721Enumerable, Ownable { // map from itemId to masterId mapping(uint256 => uint256) public ItemToMaster; - // map from from link to master_id + // map from link to master_id mapping(string => uint256) public links; + // map from itemId to positionOrder. Should be 0 if it is not collection + mapping(uint256 => uint256) public positionOrder; + // map from MasterCopyId to Meta info mapping(uint256 => ItemInfo) public MetaInfo; @@ -133,13 +136,12 @@ contract MSNFT is ERC721Enumerable, Ownable { { string ipfs_link; - // TODO: rework this for searching functionality (case when user seacrh nft item at marketplace by name (or ticker?)) string description; address author; RarityType rarity; // @todo rename it - uint i_totalSupply; // 0 means infinite, so it not be actually considered as usual totalSupply(!!) + uint i_totalSupply; // 0 means infinite, this variable can be used as maximum positionOrder for limited rarity type // ACTUAL total supply for specific mastercopy can be getted as itemIds[master_id].lenght } @@ -320,14 +322,14 @@ contract MSNFT is ERC721Enumerable, Ownable { /** * @dev external function for buying items, should be invoked from tokensale contract * @param buyer address of buyer - * @param itemAmount how much of tokens we want to buy if possible + * * @param master_id Master copy id */ - function buyItem(address buyer, uint256 itemAmount, uint256 master_id) public{ + function buyItem(address buyer, uint256 master_id) public{ address _sale = mastersales[master_id]; require(_sale == msg.sender, "MSNFT: you should call buyItem from itemsale contract"); - for (uint256 i = 0; i < itemAmount; i++ ){ + // for (uint256 i = 0; i < itemAmount; i++ ){ _item_id_count.increment(); uint256 item_id = _item_id_count.current(); @@ -335,7 +337,7 @@ contract MSNFT is ERC721Enumerable, Ownable { emit ItemBought(buyer,master_id,item_id); emit ItemBoughtHuman(buyer,master_id,item_id); - } + // } } diff --git a/contracts/721/singleton/TokenSaleSingleton.sol b/contracts/721/singleton/TokenSaleSingleton.sol index 8d68b09..ae47946 100644 --- a/contracts/721/singleton/TokenSaleSingleton.sol +++ b/contracts/721/singleton/TokenSaleSingleton.sol @@ -55,9 +55,9 @@ contract TokenSaleSingleton is Context, ReentrancyGuard { * @param purchaser who paid for the tokens * @param beneficiary who got the tokens * @param value weis paid for purchase - * @param amount amount of tokens purchased + * */ - event TokensPurchased(address indexed purchaser, address indexed beneficiary, uint256 value, uint256 amount); + event TokensPurchased(address indexed purchaser, address indexed beneficiary, uint256 value); event CalculatedFees(uint256 initial_value, uint256 fees, uint256 transfered_amount, address feeAddress); @@ -226,6 +226,7 @@ contract TokenSaleSingleton is Context, ReentrancyGuard { /** * @dev check if sale limit is not exceeded * @param amountToBuy how much of tokens want to buy + * @todo rework this? */ function check_sale_limit(uint256 amountToBuy, uint master_id_) public view returns (bool) { uint sl = sale_limit(master_id_); @@ -245,26 +246,26 @@ contract TokenSaleSingleton is Context, ReentrancyGuard { /** * @dev Main function to buyTokens * @param beneficiary buyer address - * @param tokenAmountToBuy how much tokens we want to buy by one tx + * * @param currency ERC20 token used as a currency */ - function buyTokens(address beneficiary,uint256 tokenAmountToBuy, CurrenciesERC20.CurrencyERC20 currency, uint master_id_) public nonReentrant payable { + function buyTokens(address beneficiary, CurrenciesERC20.CurrencyERC20 currency, uint master_id_) public nonReentrant payable { SaleInfo storage metasale = MSaleInfo[master_id_]; - uint256 tokens = tokenAmountToBuy; + // uint256 tokens = tokenAmountToBuy; // How much is needed to pay (perhaps we need to rework it to make only 1 token buy per one call) -- it will make logic simplier and cheaper - uint256 weiAmount = getWeiAmount(tokens,currency,master_id_); // can be zero if wrong currency set-up to pay. in this case tx will fail under pre-validate purchase check + uint256 weiAmount = getWeiAmount(currency,master_id_); // can be zero if wrong currency set-up to pay. in this case tx will fail under pre-validate purchase check - _preValidatePurchase(beneficiary, weiAmount, tokens, currency,master_id_); + _preValidatePurchase(beneficiary, weiAmount, currency,master_id_); // update state metasale.currency_balances[currency] = metasale.currency_balances[currency] + (weiAmount); // If it is unlimited sale then _sale_limit should be always 0 - metasale._sold_count = metasale._sold_count + tokens; + metasale._sold_count++; - _processPurchase(beneficiary, tokens,currency, weiAmount,master_id_); - emit TokensPurchased(_msgSender(), beneficiary, weiAmount, tokens); + _processPurchase(beneficiary, currency, weiAmount,master_id_); + emit TokensPurchased(_msgSender(), beneficiary, weiAmount); // _updatePurchasingState(beneficiary, weiAmount); // can be silenced as well // _postValidatePurchase(beneficiary, weiAmount); @@ -280,20 +281,21 @@ contract TokenSaleSingleton is Context, ReentrancyGuard { * require(weiRaised().add(weiAmount) <= cap); * @param beneficiary Address performing the token purchase * @param weiAmount Value in wei involved in the purchase - * @param tokens number of tokens we want to buy + * * @param currency ERC20 we use as currency */ - function _preValidatePurchase(address beneficiary, uint256 weiAmount, uint256 tokens, CurrenciesERC20.CurrencyERC20 currency, uint master_id_) internal view { + function _preValidatePurchase(address beneficiary, uint256 weiAmount, CurrenciesERC20.CurrencyERC20 currency, uint master_id_) internal view { require(beneficiary != address(0), "Crowdsale: beneficiary is the zero address"); require(weiAmount != 0, "Crowdsale: Pre-validate: weiAmount is 0, consider you have choose right currency to pay with"); SaleInfo storage metasale = MSaleInfo[master_id_]; uint sc = metasale._sold_count; - uint limit = sc + tokens; + uint limit = sc++; // @todo: check this in tests // Check sale_limit (including rarity check) require(check_sale_limit(limit,master_id_) == true, "tokens amount should not exceed sale_limit"); + // metasale._sold_count = limit; // Check allowance of currency balance IERC20Metadata currency_token = get_currency(currency); @@ -301,6 +303,7 @@ contract TokenSaleSingleton is Context, ReentrancyGuard { require(approved_balance >= weiAmount, "Tokensale: ERC20:approved spending limit is not enoght"); + this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 } @@ -318,24 +321,24 @@ contract TokenSaleSingleton is Context, ReentrancyGuard { * @dev Source of tokens. Override this method to modify the way in which the crowdsale ultimately gets and sends * its tokens. * @param beneficiary Address performing the token purchase - * @param tokenAmount Number of tokens to be emitted + * */ - function _deliverTokens(address beneficiary, uint256 tokenAmount,uint master_id_) internal { - _token.buyItem(beneficiary,tokenAmount, master_id_); + function _deliverTokens(address beneficiary, uint master_id_) internal { + _token.buyItem(beneficiary, master_id_); } /** * @dev Executed when a purchase has been validated and is ready to be executed. Doesn't necessarily emit/send * tokens. * @param beneficiary Address receiving the tokens - * @param tokenAmount Number of tokens to be purchased + * * @param currency ERC20 used as currency * @param weiAmount wei amount involved in transaction */ - function _processPurchase(address beneficiary, uint256 tokenAmount, CurrenciesERC20.CurrencyERC20 currency, uint256 weiAmount,uint master_id_) internal { + function _processPurchase(address beneficiary, CurrenciesERC20.CurrencyERC20 currency, uint256 weiAmount,uint master_id_) internal { IERC20Metadata currency_token = get_currency(currency); require(currency_token.transferFrom(beneficiary, address(this), weiAmount), "TokenSale: ERC20: transferFrom buyer to itemsale contract failed "); - _deliverTokens(beneficiary, tokenAmount, master_id_); + _deliverTokens(beneficiary, master_id_); } /** @@ -351,14 +354,14 @@ contract TokenSaleSingleton is Context, ReentrancyGuard { /** * @dev How much is needed to pay for this token amount to buy - * @param tokenAmountToBuy how much we want to buy + * * @param currency ERC20 used as currency - * @return weiAmount how much we need to pay, could be zero if wrong currency, but will fail at pre-validation + * @return price how much we need to pay, could be zero if wrong currency, but will fail at pre-validation */ - function getWeiAmount(uint256 tokenAmountToBuy, CurrenciesERC20.CurrencyERC20 currency, uint master_id_) public view returns(uint256){ + function getWeiAmount(CurrenciesERC20.CurrencyERC20 currency, uint master_id_) public view returns(uint256){ uint256 price = get_price(currency,master_id_); // @todo: WARNING -- it can be 0 if buyer mismatch currency, but such transaction will fail at pre-validate purchase check! - uint256 weiAmount = price * tokenAmountToBuy; - return weiAmount; + // uint256 weiAmount = price * tokenAmountToBuy; + return price; } /** From 102a2bfdebb10ab633c613ee6ae509118f1aaef2 Mon Sep 17 00:00:00 2001 From: Bekket Date: Thu, 25 Nov 2021 22:41:35 +0300 Subject: [PATCH 02/38] some cleanup --- contracts/721/singleton/MSNFT.sol | 38 ++++++++++--------- .../721/singleton/TokenSaleSingleton.sol | 3 +- 2 files changed, 23 insertions(+), 18 deletions(-) diff --git a/contracts/721/singleton/MSNFT.sol b/contracts/721/singleton/MSNFT.sol index 1e1f0d4..47ec61a 100644 --- a/contracts/721/singleton/MSNFT.sol +++ b/contracts/721/singleton/MSNFT.sol @@ -2,7 +2,7 @@ pragma solidity ^0.8.0; import "../../../node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol"; -import "../../../node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol"; +//import "../../../node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol"; //import "../../../node_modules/@openzeppelin/contracts/token/ERC721/presets/ERC721PresetMinterPauserAutoId.sol"; import "../../../node_modules/@openzeppelin/contracts/utils/Counters.sol"; //import "../../../node_modules/@openzeppelin/contracts/utils/math/SafeMath.sol"; @@ -75,11 +75,11 @@ contract MSNFT is ERC721Enumerable, Ownable { // Rarity type /** * @dev Rarity type of token - * @param Unique -- only one token can exist - * @param Rare -- there are limited number of tokens ------ usefull for so called collections - * @param Common -- there are unlimited number of tokens + * @param Unique -- only one token can exist. use this type for something unique. high gas costs. + * @param Limited -- there are limited number of tokens . use this type for multy-asset nft (erc-1155 like). safe gas costs + * @param Unlimited -- there are unlimited number of tokens. use this when you want to sell 'clones' of your assets. so cheap that even you can afford it */ - enum RarityType {Unique, Rare, Common} + enum RarityType {Unique, Limited, Unlimited} // map from mastercopy_id to itemsale address mapping(uint256 => address) public mastersales; @@ -118,7 +118,7 @@ contract MSNFT is ERC721Enumerable, Ownable { // map from link to master_id mapping(string => uint256) public links; - // map from itemId to positionOrder. Should be 0 if it is not collection + // map from itemId to positionOrder. Should be 0 if it is not collection. positionOrder is a file position order inside IPFS directory. Think of it as ancient CDROM's from 1990-s. mapping(uint256 => uint256) public positionOrder; // map from MasterCopyId to Meta info @@ -209,11 +209,11 @@ contract MSNFT is ERC721Enumerable, Ownable { RarityType _rarity = set_rarity(_supplyType); uint m_totalSupply; - if (_rarity == RarityType.Rare){ + if (_rarity == RarityType.Limited){ m_totalSupply = _supplyType; } if (_rarity == RarityType.Unique) { m_totalSupply = 1; - } if (_rarity == RarityType.Common) { + } if (_rarity == RarityType.Unlimited) { m_totalSupply = 0; // infinite. which means it is not really totalSupply } MetaInfo[mid] = ItemInfo(link, _description,_author,_rarity, m_totalSupply); @@ -239,9 +239,9 @@ contract MSNFT is ERC721Enumerable, Ownable { _rarity = RarityType.Unique; } if (_supplyType == 0) { // Unlimited sale - _rarity = RarityType.Common; + _rarity = RarityType.Unlimited; } else { - _rarity = RarityType.Rare; // Limited sale + _rarity = RarityType.Limited; // Limited sale } return _rarity; @@ -270,7 +270,7 @@ contract MSNFT is ERC721Enumerable, Ownable { * @param m_master_id master copy of item * @param item_id counter of item. There are no incrementation of this counter here, so make sure this function is purely internal(!) */ - function Mint(address to, uint m_master_id, uint item_id) internal { + function Mint(address to, uint m_master_id, uint item_id, uint positionOrder_) internal { ItemInfo memory meta; meta = MetaInfo[m_master_id]; @@ -279,8 +279,10 @@ contract MSNFT is ERC721Enumerable, Ownable { if (meta.rarity == RarityType.Unique) { require(itemIds[m_master_id].length == 0 , "MSNFT: MINT: try to mint more than one of Unique Items"); } - if (meta.rarity == RarityType.Rare) { - require(itemIds[m_master_id].length < meta.i_totalSupply," MSNFT: MINT: try to mint more than totalSupply of Rare token"); + if (meta.rarity == RarityType.Limited) { + require(itemIds[m_master_id].length < meta.i_totalSupply," MSNFT: MINT: try to mint more than totalSupply of Limited token"); + require(positionOrder[item_id] == 0, "MSNFT: limited item with this positionOrder is already minted"); + positionOrder[item_id] = positionOrder_; } _mint(to,item_id); @@ -299,6 +301,8 @@ contract MSNFT is ERC721Enumerable, Ownable { itemIndex[item_id] = itemIds[m_master_id].length; // this item_id will be stored at itemIds[m_master_id] at this *position order*. itemIds[m_master_id].push(item_id); // this item is stored at itemIds and tethered to master_id ItemToMaster[item_id] = m_master_id; // here we can store and obtain what mid is tethered to specific token id, so we can get MetaInfo for specific token fast + + positionOrder[item_id] = 0; // should be always zero if it is not limited rarity type emit MintNewToken(to, m_master_id, item_id); } @@ -325,19 +329,19 @@ contract MSNFT is ERC721Enumerable, Ownable { * * @param master_id Master copy id */ - function buyItem(address buyer, uint256 master_id) public{ + function buyItem(address buyer, uint256 master_id, uint positionOrder_) public{ address _sale = mastersales[master_id]; require(_sale == msg.sender, "MSNFT: you should call buyItem from itemsale contract"); - // for (uint256 i = 0; i < itemAmount; i++ ){ + _item_id_count.increment(); uint256 item_id = _item_id_count.current(); - Mint(buyer, master_id, item_id); + Mint(buyer, master_id, item_id, positionOrder_); emit ItemBought(buyer,master_id,item_id); emit ItemBoughtHuman(buyer,master_id,item_id); - // } + } diff --git a/contracts/721/singleton/TokenSaleSingleton.sol b/contracts/721/singleton/TokenSaleSingleton.sol index ae47946..df55f32 100644 --- a/contracts/721/singleton/TokenSaleSingleton.sol +++ b/contracts/721/singleton/TokenSaleSingleton.sol @@ -223,10 +223,11 @@ contract TokenSaleSingleton is Context, ReentrancyGuard { // return _currencies[currency]; } + // @todo: rework? /** * @dev check if sale limit is not exceeded * @param amountToBuy how much of tokens want to buy - * @todo rework this? + * */ function check_sale_limit(uint256 amountToBuy, uint master_id_) public view returns (bool) { uint sl = sale_limit(master_id_); From 36b41b3effad59f902ca2bb23c024f26ae550465 Mon Sep 17 00:00:00 2001 From: Bekket Date: Thu, 25 Nov 2021 23:17:45 +0300 Subject: [PATCH 03/38] added checks for file order in tokensale singleton --- contracts/721/singleton/MSNFT.sol | 14 ++++----- .../721/singleton/TokenSaleSingleton.sol | 30 ++++++++++--------- 2 files changed, 23 insertions(+), 21 deletions(-) diff --git a/contracts/721/singleton/MSNFT.sol b/contracts/721/singleton/MSNFT.sol index 47ec61a..273a882 100644 --- a/contracts/721/singleton/MSNFT.sol +++ b/contracts/721/singleton/MSNFT.sol @@ -118,8 +118,8 @@ contract MSNFT is ERC721Enumerable, Ownable { // map from link to master_id mapping(string => uint256) public links; - // map from itemId to positionOrder. Should be 0 if it is not collection. positionOrder is a file position order inside IPFS directory. Think of it as ancient CDROM's from 1990-s. - mapping(uint256 => uint256) public positionOrder; + // map from master id to positionOrder to itemId. Should be 0 if it is not collection. positionOrder is a file position order inside IPFS directory. Think of it as ancient CDROM's from 1990-s. + mapping(uint256 => mapping(uint256 => uint256)) public positionOrder; // map from MasterCopyId to Meta info mapping(uint256 => ItemInfo) public MetaInfo; @@ -281,8 +281,8 @@ contract MSNFT is ERC721Enumerable, Ownable { } if (meta.rarity == RarityType.Limited) { require(itemIds[m_master_id].length < meta.i_totalSupply," MSNFT: MINT: try to mint more than totalSupply of Limited token"); - require(positionOrder[item_id] == 0, "MSNFT: limited item with this positionOrder is already minted"); - positionOrder[item_id] = positionOrder_; + require(positionOrder[m_master_id][positionOrder_] == 0, "MSNFT: limited item with this positionOrder is already minted"); + positionOrder[m_master_id][positionOrder_] = item_id; } _mint(to,item_id); @@ -302,7 +302,7 @@ contract MSNFT is ERC721Enumerable, Ownable { itemIds[m_master_id].push(item_id); // this item is stored at itemIds and tethered to master_id ItemToMaster[item_id] = m_master_id; // here we can store and obtain what mid is tethered to specific token id, so we can get MetaInfo for specific token fast - positionOrder[item_id] = 0; // should be always zero if it is not limited rarity type + positionOrder[m_master_id][0] = 0; // should be always zero if it is not limited rarity type emit MintNewToken(to, m_master_id, item_id); } @@ -312,14 +312,14 @@ contract MSNFT is ERC721Enumerable, Ownable { * @param to whom minted token will be sent * @param m_master_id id of mastercopy */ - function EmitItem(address to, uint m_master_id) public { + function EmitItem(address to, uint m_master_id, uint positionOrder_) public { ItemInfo memory meta; meta = MetaInfo[m_master_id]; require(msg.sender == meta.author, "MSNFT: only author can emit items outside of sale"); _item_id_count.increment(); uint256 item_id = _item_id_count.current(); - Mint(to, m_master_id, item_id); + Mint(to, m_master_id, item_id,positionOrder_); } // @todo -- make external instead of public? diff --git a/contracts/721/singleton/TokenSaleSingleton.sol b/contracts/721/singleton/TokenSaleSingleton.sol index df55f32..2200e4e 100644 --- a/contracts/721/singleton/TokenSaleSingleton.sol +++ b/contracts/721/singleton/TokenSaleSingleton.sol @@ -164,10 +164,10 @@ contract TokenSaleSingleton is Context, ReentrancyGuard { require(i_sale_limit == 1, "Tokensale: Attempt to create new Tokensale for unique NFT with wrong sale_limit"); metasale._sale_limit = 1; } - if (metasale._rarity_type == MSNFT.RarityType.Common) { + if (metasale._rarity_type == MSNFT.RarityType.Unlimited) { metasale._sale_limit = 0; } - if (metasale._rarity_type == MSNFT.RarityType.Rare) { + if (metasale._rarity_type == MSNFT.RarityType.Limited) { metasale._sale_limit = i_sale_limit; } @@ -223,7 +223,7 @@ contract TokenSaleSingleton is Context, ReentrancyGuard { // return _currencies[currency]; } - // @todo: rework? + /** * @dev check if sale limit is not exceeded * @param amountToBuy how much of tokens want to buy @@ -250,7 +250,7 @@ contract TokenSaleSingleton is Context, ReentrancyGuard { * * @param currency ERC20 token used as a currency */ - function buyTokens(address beneficiary, CurrenciesERC20.CurrencyERC20 currency, uint master_id_) public nonReentrant payable { + function buyTokens(address beneficiary, CurrenciesERC20.CurrencyERC20 currency, uint master_id_, uint file_order_) public nonReentrant payable { SaleInfo storage metasale = MSaleInfo[master_id_]; @@ -258,14 +258,14 @@ contract TokenSaleSingleton is Context, ReentrancyGuard { // How much is needed to pay (perhaps we need to rework it to make only 1 token buy per one call) -- it will make logic simplier and cheaper uint256 weiAmount = getWeiAmount(currency,master_id_); // can be zero if wrong currency set-up to pay. in this case tx will fail under pre-validate purchase check - _preValidatePurchase(beneficiary, weiAmount, currency,master_id_); + _preValidatePurchase(beneficiary, weiAmount, currency,master_id_,file_order_); // update state metasale.currency_balances[currency] = metasale.currency_balances[currency] + (weiAmount); // If it is unlimited sale then _sale_limit should be always 0 metasale._sold_count++; - _processPurchase(beneficiary, currency, weiAmount,master_id_); + _processPurchase(beneficiary, currency, weiAmount,master_id_,file_order_); emit TokensPurchased(_msgSender(), beneficiary, weiAmount); // _updatePurchasingState(beneficiary, weiAmount); // can be silenced as well @@ -285,7 +285,7 @@ contract TokenSaleSingleton is Context, ReentrancyGuard { * * @param currency ERC20 we use as currency */ - function _preValidatePurchase(address beneficiary, uint256 weiAmount, CurrenciesERC20.CurrencyERC20 currency, uint master_id_) internal view { + function _preValidatePurchase(address beneficiary, uint256 weiAmount, CurrenciesERC20.CurrencyERC20 currency, uint master_id_, uint256 file_order_) internal view { require(beneficiary != address(0), "Crowdsale: beneficiary is the zero address"); require(weiAmount != 0, "Crowdsale: Pre-validate: weiAmount is 0, consider you have choose right currency to pay with"); @@ -296,18 +296,20 @@ contract TokenSaleSingleton is Context, ReentrancyGuard { // Check sale_limit (including rarity check) require(check_sale_limit(limit,master_id_) == true, "tokens amount should not exceed sale_limit"); - // metasale._sold_count = limit; + if (file_order_ != 0) + { + require(metasale._rarity_type == MSNFT.RarityType.Limited , "file order can be setted up only for limited collection"); + } // Check allowance of currency balance IERC20Metadata currency_token = get_currency(currency); uint256 approved_balance = currency_token.allowance(beneficiary, address(this)); require(approved_balance >= weiAmount, "Tokensale: ERC20:approved spending limit is not enoght"); - - this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 } + /** * @dev Validation of an executed purchase. Observe state and use revert statements to undo rollback when valid * conditions are not met. @@ -324,8 +326,8 @@ contract TokenSaleSingleton is Context, ReentrancyGuard { * @param beneficiary Address performing the token purchase * */ - function _deliverTokens(address beneficiary, uint master_id_) internal { - _token.buyItem(beneficiary, master_id_); + function _deliverTokens(address beneficiary, uint master_id_, uint256 file_order_) internal { + _token.buyItem(beneficiary, master_id_,file_order_); } /** @@ -336,10 +338,10 @@ contract TokenSaleSingleton is Context, ReentrancyGuard { * @param currency ERC20 used as currency * @param weiAmount wei amount involved in transaction */ - function _processPurchase(address beneficiary, CurrenciesERC20.CurrencyERC20 currency, uint256 weiAmount,uint master_id_) internal { + function _processPurchase(address beneficiary, CurrenciesERC20.CurrencyERC20 currency, uint256 weiAmount,uint master_id_, uint256 file_order_) internal { IERC20Metadata currency_token = get_currency(currency); require(currency_token.transferFrom(beneficiary, address(this), weiAmount), "TokenSale: ERC20: transferFrom buyer to itemsale contract failed "); - _deliverTokens(beneficiary, master_id_); + _deliverTokens(beneficiary, master_id_,file_order_); } /** From 646cffb50be112cafa230535603c73d35cccb480 Mon Sep 17 00:00:00 2001 From: Bekket Date: Thu, 25 Nov 2021 23:22:00 +0300 Subject: [PATCH 04/38] light renames --- contracts/721/singleton/MSNFT.sol | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/contracts/721/singleton/MSNFT.sol b/contracts/721/singleton/MSNFT.sol index 273a882..1f18052 100644 --- a/contracts/721/singleton/MSNFT.sol +++ b/contracts/721/singleton/MSNFT.sol @@ -118,7 +118,7 @@ contract MSNFT is ERC721Enumerable, Ownable { // map from link to master_id mapping(string => uint256) public links; - // map from master id to positionOrder to itemId. Should be 0 if it is not collection. positionOrder is a file position order inside IPFS directory. Think of it as ancient CDROM's from 1990-s. + // map from master id to fileOrder to itemId. Should be 0 if it is not collection. positionOrder is a file position order inside IPFS directory. Think of it as ancient CDROM's from 1990-s. mapping(uint256 => mapping(uint256 => uint256)) public positionOrder; // map from MasterCopyId to Meta info @@ -270,7 +270,7 @@ contract MSNFT is ERC721Enumerable, Ownable { * @param m_master_id master copy of item * @param item_id counter of item. There are no incrementation of this counter here, so make sure this function is purely internal(!) */ - function Mint(address to, uint m_master_id, uint item_id, uint positionOrder_) internal { + function Mint(address to, uint m_master_id, uint item_id, uint file_order_) internal { ItemInfo memory meta; meta = MetaInfo[m_master_id]; @@ -281,8 +281,8 @@ contract MSNFT is ERC721Enumerable, Ownable { } if (meta.rarity == RarityType.Limited) { require(itemIds[m_master_id].length < meta.i_totalSupply," MSNFT: MINT: try to mint more than totalSupply of Limited token"); - require(positionOrder[m_master_id][positionOrder_] == 0, "MSNFT: limited item with this positionOrder is already minted"); - positionOrder[m_master_id][positionOrder_] = item_id; + require(positionOrder[m_master_id][file_order_] == 0, "MSNFT: limited item with this file_order_ is already minted"); + positionOrder[m_master_id][file_order_] = item_id; } _mint(to,item_id); @@ -312,14 +312,14 @@ contract MSNFT is ERC721Enumerable, Ownable { * @param to whom minted token will be sent * @param m_master_id id of mastercopy */ - function EmitItem(address to, uint m_master_id, uint positionOrder_) public { + function EmitItem(address to, uint m_master_id, uint file_order_) public { ItemInfo memory meta; meta = MetaInfo[m_master_id]; require(msg.sender == meta.author, "MSNFT: only author can emit items outside of sale"); _item_id_count.increment(); uint256 item_id = _item_id_count.current(); - Mint(to, m_master_id, item_id,positionOrder_); + Mint(to, m_master_id, item_id,file_order_); } // @todo -- make external instead of public? @@ -329,7 +329,7 @@ contract MSNFT is ERC721Enumerable, Ownable { * * @param master_id Master copy id */ - function buyItem(address buyer, uint256 master_id, uint positionOrder_) public{ + function buyItem(address buyer, uint256 master_id, uint file_order_) public{ address _sale = mastersales[master_id]; require(_sale == msg.sender, "MSNFT: you should call buyItem from itemsale contract"); @@ -337,7 +337,7 @@ contract MSNFT is ERC721Enumerable, Ownable { _item_id_count.increment(); uint256 item_id = _item_id_count.current(); - Mint(buyer, master_id, item_id, positionOrder_); + Mint(buyer, master_id, item_id, file_order_); emit ItemBought(buyer,master_id,item_id); emit ItemBoughtHuman(buyer,master_id,item_id); From aff8570c4f15fd631aa9c4a378c1f0780851f5fb Mon Sep 17 00:00:00 2001 From: Bekket Date: Thu, 25 Nov 2021 23:31:17 +0300 Subject: [PATCH 05/38] fix #78 --- contracts/721/singleton/InterfaceRegister.sol | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts/721/singleton/InterfaceRegister.sol b/contracts/721/singleton/InterfaceRegister.sol index 2fce1f3..dff6ba8 100644 --- a/contracts/721/singleton/InterfaceRegister.sol +++ b/contracts/721/singleton/InterfaceRegister.sol @@ -14,7 +14,7 @@ contract InterfaceRegister { bytes4 public _INTERFACE_ID_IERC721ENUMERABLE; // should be 0x780e9d63 // bytes4 private _INTERFACE_ID_ERC721METADATA = 0x5b5e139f; // 0x5b5e139f bytes4 public _INTERFACE_ID_IERC721METADATA; // 0x5b5e139f - bytes4 public _INTERFACE_ID_IERC721; // 0x7aa5391d -- @WARN -- MAY BE *WRONG* + bytes4 public _INTERFACE_ID_IERC721; // 0x7aa5391d -- @WARN -- MAY BE *WRONG* should be eqal 0x80ac58cd function getInterfaceEnumerable() public view returns (bytes4) { @@ -54,7 +54,7 @@ contract InterfaceRegister { _INTERFACE_ID_IERC721ENUMERABLE = calculateIERC721Enumarable(); _INTERFACE_ID_IERC721METADATA = calculateIERC721Metadata(); - _INTERFACE_ID_IERC721 = calculateIERC721(); + _INTERFACE_ID_IERC721 = 0x80ac58cd; } From 1fa39eb99d14d1a64d82677c660d31981d71dea3 Mon Sep 17 00:00:00 2001 From: Bekket Date: Thu, 25 Nov 2021 23:33:23 +0300 Subject: [PATCH 06/38] comment --- contracts/721/singleton/InterfaceRegister.sol | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts/721/singleton/InterfaceRegister.sol b/contracts/721/singleton/InterfaceRegister.sol index dff6ba8..f1496f9 100644 --- a/contracts/721/singleton/InterfaceRegister.sol +++ b/contracts/721/singleton/InterfaceRegister.sol @@ -44,7 +44,7 @@ contract InterfaceRegister { function calculateIERC721() public pure returns (bytes4) { - // TODO: wrong calculation, need to fix.. use IERC721Enumarable interface for MSNFT + // wrong calculation, need to fix.. use IERC721Enumarable interface for MSNFT IERC721 i; return i.balanceOf.selector ^ i.ownerOf.selector ^ i.transferFrom.selector ^ i.approve.selector ^ i.getApproved.selector ^ i.setApprovalForAll.selector ^ i.isApprovedForAll.selector; @@ -54,7 +54,7 @@ contract InterfaceRegister { _INTERFACE_ID_IERC721ENUMERABLE = calculateIERC721Enumarable(); _INTERFACE_ID_IERC721METADATA = calculateIERC721Metadata(); - _INTERFACE_ID_IERC721 = 0x80ac58cd; + _INTERFACE_ID_IERC721 = 0x80ac58cd; // hardcode is not the best way to do it but } From 0fa006e0dffd24be50e2c3c0e7ff0140a598ff9c Mon Sep 17 00:00:00 2001 From: daseinsucks Date: Wed, 1 Dec 2021 22:30:24 +0300 Subject: [PATCH 07/38] interface for tokensale --- .../721/singleton/ITokenSaleSingleton.sol | 129 ++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 contracts/721/singleton/ITokenSaleSingleton.sol diff --git a/contracts/721/singleton/ITokenSaleSingleton.sol b/contracts/721/singleton/ITokenSaleSingleton.sol new file mode 100644 index 0000000..e490d97 --- /dev/null +++ b/contracts/721/singleton/ITokenSaleSingleton.sol @@ -0,0 +1,129 @@ +//SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.0; + +import "../../../node_modules/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import "../../../node_modules/@openzeppelin/contracts/security/ReentrancyGuard.sol"; +import "../../../node_modules/@openzeppelin/contracts/utils/Context.sol"; +import "../../../node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol"; +import "../../../node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"; +import "../../../node_modules/@openzeppelin/contracts/utils/Counters.sol"; + +import "./MSNFT.sol"; +import "./CurrenciesERC20.sol"; + + +interface ITokenSaleSingleton { + + /** + * Event for token purchase logging + * @param purchaser who paid for the tokens + * @param beneficiary who got the tokens + * @param value weis paid for purchase + * @param amount amount of tokens purchased + */ + event TokensPurchased( + address indexed purchaser, + address indexed beneficiary, + uint256 value, + uint256 amount + ); + + event CalculatedFees( + uint256 initial_value, + uint256 fees, + uint256 transfered_amount, + address feeAddress + ); + + /** + * @return the Master NFT contract. + */ + function token() external view returns (MSNFT); + + /** + * + * @dev Create new Sale for given master_id + * @param i_wallet Address where collected funds will be forwarded to + * @param i_token Address of the Master Contract + * @param i_sale_limit How much we want to sell. Should be consistent with rarity type + * + * @param sprice Price for 1 token. (in wei/lowest decimal format) + * @param _currency ERC20 token used as a currency. If it stable then price is setting equal for all stables. + * @param c_master_id ID of mastercopy being sold + */ + function CreateNewSale( + address payable i_wallet, + MSNFT i_token, + uint256 i_sale_limit, + uint256 sprice, + CurrenciesERC20.CurrencyERC20 _currency, + uint256 c_master_id + ) external; + + /** + * @return the address where funds are collected (author). + */ + function wallet(uint256 master_id_) external view returns (address); + + function getBalances( + CurrenciesERC20.CurrencyERC20 _currency, + uint256 master_id_ + ) external view returns (uint256); + + function sale_limit(uint256 master_id_) external view returns (uint256); + + function sold_count(uint256 master_id_) external view returns (uint256); + + function isInitialized(uint256 master_id_) external view returns (bool); + + function get_price( + CurrenciesERC20.CurrencyERC20 currency, + uint256 master_id_ + ) external view returns (uint256); + + function get_currency(CurrenciesERC20.CurrencyERC20 currency) external view returns (IERC20Metadata); + + /** + * @dev check if sale limit is not exceeded + * @param amountToBuy how much of tokens want to buy + */ + function check_sale_limit(uint256 amountToBuy, uint256 master_id_) external view returns (bool); + + /** + * @dev Main function to buyTokens + * @param beneficiary buyer address + * @param tokenAmountToBuy how much tokens we want to buy by one tx + * @param currency ERC20 token used as a currency + */ + function buyTokens( + address beneficiary, + uint256 tokenAmountToBuy, + CurrenciesERC20.CurrencyERC20 currency, + uint256 master_id_ + ) external; + + /** + * @dev How much is needed to pay for this token amount to buy + * @param tokenAmountToBuy how much we want to buy + * @param currency ERC20 used as currency + * @return weiAmount how much we need to pay, could be zero if wrong currency, but will fail at pre-validation + */ + function getWeiAmount( + uint256 tokenAmountToBuy, + CurrenciesERC20.CurrencyERC20 currency, + uint256 master_id_ + ) external view returns (uint256); + + /** + * @dev determine how funds are collected by seller + * @param currency ERC20 currency + */ + function withDrawFunds( + CurrenciesERC20.CurrencyERC20 currency, + uint256 master_id_ + ) external; + + /** + function CloseAndDestroy(address payable _to) external; + */ +} \ No newline at end of file From 03de27864e374d4cab4c0a73889bf2278eff6139 Mon Sep 17 00:00:00 2001 From: daseinsucks Date: Fri, 3 Dec 2021 20:22:54 +0300 Subject: [PATCH 08/38] MST now may be minted by anyone for testing purposes --- contracts/test_erc20_tokens/MST.sol | 11 +- .../test_erc20_tokens/TestTokenERC20.sol | 2 +- package-lock.json | 28337 +--------------- test/mst_faucet.js | 30 + truffle-config.js | 14 +- 5 files changed, 207 insertions(+), 28187 deletions(-) create mode 100644 test/mst_faucet.js diff --git a/contracts/test_erc20_tokens/MST.sol b/contracts/test_erc20_tokens/MST.sol index 2403ad8..b4018c3 100644 --- a/contracts/test_erc20_tokens/MST.sol +++ b/contracts/test_erc20_tokens/MST.sol @@ -3,10 +3,19 @@ pragma solidity ^0.8.0; import "./TestTokenERC20.sol"; -// this contract is exist cause we need to deploy ERC20 test tokens by truffle deployer, so we need js artifacts for that purpose (which can't be created otherway cause OZ is in node_modules) +// this contract exists cause we need to deploy ERC20 test tokens by truffle deployer, so we need js artifacts for that purpose (which can't be created otherway cause OZ is in node_modules) contract MST is TestTokenERC20 { constructor(string memory name_, string memory symbol_) TestTokenERC20(name_,symbol_) {} +/* + TODO: delete the function below before release + + LINES 15-17 ARE HERE FOR TESTING PURPOSES ONLY! IT'S IMPORTANT TO REMOVE THEM AFTERWARDS! + */ +function MintERC20 (address to, uint amount) public override{ + super._mint(to, amount); + } + } diff --git a/contracts/test_erc20_tokens/TestTokenERC20.sol b/contracts/test_erc20_tokens/TestTokenERC20.sol index ef148f7..6906f8e 100644 --- a/contracts/test_erc20_tokens/TestTokenERC20.sol +++ b/contracts/test_erc20_tokens/TestTokenERC20.sol @@ -22,7 +22,7 @@ import "../../node_modules/@openzeppelin/contracts/access/Ownable.sol"; // super._mint(msg.sender, amount); } - function MintERC20 (address to, uint amount) public onlyOwner{ + function MintERC20 (address to, uint amount) virtual public onlyOwner{ super._mint(to, amount); } diff --git a/package-lock.json b/package-lock.json index da3fc54..4d45de8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,27834 +1,13 @@ { "name": "universalnftmarketplace", "version": "1.0.0", - "lockfileVersion": 2, + "lockfileVersion": 1, "requires": true, - "packages": { - "": { - "name": "universalnftmarketplace", - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "@openzeppelin/contracts": "^4.1.0", - "@truffle/contract": "^4.3.40", - "truffle": "^5.4.10", - "web3": "^1.5.2" - }, - "devDependencies": { - "@openzeppelin/test-helpers": "^0.5.13", - "@truffle/hdwallet-provider": "^1.5.0", - "eth-gas-reporter": "^0.2.22", - "solc-0.8": "npm:solc@^0.8.9", - "solidity-docgen": "npm:solc@^0.8.9", - "truffle-plugin-verify": "^0.5.18" - } - }, - "node_modules/@apollo/client": { - "version": "3.4.11", - "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.4.11.tgz", - "integrity": "sha512-+A0z/Vy7sDg1uyijv3t9w1U0ybxn0bSpMUZHpsb2cLg/zM8fEHQ217226buzJ+cPUA1GVfJ8n6JsiN26RchvNA==", - "optional": true, - "dependencies": { - "@graphql-typed-document-node/core": "^3.0.0", - "@wry/context": "^0.6.0", - "@wry/equality": "^0.5.0", - "@wry/trie": "^0.3.0", - "graphql-tag": "^2.12.3", - "hoist-non-react-statics": "^3.3.2", - "optimism": "^0.16.1", - "prop-types": "^15.7.2", - "symbol-observable": "^4.0.0", - "ts-invariant": "^0.9.0", - "tslib": "^2.3.0", - "zen-observable-ts": "~1.1.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0", - "react": "^16.8.0 || ^17.0.0", - "subscriptions-transport-ws": "^0.9.0" - }, - "peerDependenciesMeta": { - "react": { - "optional": true - }, - "subscriptions-transport-ws": { - "optional": true - } - } - }, - "node_modules/@apollo/client/node_modules/@wry/equality": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.5.2.tgz", - "integrity": "sha512-oVMxbUXL48EV/C0/M7gLVsoK6qRHPS85x8zECofEZOVvxGmIPLA9o5Z27cc2PoAyZz1S2VoM2A7FLAnpfGlneA==", - "optional": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@apollo/client/node_modules/symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", - "optional": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/@apollo/client/node_modules/ts-invariant": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.9.3.tgz", - "integrity": "sha512-HinBlTbFslQI0OHP07JLsSXPibSegec6r9ai5xxq/qHYCsIQbzpymLpDhAUsnXcSrDEcd0L62L8vsOEdzM0qlA==", - "optional": true, - "dependencies": { - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@apollo/client/node_modules/zen-observable-ts": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-1.1.0.tgz", - "integrity": "sha512-1h4zlLSqI2cRLPJUHJFL8bCWHhkpuXkF+dbGkRaWjgDIG26DmzyshUMrdV/rL3UnR+mhaX4fRq8LPouq0MYYIA==", - "optional": true, - "dependencies": { - "@types/zen-observable": "0.8.3", - "zen-observable": "0.8.15" - } - }, - "node_modules/@apollo/protobufjs": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.2.tgz", - "integrity": "sha512-vF+zxhPiLtkwxONs6YanSt1EpwpGilThpneExUN5K3tCymuxNnVq2yojTvnpRjv2QfsEIt/n7ozPIIzBLwGIDQ==", - "hasInstallScript": true, - "optional": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.0", - "@types/node": "^10.1.0", - "long": "^4.0.0" - }, - "bin": { - "apollo-pbjs": "bin/pbjs", - "apollo-pbts": "bin/pbts" - } - }, - "node_modules/@apollo/protobufjs/node_modules/@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", - "optional": true - }, - "node_modules/@apollographql/apollo-tools": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.5.1.tgz", - "integrity": "sha512-ZII+/xUFfb9ezDU2gad114+zScxVFMVlZ91f8fGApMzlS1kkqoyLnC4AJaQ1Ya/X+b63I20B4Gd+eCL8QuB4sA==", - "optional": true, - "engines": { - "node": ">=8", - "npm": ">=6" - } - }, - "node_modules/@apollographql/graphql-playground-html": { - "version": "1.6.27", - "resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.27.tgz", - "integrity": "sha512-tea2LweZvn6y6xFV11K0KC8ETjmm52mQrW+ezgB2O/aTQf8JGyFmMcRPFgUaQZeHbWdm8iisDC6EjOKsXu0nfw==", - "optional": true, - "dependencies": { - "xss": "^1.0.8" - } - }, - "node_modules/@apollographql/graphql-upload-8-fork": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/@apollographql/graphql-upload-8-fork/-/graphql-upload-8-fork-8.1.3.tgz", - "integrity": "sha512-ssOPUT7euLqDXcdVv3Qs4LoL4BPtfermW1IOouaqEmj36TpHYDmYDIbKoSQxikd9vtMumFnP87OybH7sC9fJ6g==", - "optional": true, - "dependencies": { - "@types/express": "*", - "@types/fs-capacitor": "*", - "@types/koa": "*", - "busboy": "^0.3.1", - "fs-capacitor": "^2.0.4", - "http-errors": "^1.7.3", - "object-path": "^0.11.4" - }, - "engines": { - "node": ">=8.5" - }, - "peerDependencies": { - "graphql": "0.13.1 - 15" - } - }, - "node_modules/@apollographql/graphql-upload-8-fork/node_modules/http-errors": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.0.tgz", - "integrity": "sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A==", - "optional": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@apollographql/graphql-upload-8-fork/node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "optional": true - }, - "node_modules/@ardatan/aggregate-error": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/@ardatan/aggregate-error/-/aggregate-error-0.0.6.tgz", - "integrity": "sha512-vyrkEHG1jrukmzTPtyWB4NLPauUw5bQeg4uhn8f+1SSynmrOcyvlb1GKQjjgoBzElLdfXCRYX8UnBlhklOHYRQ==", - "optional": true, - "dependencies": { - "tslib": "~2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@ardatan/aggregate-error/node_modules/tslib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", - "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", - "optional": true - }, - "node_modules/@babel/code-frame": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", - "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "devOptional": true, - "dependencies": { - "@babel/highlight": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", - "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", - "devOptional": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.15.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz", - "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==", - "devOptional": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-module-transforms": "^7.15.4", - "@babel/helpers": "^7.15.4", - "@babel/parser": "^7.15.5", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/core/node_modules/@babel/parser": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.6.tgz", - "integrity": "sha512-S/TSCcsRuCkmpUuoWijua0Snt+f3ewU/8spLo+4AXJCZfT0bVCzLD5MuOKdrx0mlAptbKzn5AdgEIIKXxXkz9Q==", - "devOptional": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/core/node_modules/@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "devOptional": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core/node_modules/@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "devOptional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core/node_modules/json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "devOptional": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "devOptional": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/core/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "devOptional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@babel/generator": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz", - "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==", - "devOptional": true, - "dependencies": { - "@babel/types": "^7.15.4", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator/node_modules/@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "devOptional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/generator/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "devOptional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.15.4.tgz", - "integrity": "sha512-QwrtdNvUNsPCj2lfNQacsGSQvGX8ee1ttrBrcozUP2Sv/jylewBP/8QFe6ZkBsC8T/GYWonNAWJV4aRR9AL2DA==", - "optional": true, - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure/node_modules/@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "optional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", - "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", - "devOptional": true, - "dependencies": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-validator-option": "^7.14.5", - "browserslist": "^4.16.6", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "devOptional": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.15.4.tgz", - "integrity": "sha512-7ZmzFi+DwJx6A7mHRwbuucEYpyBwmh2Ca0RvI6z2+WLZYCqV0JOaLb+u0zbtmDicebgKBZgqbYfLaKNqSgv5Pw==", - "optional": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.2.3.tgz", - "integrity": "sha512-RH3QDAfRMzj7+0Nqu5oqgO5q9mFtQEVvCRsi8qCEfzLR9p2BHfn5FzhSB2oj1fF7I2+DcTORkYaQ6aTR9Cofew==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/parser": { - "version": "7.15.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.7.tgz", - "integrity": "sha512-rycZXvQ+xS9QyIcJ9HXeDWf1uxqlbVFAUq0Rq0dbc50Zb/+wUe/ehyfzGfm9KZZF0kBejYgxltBXocP+gKdL2g==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", - "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", - "devOptional": true, - "dependencies": { - "@babel/helper-get-function-arity": "^7.15.4", - "@babel/template": "^7.15.4", - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name/node_modules/@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "devOptional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-get-function-arity": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", - "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", - "devOptional": true, - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-get-function-arity/node_modules/@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "devOptional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", - "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", - "devOptional": true, - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables/node_modules/@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "devOptional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", - "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", - "devOptional": true, - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions/node_modules/@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "devOptional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", - "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", - "devOptional": true, - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports/node_modules/@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "devOptional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz", - "integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==", - "devOptional": true, - "dependencies": { - "@babel/helper-module-imports": "^7.15.4", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-simple-access": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/helper-validator-identifier": "^7.14.9", - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/parser": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.6.tgz", - "integrity": "sha512-S/TSCcsRuCkmpUuoWijua0Snt+f3ewU/8spLo+4AXJCZfT0bVCzLD5MuOKdrx0mlAptbKzn5AdgEIIKXxXkz9Q==", - "devOptional": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "devOptional": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms/node_modules/@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "devOptional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", - "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", - "devOptional": true, - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression/node_modules/@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "devOptional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", - "devOptional": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", - "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", - "devOptional": true, - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/parser": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.6.tgz", - "integrity": "sha512-S/TSCcsRuCkmpUuoWijua0Snt+f3ewU/8spLo+4AXJCZfT0bVCzLD5MuOKdrx0mlAptbKzn5AdgEIIKXxXkz9Q==", - "devOptional": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "devOptional": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers/node_modules/@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "devOptional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", - "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", - "devOptional": true, - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-simple-access/node_modules/@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "devOptional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.15.4.tgz", - "integrity": "sha512-BMRLsdh+D1/aap19TycS4eD1qELGrCBJwzaY9IE8LrpJtJb+H7rQkPIdsfgnMtLBA6DJls7X9z93Z4U8h7xw0A==", - "optional": true, - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers/node_modules/@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "optional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", - "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", - "devOptional": true, - "dependencies": { - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration/node_modules/@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "devOptional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.14.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", - "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", - "devOptional": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", - "devOptional": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", - "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", - "devOptional": true, - "dependencies": { - "@babel/template": "^7.15.4", - "@babel/traverse": "^7.15.4", - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers/node_modules/@babel/parser": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.6.tgz", - "integrity": "sha512-S/TSCcsRuCkmpUuoWijua0Snt+f3ewU/8spLo+4AXJCZfT0bVCzLD5MuOKdrx0mlAptbKzn5AdgEIIKXxXkz9Q==", - "devOptional": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/helpers/node_modules/@babel/traverse": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", - "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "devOptional": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/generator": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-hoist-variables": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers/node_modules/@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "devOptional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "devOptional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.12.16", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.16.tgz", - "integrity": "sha512-c/+u9cqV6F0+4Hpq01jnJO+GLp2DdT63ppz9Xa+6cHaajM9VFzK/iDXiKK65YtpeVwu+ctfS6iqlMqRgQRzeCw==", - "optional": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz", - "integrity": "sha512-q/PLpv5Ko4dVc1LYMpCY7RVAAO4uk55qPwrIuJ5QJ8c6cVuAmhu7I/49JOppXL6gXf7ZHzpRVEUZdYoPLM04Gg==", - "optional": true, - "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.15.6.tgz", - "integrity": "sha512-qtOHo7A1Vt+O23qEAX+GdBpqaIuD3i9VRrWgCJeq7WO6H2d14EK3q11urj5Te2MAeK97nMiIdRpwd/ST4JFbNg==", - "optional": true, - "dependencies": { - "@babel/compat-data": "^7.15.0", - "@babel/helper-compilation-targets": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "optional": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-flow": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.14.5.tgz", - "integrity": "sha512-9WK5ZwKCdWHxVuU13XNT6X73FGmutAXeor5lGFq6qhOFtMFUF4jkbijuyUdZZlpYq6E2hZeZf/u3959X9wsv0Q==", - "optional": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz", - "integrity": "sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==", - "optional": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "optional": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.14.5.tgz", - "integrity": "sha512-KOnO0l4+tD5IfOdi4x8C1XmEIRWUjNRV8wc6K2vz/3e8yAOoZZvsRXRRIF/yo/MAOFb4QjtAw9xSxMXbSMRy8A==", - "optional": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz", - "integrity": "sha512-dtqWqdWZ5NqBX3KzsVCWfQI3A53Ft5pWFCT2eCVUftWZgjc5DpDponbIF1+c+7cSGk2wN0YK7HGL/ezfRbpKBQ==", - "optional": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.15.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.15.3.tgz", - "integrity": "sha512-nBAzfZwZb4DkaGtOes1Up1nOAp9TDRRFw4XBzBBSG9QK7KVFmYzgj9o9sbPv7TX5ofL4Auq4wZnxCoPnI/lz2Q==", - "optional": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.15.4.tgz", - "integrity": "sha512-Yjvhex8GzBmmPQUvpXRPWQ9WnxXgAFuZSrqOK/eJlOGIXwvv8H3UEdUigl1gb/bnjTrln+e8bkZUYCBt/xYlBg==", - "optional": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.15.4", - "@babel/helper-function-name": "^7.15.4", - "@babel/helper-optimise-call-expression": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.15.4", - "@babel/helper-split-export-declaration": "^7.15.4", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz", - "integrity": "sha512-pWM+E4283UxaVzLb8UBXv4EIxMovU4zxT1OPnpHJcmnvyY9QbPPTKZfEj31EUvG3/EQRbYAGaYEUZ4yWOBC2xg==", - "optional": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.14.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz", - "integrity": "sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw==", - "optional": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-flow-strip-types": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.14.5.tgz", - "integrity": "sha512-KhcolBKfXbvjwI3TV7r7TkYm8oNXHNBqGOy6JDVwtecFaRoKYsUUqJdS10q0YDKW1c6aZQgO+Ys3LfGkox8pXA==", - "optional": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-flow": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.15.4.tgz", - "integrity": "sha512-DRTY9fA751AFBDh2oxydvVm4SYevs5ILTWLs6xKXps4Re/KG5nfUkr+TdHCrRWB8C69TlzVgA9b3RmGWmgN9LA==", - "optional": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz", - "integrity": "sha512-vbO6kv0fIzZ1GpmGQuvbwwm+O4Cbm2NrPzwlup9+/3fdkuzo1YqOZcXw26+YUJB84Ja7j9yURWposEHLYwxUfQ==", - "optional": true, - "dependencies": { - "@babel/helper-function-name": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz", - "integrity": "sha512-ql33+epql2F49bi8aHXxvLURHkxJbSmMKl9J5yHqg4PLtdE6Uc48CH1GS6TQvZ86eoB/ApZXwm7jlA+B3kra7A==", - "optional": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz", - "integrity": "sha512-WkNXxH1VXVTKarWFqmso83xl+2V3Eo28YY5utIkbsmXoItO8Q3aZxN4BTS2k0hz9dGUloHK26mJMyQEYfkn/+Q==", - "optional": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.15.4.tgz", - "integrity": "sha512-qg4DPhwG8hKp4BbVDvX1s8cohM8a6Bvptu4l6Iingq5rW+yRUAhe/YRup/YcW2zCOlrysEWVhftIcKzrEZv3sA==", - "optional": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.15.4", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-simple-access": "^7.15.4", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz", - "integrity": "sha512-MKfOBWzK0pZIrav9z/hkRqIk/2bTv9qvxHzPQc12RcVkMOzpIKnFCNYJip00ssKWYkd8Sf5g0Wr7pqJ+cmtuFg==", - "optional": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-replace-supers": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.15.4.tgz", - "integrity": "sha512-9WB/GUTO6lvJU3XQsSr6J/WKvBC2hcs4Pew8YxZagi6GkTdniyqp8On5kqdK8MN0LMeu0mGbhPN+O049NV/9FQ==", - "optional": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz", - "integrity": "sha512-r1uilDthkgXW8Z1vJz2dKYLV1tuw2xsbrp3MrZmD99Wh9vsfKoob+JTgri5VUb/JqyKRXotlOtwgu4stIYCmnw==", - "optional": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.15.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.15.1.tgz", - "integrity": "sha512-yQZ/i/pUCJAHI/LbtZr413S3VT26qNrEm0M5RRxQJA947/YNYwbZbBaXGDrq6CG5QsZycI1VIP6d7pQaBfP+8Q==", - "optional": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.14.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.9.tgz", - "integrity": "sha512-30PeETvS+AeD1f58i1OVyoDlVYQhap/K20ZrMjLmmzmC2AYR/G43D4sdJAaDAqCD3MYpSWbmrz3kES158QSLjw==", - "optional": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.14.5", - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/plugin-syntax-jsx": "^7.14.5", - "@babel/types": "^7.14.9" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-react-jsx/node_modules/@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "optional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/plugin-transform-runtime": { - "version": "7.15.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.15.0.tgz", - "integrity": "sha512-sfHYkLGjhzWTq6xsuQ01oEsUYjkHRux9fW1iUA68dC7Qd8BS1Unq4aZ8itmQp95zUzIcyR2EbNMTzAicFj+guw==", - "dev": true, - "dependencies": { - "@babel/helper-module-imports": "^7.14.5", - "@babel/helper-plugin-utils": "^7.14.5", - "babel-plugin-polyfill-corejs2": "^0.2.2", - "babel-plugin-polyfill-corejs3": "^0.2.2", - "babel-plugin-polyfill-regenerator": "^0.2.2", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz", - "integrity": "sha512-xLucks6T1VmGsTB+GWK5Pl9Jl5+nRXD1uoFdA5TSO6xtiNjtXTjKkmPdFXVLGlK5A2/or/wQMKfmQ2Y0XJfn5g==", - "optional": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.14.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.6.tgz", - "integrity": "sha512-Zr0x0YroFJku7n7+/HH3A2eIrGMjbmAIbJSVv0IZ+t3U2WUQUA64S/oeied2e+MaGSjmt4alzBCsK9E8gh+fag==", - "optional": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz", - "integrity": "sha512-22btZeURqiepOfuy/VkFr+zStqlujWaarpMErvay7goJS6BWwdd6BY9zQyDLDa4x2S3VugxFb162IZ4m/S/+Gg==", - "optional": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz", - "integrity": "sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==", - "dependencies": { - "regenerator-runtime": "^0.13.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template": { - "version": "7.15.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", - "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", - "devOptional": true, - "dependencies": { - "@babel/code-frame": "^7.14.5", - "@babel/parser": "^7.15.4", - "@babel/types": "^7.15.4" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template/node_modules/@babel/parser": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.6.tgz", - "integrity": "sha512-S/TSCcsRuCkmpUuoWijua0Snt+f3ewU/8spLo+4AXJCZfT0bVCzLD5MuOKdrx0mlAptbKzn5AdgEIIKXxXkz9Q==", - "devOptional": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/template/node_modules/@babel/types": { - "version": "7.15.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", - "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "devOptional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.14.9", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.13.tgz", - "integrity": "sha512-3Zb4w7eE/OslI0fTp8c7b286/cQps3+vdLW3UcwC8VSJC6GbKn55aeVVu2QJNuCDoeKyptLOFrPq8WqZZBodyA==", - "optional": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" - } - }, - "node_modules/@babel/types": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.13.tgz", - "integrity": "sha512-oKrdZTld2im1z8bDwTOQvUbxKwE+854zc16qWZQlcTqMN00pWxHQ4ZeOq0yDMnisOpRykH2/5Qqcrk/OlbAjiQ==", - "optional": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "node_modules/@consento/sync-randombytes": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@consento/sync-randombytes/-/sync-randombytes-1.0.5.tgz", - "integrity": "sha512-mPJ2XvrTLQGEdhleDuSIkWtVWnvmhREOC1FjorV1nlK49t/52Z9X1d618gTj6nlQghRLiYvcd8oL4vZ2YZuDIQ==", - "optional": true, - "dependencies": { - "buffer": "^5.4.3", - "seedrandom": "^3.0.5" - } - }, - "node_modules/@ensdomains/address-encoder": { - "version": "0.1.9", - "resolved": "https://registry.npmjs.org/@ensdomains/address-encoder/-/address-encoder-0.1.9.tgz", - "integrity": "sha512-E2d2gP4uxJQnDu2Kfg1tHNspefzbLT8Tyjrm5sEuim32UkU2sm5xL4VXtgc2X33fmPEw9+jUMpGs4veMbf+PYg==", - "dependencies": { - "bech32": "^1.1.3", - "blakejs": "^1.1.0", - "bn.js": "^4.11.8", - "bs58": "^4.0.1", - "crypto-addr-codec": "^0.1.7", - "nano-base32": "^1.0.1", - "ripemd160": "^2.0.2" - } - }, - "node_modules/@ensdomains/address-encoder/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/@ensdomains/ens": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@ensdomains/ens/-/ens-0.4.3.tgz", - "integrity": "sha512-btC+fGze//ml8SMNCx5DgwM8+kG2t+qDCZrqlL/2+PV4CNxnRIpR3egZ49D9FqS52PFoYLmz6MaQfl7AO3pUMA==", - "deprecated": "Please use @ensdomains/ens-contracts", - "dependencies": { - "bluebird": "^3.5.2", - "eth-ens-namehash": "^2.0.8", - "ethereumjs-testrpc": "^6.0.3", - "ganache-cli": "^6.1.0", - "solc": "^0.4.20", - "testrpc": "0.0.1", - "web3-utils": "^1.0.0-beta.31" - } - }, - "node_modules/@ensdomains/ensjs": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@ensdomains/ensjs/-/ensjs-2.0.1.tgz", - "integrity": "sha512-gZLntzE1xqPNkPvaHdJlV5DXHms8JbHBwrXc2xNrL1AylERK01Lj/txCCZyVQqFd3TvUO1laDbfUv8VII0qrjg==", - "dependencies": { - "@babel/runtime": "^7.4.4", - "@ensdomains/address-encoder": "^0.1.7", - "@ensdomains/ens": "0.4.3", - "@ensdomains/resolver": "0.2.4", - "content-hash": "^2.5.2", - "eth-ens-namehash": "^2.0.8", - "ethers": "^5.0.13", - "js-sha3": "^0.8.0" - } - }, - "node_modules/@ensdomains/ensjs/node_modules/@ethersproject/abi": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.4.1.tgz", - "integrity": "sha512-9mhbjUk76BiSluiiW4BaYyI58KSbDMMQpCLdsAR+RsT2GyATiNYxVv+pGWRrekmsIdY3I+hOqsYQSTkc8L/mcg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/address": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/constants": "^5.4.0", - "@ethersproject/hash": "^5.4.0", - "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/strings": "^5.4.0" - } - }, - "node_modules/@ensdomains/ensjs/node_modules/ethers": { - "version": "5.4.6", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.4.6.tgz", - "integrity": "sha512-F7LXARyB/Px3AQC6/QKedWZ8eqCkgOLORqL4B/F0Mag/K+qJSFGqsR36EaOZ6fKg3ZonI+pdbhb4A8Knt/43jQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abi": "5.4.1", - "@ethersproject/abstract-provider": "5.4.1", - "@ethersproject/abstract-signer": "5.4.1", - "@ethersproject/address": "5.4.0", - "@ethersproject/base64": "5.4.0", - "@ethersproject/basex": "5.4.0", - "@ethersproject/bignumber": "5.4.1", - "@ethersproject/bytes": "5.4.0", - "@ethersproject/constants": "5.4.0", - "@ethersproject/contracts": "5.4.1", - "@ethersproject/hash": "5.4.0", - "@ethersproject/hdnode": "5.4.0", - "@ethersproject/json-wallets": "5.4.0", - "@ethersproject/keccak256": "5.4.0", - "@ethersproject/logger": "5.4.1", - "@ethersproject/networks": "5.4.2", - "@ethersproject/pbkdf2": "5.4.0", - "@ethersproject/properties": "5.4.1", - "@ethersproject/providers": "5.4.5", - "@ethersproject/random": "5.4.0", - "@ethersproject/rlp": "5.4.0", - "@ethersproject/sha2": "5.4.0", - "@ethersproject/signing-key": "5.4.0", - "@ethersproject/solidity": "5.4.0", - "@ethersproject/strings": "5.4.0", - "@ethersproject/transactions": "5.4.0", - "@ethersproject/units": "5.4.0", - "@ethersproject/wallet": "5.4.0", - "@ethersproject/web": "5.4.0", - "@ethersproject/wordlists": "5.4.0" - } - }, - "node_modules/@ensdomains/ensjs/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==" - }, - "node_modules/@ensdomains/resolver": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@ensdomains/resolver/-/resolver-0.2.4.tgz", - "integrity": "sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA==", - "deprecated": "Please use @ensdomains/ens-contracts" - }, - "node_modules/@ethereumjs/common": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.4.0.tgz", - "integrity": "sha512-UdkhFWzWcJCZVsj1O/H8/oqj/0RVYjLc1OhPjBrQdALAkQHpCp8xXI4WLnuGTADqTdJZww0NtgwG+TRPkXt27w==", - "dependencies": { - "crc-32": "^1.2.0", - "ethereumjs-util": "^7.1.0" - } - }, - "node_modules/@ethereumjs/tx": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.0.tgz", - "integrity": "sha512-yTwEj2lVzSMgE6Hjw9Oa1DZks/nKTWM8Wn4ykDNapBPua2f4nXO3qKnni86O6lgDj5fVNRqbDsD0yy7/XNGDEA==", - "dependencies": { - "@ethereumjs/common": "^2.4.0", - "ethereumjs-util": "^7.1.0" - } - }, - "node_modules/@ethersproject/abi": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.0.7.tgz", - "integrity": "sha512-Cqktk+hSIckwP/W8O47Eef60VwmoSC/L3lY0+dIBhQPCNn9E4V7rwmm2aFrNRRDJfFlGuZ1khkQUOc3oBX+niw==", - "dependencies": { - "@ethersproject/address": "^5.0.4", - "@ethersproject/bignumber": "^5.0.7", - "@ethersproject/bytes": "^5.0.4", - "@ethersproject/constants": "^5.0.4", - "@ethersproject/hash": "^5.0.4", - "@ethersproject/keccak256": "^5.0.3", - "@ethersproject/logger": "^5.0.5", - "@ethersproject/properties": "^5.0.3", - "@ethersproject/strings": "^5.0.4" - } - }, - "node_modules/@ethersproject/abstract-provider": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.4.1.tgz", - "integrity": "sha512-3EedfKI3LVpjSKgAxoUaI+gB27frKsxzm+r21w9G60Ugk+3wVLQwhi1LsEJAKNV7WoZc8CIpNrATlL1QFABjtQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/networks": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/transactions": "^5.4.0", - "@ethersproject/web": "^5.4.0" - } - }, - "node_modules/@ethersproject/abstract-signer": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.4.1.tgz", - "integrity": "sha512-SkkFL5HVq1k4/25dM+NWP9MILgohJCgGv5xT5AcRruGz4ILpfHeBtO/y6j+Z3UN/PAjDeb4P7E51Yh8wcGNLGA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-provider": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0" - } - }, - "node_modules/@ethersproject/address": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.4.0.tgz", - "integrity": "sha512-SD0VgOEkcACEG/C6xavlU1Hy3m5DGSXW3CUHkaaEHbAPPsgi0coP5oNPsxau8eTlZOk/bpa/hKeCNoK5IzVI2Q==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/rlp": "^5.4.0" - } - }, - "node_modules/@ethersproject/base64": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.4.0.tgz", - "integrity": "sha512-CjQw6E17QDSSC5jiM9YpF7N1aSCHmYGMt9bWD8PWv6YPMxjsys2/Q8xLrROKI3IWJ7sFfZ8B3flKDTM5wlWuZQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.4.0" - } - }, - "node_modules/@ethersproject/basex": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.4.0.tgz", - "integrity": "sha512-J07+QCVJ7np2bcpxydFVf/CuYo9mZ7T73Pe7KQY4c1lRlrixMeblauMxHXD0MPwFmUHZIILDNViVkykFBZylbg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/properties": "^5.4.0" - } - }, - "node_modules/@ethersproject/bignumber": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.4.1.tgz", - "integrity": "sha512-fJhdxqoQNuDOk6epfM7yD6J8Pol4NUCy1vkaGAkuujZm0+lNow//MKu1hLhRiYV4BsOHyBv5/lsTjF+7hWwhJg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "bn.js": "^4.11.9" - } - }, - "node_modules/@ethersproject/bignumber/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/@ethersproject/bytes": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.4.0.tgz", - "integrity": "sha512-H60ceqgTHbhzOj4uRc/83SCN9d+BSUnOkrr2intevqdtEMO1JFVZ1XL84OEZV+QjV36OaZYxtnt4lGmxcGsPfA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/logger": "^5.4.0" - } - }, - "node_modules/@ethersproject/constants": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.4.0.tgz", - "integrity": "sha512-tzjn6S7sj9+DIIeKTJLjK9WGN2Tj0P++Z8ONEIlZjyoTkBuODN+0VfhAyYksKi43l1Sx9tX2VlFfzjfmr5Wl3Q==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.4.0" - } - }, - "node_modules/@ethersproject/contracts": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.4.1.tgz", - "integrity": "sha512-m+z2ZgPy4pyR15Je//dUaymRUZq5MtDajF6GwFbGAVmKz/RF+DNIPwF0k5qEcL3wPGVqUjFg2/krlCRVTU4T5w==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abi": "^5.4.0", - "@ethersproject/abstract-provider": "^5.4.0", - "@ethersproject/abstract-signer": "^5.4.0", - "@ethersproject/address": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/constants": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/transactions": "^5.4.0" - } - }, - "node_modules/@ethersproject/contracts/node_modules/@ethersproject/abi": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.4.1.tgz", - "integrity": "sha512-9mhbjUk76BiSluiiW4BaYyI58KSbDMMQpCLdsAR+RsT2GyATiNYxVv+pGWRrekmsIdY3I+hOqsYQSTkc8L/mcg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/address": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/constants": "^5.4.0", - "@ethersproject/hash": "^5.4.0", - "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/strings": "^5.4.0" - } - }, - "node_modules/@ethersproject/hash": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.4.0.tgz", - "integrity": "sha512-xymAM9tmikKgbktOCjW60Z5sdouiIIurkZUr9oW5NOex5uwxrbsYG09kb5bMcNjlVeJD3yPivTNzViIs1GCbqA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-signer": "^5.4.0", - "@ethersproject/address": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/strings": "^5.4.0" - } - }, - "node_modules/@ethersproject/hdnode": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.4.0.tgz", - "integrity": "sha512-pKxdS0KAaeVGfZPp1KOiDLB0jba11tG6OP1u11QnYfb7pXn6IZx0xceqWRr6ygke8+Kw74IpOoSi7/DwANhy8Q==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-signer": "^5.4.0", - "@ethersproject/basex": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/pbkdf2": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/sha2": "^5.4.0", - "@ethersproject/signing-key": "^5.4.0", - "@ethersproject/strings": "^5.4.0", - "@ethersproject/transactions": "^5.4.0", - "@ethersproject/wordlists": "^5.4.0" - } - }, - "node_modules/@ethersproject/json-wallets": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.4.0.tgz", - "integrity": "sha512-igWcu3fx4aiczrzEHwG1xJZo9l1cFfQOWzTqwRw/xcvxTk58q4f9M7cjh51EKphMHvrJtcezJ1gf1q1AUOfEQQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-signer": "^5.4.0", - "@ethersproject/address": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/hdnode": "^5.4.0", - "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/pbkdf2": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/random": "^5.4.0", - "@ethersproject/strings": "^5.4.0", - "@ethersproject/transactions": "^5.4.0", - "aes-js": "3.0.0", - "scrypt-js": "3.0.1" - } - }, - "node_modules/@ethersproject/json-wallets/node_modules/scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" - }, - "node_modules/@ethersproject/keccak256": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.4.0.tgz", - "integrity": "sha512-FBI1plWet+dPUvAzPAeHzRKiPpETQzqSUWR1wXJGHVWi4i8bOSrpC3NwpkPjgeXG7MnugVc1B42VbfnQikyC/A==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.4.0", - "js-sha3": "0.5.7" - } - }, - "node_modules/@ethersproject/logger": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.4.1.tgz", - "integrity": "sha512-DZ+bRinnYLPw1yAC64oRl0QyVZj43QeHIhVKfD/+YwSz4wsv1pfwb5SOFjz+r710YEWzU6LrhuSjpSO+6PeE4A==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ] - }, - "node_modules/@ethersproject/networks": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.4.2.tgz", - "integrity": "sha512-eekOhvJyBnuibfJnhtK46b8HimBc5+4gqpvd1/H9LEl7Q7/qhsIhM81dI9Fcnjpk3jB1aTy6bj0hz3cifhNeYw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/logger": "^5.4.0" - } - }, - "node_modules/@ethersproject/pbkdf2": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.4.0.tgz", - "integrity": "sha512-x94aIv6tiA04g6BnazZSLoRXqyusawRyZWlUhKip2jvoLpzJuLb//KtMM6PEovE47pMbW+Qe1uw+68ameJjB7g==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/sha2": "^5.4.0" - } - }, - "node_modules/@ethersproject/properties": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.4.1.tgz", - "integrity": "sha512-cyCGlF8wWlIZyizsj2PpbJ9I7rIlUAfnHYwy/T90pdkSn/NFTa5YWZx2wTJBe9V7dD65dcrrEMisCRUJiq6n3w==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/logger": "^5.4.0" - } - }, - "node_modules/@ethersproject/providers": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.4.5.tgz", - "integrity": "sha512-1GkrvkiAw3Fj28cwi1Sqm8ED1RtERtpdXmRfwIBGmqBSN5MoeRUHuwHPppMtbPayPgpFcvD7/Gdc9doO5fGYgw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-provider": "^5.4.0", - "@ethersproject/abstract-signer": "^5.4.0", - "@ethersproject/address": "^5.4.0", - "@ethersproject/basex": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/constants": "^5.4.0", - "@ethersproject/hash": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/networks": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/random": "^5.4.0", - "@ethersproject/rlp": "^5.4.0", - "@ethersproject/sha2": "^5.4.0", - "@ethersproject/strings": "^5.4.0", - "@ethersproject/transactions": "^5.4.0", - "@ethersproject/web": "^5.4.0", - "bech32": "1.1.4", - "ws": "7.4.6" - } - }, - "node_modules/@ethersproject/providers/node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "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/@ethersproject/random": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.4.0.tgz", - "integrity": "sha512-pnpWNQlf0VAZDEOVp1rsYQosmv2o0ITS/PecNw+mS2/btF8eYdspkN0vIXrCMtkX09EAh9bdk8GoXmFXM1eAKw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0" - } - }, - "node_modules/@ethersproject/rlp": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.4.0.tgz", - "integrity": "sha512-0I7MZKfi+T5+G8atId9QaQKHRvvasM/kqLyAH4XxBCBchAooH2EX5rL9kYZWwcm3awYV+XC7VF6nLhfeQFKVPg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0" - } - }, - "node_modules/@ethersproject/sha2": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.4.0.tgz", - "integrity": "sha512-siheo36r1WD7Cy+bDdE1BJ8y0bDtqXCOxRMzPa4bV1TGt/eTUUt03BHoJNB6reWJD8A30E/pdJ8WFkq+/uz4Gg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "hash.js": "1.1.7" - } - }, - "node_modules/@ethersproject/sha2/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==", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/@ethersproject/signing-key": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.4.0.tgz", - "integrity": "sha512-q8POUeywx6AKg2/jX9qBYZIAmKSB4ubGXdQ88l40hmATj29JnG5pp331nAWwwxPn2Qao4JpWHNZsQN+bPiSW9A==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "bn.js": "^4.11.9", - "elliptic": "6.5.4", - "hash.js": "1.1.7" - } - }, - "node_modules/@ethersproject/signing-key/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/@ethersproject/signing-key/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==", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/@ethersproject/solidity": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.4.0.tgz", - "integrity": "sha512-XFQTZ7wFSHOhHcV1DpcWj7VXECEiSrBuv7JErJvB9Uo+KfCdc3QtUZV+Vjh/AAaYgezUEKbCtE6Khjm44seevQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/sha2": "^5.4.0", - "@ethersproject/strings": "^5.4.0" - } - }, - "node_modules/@ethersproject/strings": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.4.0.tgz", - "integrity": "sha512-k/9DkH5UGDhv7aReXLluFG5ExurwtIpUfnDNhQA29w896Dw3i4uDTz01Quaptbks1Uj9kI8wo9tmW73wcIEaWA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/constants": "^5.4.0", - "@ethersproject/logger": "^5.4.0" - } - }, - "node_modules/@ethersproject/transactions": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.4.0.tgz", - "integrity": "sha512-s3EjZZt7xa4BkLknJZ98QGoIza94rVjaEed0rzZ/jB9WrIuu/1+tjvYCWzVrystXtDswy7TPBeIepyXwSYa4WQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/address": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/constants": "^5.4.0", - "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/rlp": "^5.4.0", - "@ethersproject/signing-key": "^5.4.0" - } - }, - "node_modules/@ethersproject/units": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.4.0.tgz", - "integrity": "sha512-Z88krX40KCp+JqPCP5oPv5p750g+uU6gopDYRTBGcDvOASh6qhiEYCRatuM/suC4S2XW9Zz90QI35MfSrTIaFg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/constants": "^5.4.0", - "@ethersproject/logger": "^5.4.0" - } - }, - "node_modules/@ethersproject/wallet": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.4.0.tgz", - "integrity": "sha512-wU29majLjM6AjCjpat21mPPviG+EpK7wY1+jzKD0fg3ui5fgedf2zEu1RDgpfIMsfn8fJHJuzM4zXZ2+hSHaSQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-provider": "^5.4.0", - "@ethersproject/abstract-signer": "^5.4.0", - "@ethersproject/address": "^5.4.0", - "@ethersproject/bignumber": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/hash": "^5.4.0", - "@ethersproject/hdnode": "^5.4.0", - "@ethersproject/json-wallets": "^5.4.0", - "@ethersproject/keccak256": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/random": "^5.4.0", - "@ethersproject/signing-key": "^5.4.0", - "@ethersproject/transactions": "^5.4.0", - "@ethersproject/wordlists": "^5.4.0" - } - }, - "node_modules/@ethersproject/web": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.4.0.tgz", - "integrity": "sha512-1bUusGmcoRLYgMn6c1BLk1tOKUIFuTg8j+6N8lYlbMpDesnle+i3pGSagGNvwjaiLo4Y5gBibwctpPRmjrh4Og==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/base64": "^5.4.0", - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/strings": "^5.4.0" - } - }, - "node_modules/@ethersproject/wordlists": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.4.0.tgz", - "integrity": "sha512-FemEkf6a+EBKEPxlzeVgUaVSodU7G0Na89jqKjmWMlDB0tomoU8RlEMgUvXyqtrg8N4cwpLh8nyRnm1Nay1isA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.4.0", - "@ethersproject/hash": "^5.4.0", - "@ethersproject/logger": "^5.4.0", - "@ethersproject/properties": "^5.4.0", - "@ethersproject/strings": "^5.4.0" - } - }, - "node_modules/@graphql-tools/batch-delegate": { - "version": "6.2.6", - "resolved": "https://registry.npmjs.org/@graphql-tools/batch-delegate/-/batch-delegate-6.2.6.tgz", - "integrity": "sha512-QUoE9pQtkdNPFdJHSnBhZtUfr3M7pIRoXoMR+TG7DK2Y62ISKbT/bKtZEUU1/2v5uqd5WVIvw9dF8gHDSJAsSA==", - "optional": true, - "dependencies": { - "@graphql-tools/delegate": "^6.2.4", - "dataloader": "2.0.0", - "tslib": "~2.0.1" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/batch-delegate/node_modules/tslib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", - "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", - "optional": true - }, - "node_modules/@graphql-tools/batch-execute": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@graphql-tools/batch-execute/-/batch-execute-7.1.2.tgz", - "integrity": "sha512-IuR2SB2MnC2ztA/XeTMTfWcA0Wy7ZH5u+nDkDNLAdX+AaSyDnsQS35sCmHqG0VOGTl7rzoyBWLCKGwSJplgtwg==", - "optional": true, - "dependencies": { - "@graphql-tools/utils": "^7.7.0", - "dataloader": "2.0.0", - "tslib": "~2.2.0", - "value-or-promise": "1.0.6" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/batch-execute/node_modules/@graphql-tools/utils": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-7.10.0.tgz", - "integrity": "sha512-d334r6bo9mxdSqZW6zWboEnnOOFRrAPVQJ7LkU8/6grglrbcu6WhwCLzHb90E94JI3TD3ricC3YGbUqIi9Xg0w==", - "optional": true, - "dependencies": { - "@ardatan/aggregate-error": "0.0.6", - "camel-case": "4.1.2", - "tslib": "~2.2.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/batch-execute/node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "optional": true, - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/batch-execute/node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "optional": true, - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/batch-execute/node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "optional": true, - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/batch-execute/node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "optional": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/batch-execute/node_modules/tslib": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", - "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", - "optional": true - }, - "node_modules/@graphql-tools/batch-execute/node_modules/value-or-promise": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.6.tgz", - "integrity": "sha512-9r0wQsWD8z/BxPOvnwbPf05ZvFngXyouE9EKB+5GbYix+BYnAwrIChCUyFIinfbf2FL/U71z+CPpbnmTdxrwBg==", - "optional": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@graphql-tools/code-file-loader": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/code-file-loader/-/code-file-loader-6.3.1.tgz", - "integrity": "sha512-ZJimcm2ig+avgsEOWWVvAaxZrXXhiiSZyYYOJi0hk9wh5BxZcLUNKkTp6EFnZE/jmGUwuos3pIjUD3Hwi3Bwhg==", - "optional": true, - "dependencies": { - "@graphql-tools/graphql-tag-pluck": "^6.5.1", - "@graphql-tools/utils": "^7.0.0", - "tslib": "~2.1.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/code-file-loader/node_modules/@graphql-tools/utils": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-7.10.0.tgz", - "integrity": "sha512-d334r6bo9mxdSqZW6zWboEnnOOFRrAPVQJ7LkU8/6grglrbcu6WhwCLzHb90E94JI3TD3ricC3YGbUqIi9Xg0w==", - "optional": true, - "dependencies": { - "@ardatan/aggregate-error": "0.0.6", - "camel-case": "4.1.2", - "tslib": "~2.2.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/code-file-loader/node_modules/@graphql-tools/utils/node_modules/tslib": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", - "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", - "optional": true - }, - "node_modules/@graphql-tools/code-file-loader/node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "optional": true, - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/code-file-loader/node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "optional": true, - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/code-file-loader/node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "optional": true, - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/code-file-loader/node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "optional": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/code-file-loader/node_modules/tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", - "optional": true - }, - "node_modules/@graphql-tools/delegate": { - "version": "6.2.4", - "resolved": "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-6.2.4.tgz", - "integrity": "sha512-mXe6DfoWmq49kPcDrpKHgC2DSWcD5q0YCaHHoXYPAOlnLH8VMTY8BxcE8y/Do2eyg+GLcwAcrpffVszWMwqw0w==", - "optional": true, - "dependencies": { - "@ardatan/aggregate-error": "0.0.6", - "@graphql-tools/schema": "^6.2.4", - "@graphql-tools/utils": "^6.2.4", - "dataloader": "2.0.0", - "is-promise": "4.0.0", - "tslib": "~2.0.1" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/delegate/node_modules/tslib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", - "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", - "optional": true - }, - "node_modules/@graphql-tools/git-loader": { - "version": "6.2.6", - "resolved": "https://registry.npmjs.org/@graphql-tools/git-loader/-/git-loader-6.2.6.tgz", - "integrity": "sha512-ooQTt2CaG47vEYPP3CPD+nbA0F+FYQXfzrB1Y1ABN9K3d3O2RK3g8qwslzZaI8VJQthvKwt0A95ZeE4XxteYfw==", - "optional": true, - "dependencies": { - "@graphql-tools/graphql-tag-pluck": "^6.2.6", - "@graphql-tools/utils": "^7.0.0", - "tslib": "~2.1.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/git-loader/node_modules/@graphql-tools/utils": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-7.10.0.tgz", - "integrity": "sha512-d334r6bo9mxdSqZW6zWboEnnOOFRrAPVQJ7LkU8/6grglrbcu6WhwCLzHb90E94JI3TD3ricC3YGbUqIi9Xg0w==", - "optional": true, - "dependencies": { - "@ardatan/aggregate-error": "0.0.6", - "camel-case": "4.1.2", - "tslib": "~2.2.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/git-loader/node_modules/@graphql-tools/utils/node_modules/tslib": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", - "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", - "optional": true - }, - "node_modules/@graphql-tools/git-loader/node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "optional": true, - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/git-loader/node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "optional": true, - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/git-loader/node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "optional": true, - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/git-loader/node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "optional": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/git-loader/node_modules/tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", - "optional": true - }, - "node_modules/@graphql-tools/github-loader": { - "version": "6.2.5", - "resolved": "https://registry.npmjs.org/@graphql-tools/github-loader/-/github-loader-6.2.5.tgz", - "integrity": "sha512-DLuQmYeNNdPo8oWus8EePxWCfCAyUXPZ/p1PWqjrX/NGPyH2ZObdqtDAfRHztljt0F/qkBHbGHCEk2TKbRZTRw==", - "optional": true, - "dependencies": { - "@graphql-tools/graphql-tag-pluck": "^6.2.6", - "@graphql-tools/utils": "^7.0.0", - "cross-fetch": "3.0.6", - "tslib": "~2.0.1" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/github-loader/node_modules/@graphql-tools/utils": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-7.10.0.tgz", - "integrity": "sha512-d334r6bo9mxdSqZW6zWboEnnOOFRrAPVQJ7LkU8/6grglrbcu6WhwCLzHb90E94JI3TD3ricC3YGbUqIi9Xg0w==", - "optional": true, - "dependencies": { - "@ardatan/aggregate-error": "0.0.6", - "camel-case": "4.1.2", - "tslib": "~2.2.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/github-loader/node_modules/@graphql-tools/utils/node_modules/tslib": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", - "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", - "optional": true - }, - "node_modules/@graphql-tools/github-loader/node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "optional": true, - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/github-loader/node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "optional": true, - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/github-loader/node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "optional": true, - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/github-loader/node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "optional": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/github-loader/node_modules/tslib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", - "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", - "optional": true - }, - "node_modules/@graphql-tools/graphql-file-loader": { - "version": "6.2.7", - "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-file-loader/-/graphql-file-loader-6.2.7.tgz", - "integrity": "sha512-5k2SNz0W87tDcymhEMZMkd6/vs6QawDyjQXWtqkuLTBF3vxjxPD1I4dwHoxgWPIjjANhXybvulD7E+St/7s9TQ==", - "optional": true, - "dependencies": { - "@graphql-tools/import": "^6.2.6", - "@graphql-tools/utils": "^7.0.0", - "tslib": "~2.1.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/graphql-file-loader/node_modules/@graphql-tools/utils": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-7.10.0.tgz", - "integrity": "sha512-d334r6bo9mxdSqZW6zWboEnnOOFRrAPVQJ7LkU8/6grglrbcu6WhwCLzHb90E94JI3TD3ricC3YGbUqIi9Xg0w==", - "optional": true, - "dependencies": { - "@ardatan/aggregate-error": "0.0.6", - "camel-case": "4.1.2", - "tslib": "~2.2.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/graphql-file-loader/node_modules/@graphql-tools/utils/node_modules/tslib": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", - "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", - "optional": true - }, - "node_modules/@graphql-tools/graphql-file-loader/node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "optional": true, - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/graphql-file-loader/node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "optional": true, - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/graphql-file-loader/node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "optional": true, - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/graphql-file-loader/node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "optional": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/graphql-file-loader/node_modules/tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", - "optional": true - }, - "node_modules/@graphql-tools/graphql-tag-pluck": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-6.5.1.tgz", - "integrity": "sha512-7qkm82iFmcpb8M6/yRgzjShtW6Qu2OlCSZp8uatA3J0eMl87TxyJoUmL3M3UMMOSundAK8GmoyNVFUrueueV5Q==", - "optional": true, - "dependencies": { - "@babel/parser": "7.12.16", - "@babel/traverse": "7.12.13", - "@babel/types": "7.12.13", - "@graphql-tools/utils": "^7.0.0", - "tslib": "~2.1.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/graphql-tag-pluck/node_modules/@graphql-tools/utils": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-7.10.0.tgz", - "integrity": "sha512-d334r6bo9mxdSqZW6zWboEnnOOFRrAPVQJ7LkU8/6grglrbcu6WhwCLzHb90E94JI3TD3ricC3YGbUqIi9Xg0w==", - "optional": true, - "dependencies": { - "@ardatan/aggregate-error": "0.0.6", - "camel-case": "4.1.2", - "tslib": "~2.2.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/graphql-tag-pluck/node_modules/@graphql-tools/utils/node_modules/tslib": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", - "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", - "optional": true - }, - "node_modules/@graphql-tools/graphql-tag-pluck/node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "optional": true, - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/graphql-tag-pluck/node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "optional": true, - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/graphql-tag-pluck/node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "optional": true, - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/graphql-tag-pluck/node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "optional": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/graphql-tag-pluck/node_modules/tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", - "optional": true - }, - "node_modules/@graphql-tools/import": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/import/-/import-6.4.0.tgz", - "integrity": "sha512-jfE01oPcmc4vzAcYLs6xT7XC4jJWrM1HNtIwc7HyyHTxrC3nf36XrF3txEZ2l20GT53+OWnMgYx1HhauLGdJmA==", - "optional": true, - "dependencies": { - "resolve-from": "5.0.0", - "tslib": "~2.3.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/@graphql-tools/json-file-loader": { - "version": "6.2.6", - "resolved": "https://registry.npmjs.org/@graphql-tools/json-file-loader/-/json-file-loader-6.2.6.tgz", - "integrity": "sha512-CnfwBSY5926zyb6fkDBHnlTblHnHI4hoBALFYXnrg0Ev4yWU8B04DZl/pBRUc459VNgO2x8/mxGIZj2hPJG1EA==", - "optional": true, - "dependencies": { - "@graphql-tools/utils": "^7.0.0", - "tslib": "~2.0.1" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/json-file-loader/node_modules/@graphql-tools/utils": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-7.10.0.tgz", - "integrity": "sha512-d334r6bo9mxdSqZW6zWboEnnOOFRrAPVQJ7LkU8/6grglrbcu6WhwCLzHb90E94JI3TD3ricC3YGbUqIi9Xg0w==", - "optional": true, - "dependencies": { - "@ardatan/aggregate-error": "0.0.6", - "camel-case": "4.1.2", - "tslib": "~2.2.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/json-file-loader/node_modules/@graphql-tools/utils/node_modules/tslib": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", - "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", - "optional": true - }, - "node_modules/@graphql-tools/json-file-loader/node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "optional": true, - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/json-file-loader/node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "optional": true, - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/json-file-loader/node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "optional": true, - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/json-file-loader/node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "optional": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/json-file-loader/node_modules/tslib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", - "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", - "optional": true - }, - "node_modules/@graphql-tools/links": { - "version": "6.2.5", - "resolved": "https://registry.npmjs.org/@graphql-tools/links/-/links-6.2.5.tgz", - "integrity": "sha512-XeGDioW7F+HK6HHD/zCeF0HRC9s12NfOXAKv1HC0J7D50F4qqMvhdS/OkjzLoBqsgh/Gm8icRc36B5s0rOA9ig==", - "optional": true, - "dependencies": { - "@graphql-tools/utils": "^7.0.0", - "apollo-link": "1.2.14", - "apollo-upload-client": "14.1.2", - "cross-fetch": "3.0.6", - "form-data": "3.0.0", - "is-promise": "4.0.0", - "tslib": "~2.0.1" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/links/node_modules/@graphql-tools/utils": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-7.10.0.tgz", - "integrity": "sha512-d334r6bo9mxdSqZW6zWboEnnOOFRrAPVQJ7LkU8/6grglrbcu6WhwCLzHb90E94JI3TD3ricC3YGbUqIi9Xg0w==", - "optional": true, - "dependencies": { - "@ardatan/aggregate-error": "0.0.6", - "camel-case": "4.1.2", - "tslib": "~2.2.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/links/node_modules/@graphql-tools/utils/node_modules/tslib": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", - "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", - "optional": true - }, - "node_modules/@graphql-tools/links/node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "optional": true, - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/links/node_modules/form-data": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz", - "integrity": "sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==", - "optional": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@graphql-tools/links/node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "optional": true, - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/links/node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "optional": true, - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/links/node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "optional": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/links/node_modules/tslib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", - "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", - "optional": true - }, - "node_modules/@graphql-tools/load": { - "version": "6.2.8", - "resolved": "https://registry.npmjs.org/@graphql-tools/load/-/load-6.2.8.tgz", - "integrity": "sha512-JpbyXOXd8fJXdBh2ta0Q4w8ia6uK5FHzrTNmcvYBvflFuWly2LDTk2abbSl81zKkzswQMEd2UIYghXELRg8eTA==", - "optional": true, - "dependencies": { - "@graphql-tools/merge": "^6.2.12", - "@graphql-tools/utils": "^7.5.0", - "globby": "11.0.3", - "import-from": "3.0.0", - "is-glob": "4.0.1", - "p-limit": "3.1.0", - "tslib": "~2.2.0", - "unixify": "1.0.0", - "valid-url": "1.0.9" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/load-files": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/load-files/-/load-files-6.4.0.tgz", - "integrity": "sha512-Dl/3mhFDXWRHhEyVY0nABw+yOFcxfU0iKsLrX0E/wlTiqHRQJORGmxLFRbSGpwcP694dvpujsp/SCt+qz//PkA==", - "optional": true, - "dependencies": { - "globby": "11.0.4", - "tslib": "~2.3.0", - "unixify": "1.0.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/@graphql-tools/load-files/node_modules/globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "optional": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@graphql-tools/load/node_modules/@graphql-tools/utils": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-7.10.0.tgz", - "integrity": "sha512-d334r6bo9mxdSqZW6zWboEnnOOFRrAPVQJ7LkU8/6grglrbcu6WhwCLzHb90E94JI3TD3ricC3YGbUqIi9Xg0w==", - "optional": true, - "dependencies": { - "@ardatan/aggregate-error": "0.0.6", - "camel-case": "4.1.2", - "tslib": "~2.2.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/load/node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "optional": true, - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/load/node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "optional": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@graphql-tools/load/node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "optional": true, - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/load/node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "optional": true, - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/load/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==", - "optional": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@graphql-tools/load/node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "optional": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/load/node_modules/tslib": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", - "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", - "optional": true - }, - "node_modules/@graphql-tools/merge": { - "version": "6.2.17", - "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-6.2.17.tgz", - "integrity": "sha512-G5YrOew39fZf16VIrc49q3c8dBqQDD0ax5LYPiNja00xsXDi0T9zsEWVt06ApjtSdSF6HDddlu5S12QjeN8Tow==", - "optional": true, - "dependencies": { - "@graphql-tools/schema": "^8.0.2", - "@graphql-tools/utils": "8.0.2", - "tslib": "~2.3.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/merge/node_modules/@graphql-tools/schema": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.2.0.tgz", - "integrity": "sha512-ufmI5mJQa8NJczzfkh0pUttKvspqDcT5LLakA3jUmOrrE4d4NVj6onZlazdTzF5sAepSNqanFnwhrxZpCAJMKg==", - "optional": true, - "dependencies": { - "@graphql-tools/merge": "^8.1.0", - "@graphql-tools/utils": "^8.2.0", - "tslib": "~2.3.0", - "value-or-promise": "1.0.10" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/@graphql-tools/merge/node_modules/@graphql-tools/schema/node_modules/@graphql-tools/merge": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.1.2.tgz", - "integrity": "sha512-kFLd4kKNJXYXnKIhM8q9zgGAtbLmsy3WmGdDxYq3YHBJUogucAxnivQYyRIseUq37KGmSAIWu3pBQ23TKGsGOw==", - "optional": true, - "dependencies": { - "@graphql-tools/utils": "^8.2.2", - "tslib": "~2.3.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/@graphql-tools/merge/node_modules/@graphql-tools/schema/node_modules/@graphql-tools/utils": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.2.2.tgz", - "integrity": "sha512-29FFY5U4lpXuBiW9dRvuWnBVwGhWbGLa2leZcAMU/Pz47Cr/QLZGVgpLBV9rt+Gbs7wyIJM7t7EuksPs0RDm3g==", - "optional": true, - "dependencies": { - "tslib": "~2.3.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/@graphql-tools/merge/node_modules/@graphql-tools/utils": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.0.2.tgz", - "integrity": "sha512-gzkavMOgbhnwkHJYg32Adv6f+LxjbQmmbdD5Hty0+CWxvaiuJq+nU6tzb/7VSU4cwhbNLx/lGu2jbCPEW1McZQ==", - "optional": true, - "dependencies": { - "tslib": "~2.3.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/mock": { - "version": "6.2.4", - "resolved": "https://registry.npmjs.org/@graphql-tools/mock/-/mock-6.2.4.tgz", - "integrity": "sha512-O5Zvq/mcDZ7Ptky0IZ4EK9USmxV6FEVYq0Jxv2TI80kvxbCjt0tbEpZ+r1vIt1gZOXlAvadSHYyzWnUPh+1vkQ==", - "optional": true, - "dependencies": { - "@graphql-tools/schema": "^6.2.4", - "@graphql-tools/utils": "^6.2.4", - "tslib": "~2.0.1" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/mock/node_modules/tslib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", - "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", - "optional": true - }, - "node_modules/@graphql-tools/module-loader": { - "version": "6.2.7", - "resolved": "https://registry.npmjs.org/@graphql-tools/module-loader/-/module-loader-6.2.7.tgz", - "integrity": "sha512-ItAAbHvwfznY9h1H9FwHYDstTcm22Dr5R9GZtrWlpwqj0jaJGcBxsMB9jnK9kFqkbtFYEe4E/NsSnxsS4/vViQ==", - "optional": true, - "dependencies": { - "@graphql-tools/utils": "^7.5.0", - "tslib": "~2.1.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/module-loader/node_modules/@graphql-tools/utils": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-7.10.0.tgz", - "integrity": "sha512-d334r6bo9mxdSqZW6zWboEnnOOFRrAPVQJ7LkU8/6grglrbcu6WhwCLzHb90E94JI3TD3ricC3YGbUqIi9Xg0w==", - "optional": true, - "dependencies": { - "@ardatan/aggregate-error": "0.0.6", - "camel-case": "4.1.2", - "tslib": "~2.2.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/module-loader/node_modules/@graphql-tools/utils/node_modules/tslib": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", - "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", - "optional": true - }, - "node_modules/@graphql-tools/module-loader/node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "optional": true, - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/module-loader/node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "optional": true, - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/module-loader/node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "optional": true, - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/module-loader/node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "optional": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/module-loader/node_modules/tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==", - "optional": true - }, - "node_modules/@graphql-tools/relay-operation-optimizer": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-6.4.0.tgz", - "integrity": "sha512-auNvHC8gHu9BHBPnLA5c8Iv5VAXQG866KZJz7ljhKpXPdlPevK4zjHlVJwqnF8H6clJ9NgZpizN4kNNCe/3R9g==", - "optional": true, - "dependencies": { - "@graphql-tools/utils": "^8.2.0", - "relay-compiler": "11.0.2", - "tslib": "~2.3.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/@graphql-tools/relay-operation-optimizer/node_modules/@graphql-tools/utils": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.2.2.tgz", - "integrity": "sha512-29FFY5U4lpXuBiW9dRvuWnBVwGhWbGLa2leZcAMU/Pz47Cr/QLZGVgpLBV9rt+Gbs7wyIJM7t7EuksPs0RDm3g==", - "optional": true, - "dependencies": { - "tslib": "~2.3.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/@graphql-tools/resolvers-composition": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/resolvers-composition/-/resolvers-composition-6.4.0.tgz", - "integrity": "sha512-YkAmpIzyFtto9aDp/FysuyPb/tPba/gXYYvlN2vdBkE9nRU8ms8Fwhnroek0pW5ipjZAhpQZsZPVVpzSwldj3A==", - "optional": true, - "dependencies": { - "@graphql-tools/utils": "^8.2.0", - "lodash": "4.17.21", - "micromatch": "^4.0.4", - "tslib": "~2.3.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/@graphql-tools/resolvers-composition/node_modules/@graphql-tools/utils": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.2.2.tgz", - "integrity": "sha512-29FFY5U4lpXuBiW9dRvuWnBVwGhWbGLa2leZcAMU/Pz47Cr/QLZGVgpLBV9rt+Gbs7wyIJM7t7EuksPs0RDm3g==", - "optional": true, - "dependencies": { - "tslib": "~2.3.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0" - } - }, - "node_modules/@graphql-tools/resolvers-composition/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "optional": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@graphql-tools/resolvers-composition/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "optional": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@graphql-tools/resolvers-composition/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "optional": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/@graphql-tools/schema": { - "version": "6.2.4", - "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-6.2.4.tgz", - "integrity": "sha512-rh+14lSY1q8IPbEv2J9x8UBFJ5NrDX9W5asXEUlPp+7vraLp/Tiox4GXdgyA92JhwpYco3nTf5Bo2JDMt1KnAQ==", - "optional": true, - "dependencies": { - "@graphql-tools/utils": "^6.2.4", - "tslib": "~2.0.1" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/schema/node_modules/tslib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", - "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", - "optional": true - }, - "node_modules/@graphql-tools/stitch": { - "version": "6.2.4", - "resolved": "https://registry.npmjs.org/@graphql-tools/stitch/-/stitch-6.2.4.tgz", - "integrity": "sha512-0C7PNkS7v7iAc001m7c1LPm5FUB0/DYw+s3OyCii6YYYHY8NwdI0roeOyeDGFJkFubWBQfjc3hoSyueKtU73mw==", - "optional": true, - "dependencies": { - "@graphql-tools/batch-delegate": "^6.2.4", - "@graphql-tools/delegate": "^6.2.4", - "@graphql-tools/merge": "^6.2.4", - "@graphql-tools/schema": "^6.2.4", - "@graphql-tools/utils": "^6.2.4", - "@graphql-tools/wrap": "^6.2.4", - "is-promise": "4.0.0", - "tslib": "~2.0.1" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/stitch/node_modules/tslib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", - "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", - "optional": true - }, - "node_modules/@graphql-tools/url-loader": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-6.10.1.tgz", - "integrity": "sha512-DSDrbhQIv7fheQ60pfDpGD256ixUQIR6Hhf9Z5bRjVkXOCvO5XrkwoWLiU7iHL81GB1r0Ba31bf+sl+D4nyyfw==", - "optional": true, - "dependencies": { - "@graphql-tools/delegate": "^7.0.1", - "@graphql-tools/utils": "^7.9.0", - "@graphql-tools/wrap": "^7.0.4", - "@microsoft/fetch-event-source": "2.0.1", - "@types/websocket": "1.0.2", - "abort-controller": "3.0.0", - "cross-fetch": "3.1.4", - "extract-files": "9.0.0", - "form-data": "4.0.0", - "graphql-ws": "^4.4.1", - "is-promise": "4.0.0", - "isomorphic-ws": "4.0.1", - "lodash": "4.17.21", - "meros": "1.1.4", - "subscriptions-transport-ws": "^0.9.18", - "sync-fetch": "0.3.0", - "tslib": "~2.2.0", - "valid-url": "1.0.9", - "ws": "7.4.5" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/url-loader/node_modules/@graphql-tools/delegate": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/@graphql-tools/delegate/-/delegate-7.1.5.tgz", - "integrity": "sha512-bQu+hDd37e+FZ0CQGEEczmRSfQRnnXeUxI/0miDV+NV/zCbEdIJj5tYFNrKT03W6wgdqx8U06d8L23LxvGri/g==", - "optional": true, - "dependencies": { - "@ardatan/aggregate-error": "0.0.6", - "@graphql-tools/batch-execute": "^7.1.2", - "@graphql-tools/schema": "^7.1.5", - "@graphql-tools/utils": "^7.7.1", - "dataloader": "2.0.0", - "tslib": "~2.2.0", - "value-or-promise": "1.0.6" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/url-loader/node_modules/@graphql-tools/schema": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-7.1.5.tgz", - "integrity": "sha512-uyn3HSNSckf4mvQSq0Q07CPaVZMNFCYEVxroApOaw802m9DcZPgf9XVPy/gda5GWj9AhbijfRYVTZQgHnJ4CXA==", - "optional": true, - "dependencies": { - "@graphql-tools/utils": "^7.1.2", - "tslib": "~2.2.0", - "value-or-promise": "1.0.6" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/url-loader/node_modules/@graphql-tools/utils": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-7.10.0.tgz", - "integrity": "sha512-d334r6bo9mxdSqZW6zWboEnnOOFRrAPVQJ7LkU8/6grglrbcu6WhwCLzHb90E94JI3TD3ricC3YGbUqIi9Xg0w==", - "optional": true, - "dependencies": { - "@ardatan/aggregate-error": "0.0.6", - "camel-case": "4.1.2", - "tslib": "~2.2.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/url-loader/node_modules/@graphql-tools/wrap": { - "version": "7.0.8", - "resolved": "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-7.0.8.tgz", - "integrity": "sha512-1NDUymworsOlb53Qfh7fonDi2STvqCtbeE68ntKY9K/Ju/be2ZNxrFSbrBHwnxWcN9PjISNnLcAyJ1L5tCUyhg==", - "optional": true, - "dependencies": { - "@graphql-tools/delegate": "^7.1.5", - "@graphql-tools/schema": "^7.1.5", - "@graphql-tools/utils": "^7.8.1", - "tslib": "~2.2.0", - "value-or-promise": "1.0.6" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/url-loader/node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "optional": true, - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/url-loader/node_modules/cross-fetch": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz", - "integrity": "sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==", - "optional": true, - "dependencies": { - "node-fetch": "2.6.1" - } - }, - "node_modules/@graphql-tools/url-loader/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "optional": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@graphql-tools/url-loader/node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "optional": true, - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/url-loader/node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "optional": true, - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/url-loader/node_modules/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "optional": true, - "engines": { - "node": "4.x || >=6.0.0" - } - }, - "node_modules/@graphql-tools/url-loader/node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "optional": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/url-loader/node_modules/tslib": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", - "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==", - "optional": true - }, - "node_modules/@graphql-tools/url-loader/node_modules/value-or-promise": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.6.tgz", - "integrity": "sha512-9r0wQsWD8z/BxPOvnwbPf05ZvFngXyouE9EKB+5GbYix+BYnAwrIChCUyFIinfbf2FL/U71z+CPpbnmTdxrwBg==", - "optional": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/@graphql-tools/url-loader/node_modules/ws": { - "version": "7.4.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz", - "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==", - "optional": true, - "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/@graphql-tools/utils": { - "version": "6.2.4", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-6.2.4.tgz", - "integrity": "sha512-ybgZ9EIJE3JMOtTrTd2VcIpTXtDrn2q6eiYkeYMKRVh3K41+LZa6YnR2zKERTXqTWqhobROwLt4BZbw2O3Aeeg==", - "optional": true, - "dependencies": { - "@ardatan/aggregate-error": "0.0.6", - "camel-case": "4.1.1", - "tslib": "~2.0.1" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/utils/node_modules/camel-case": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.1.tgz", - "integrity": "sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q==", - "optional": true, - "dependencies": { - "pascal-case": "^3.1.1", - "tslib": "^1.10.0" - } - }, - "node_modules/@graphql-tools/utils/node_modules/camel-case/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "optional": true - }, - "node_modules/@graphql-tools/utils/node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "optional": true, - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/utils/node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "optional": true, - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/utils/node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "optional": true, - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/@graphql-tools/utils/node_modules/tslib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", - "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", - "optional": true - }, - "node_modules/@graphql-tools/wrap": { - "version": "6.2.4", - "resolved": "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-6.2.4.tgz", - "integrity": "sha512-cyQgpybolF9DjL2QNOvTS1WDCT/epgYoiA8/8b3nwv5xmMBQ6/6nYnZwityCZ7njb7MMyk7HBEDNNlP9qNJDcA==", - "optional": true, - "dependencies": { - "@graphql-tools/delegate": "^6.2.4", - "@graphql-tools/schema": "^6.2.4", - "@graphql-tools/utils": "^6.2.4", - "is-promise": "4.0.0", - "tslib": "~2.0.1" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/@graphql-tools/wrap/node_modules/tslib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", - "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", - "optional": true - }, - "node_modules/@graphql-typed-document-node/core": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.0.tgz", - "integrity": "sha512-wYn6r8zVZyQJ6rQaALBEln5B1pzxb9shV5Ef97kTvn6yVGrqyXVnDqnU24MXnFubR+rZjBY9NWuxX3FB2sTsjg==", - "optional": true, - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/@gulp-sourcemaps/map-sources": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/map-sources/-/map-sources-1.0.0.tgz", - "integrity": "sha1-iQrnxdjId/bThIYCFazp1+yUW9o=", - "optional": true, - "dependencies": { - "normalize-path": "^2.0.1", - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/@improbable-eng/grpc-web": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/@improbable-eng/grpc-web/-/grpc-web-0.13.0.tgz", - "integrity": "sha512-vaxxT+Qwb7GPqDQrBV4vAAfH0HywgOLw6xGIKXd9Q8hcV63CQhmS3p4+pZ9/wVvt4Ph3ZDK9fdC983b9aGMUFg==", - "optional": true, - "dependencies": { - "browser-headers": "^0.4.0" - }, - "peerDependencies": { - "google-protobuf": "^3.2.0" - } - }, - "node_modules/@josephg/resolvable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@josephg/resolvable/-/resolvable-1.0.1.tgz", - "integrity": "sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg==", - "optional": true - }, - "node_modules/@ledgerhq/devices": { - "version": "5.51.1", - "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-5.51.1.tgz", - "integrity": "sha512-4w+P0VkbjzEXC7kv8T1GJ/9AVaP9I6uasMZ/JcdwZBS3qwvKo5A5z9uGhP5c7TvItzcmPb44b5Mw2kT+WjUuAA==", - "optional": true, - "dependencies": { - "@ledgerhq/errors": "^5.50.0", - "@ledgerhq/logs": "^5.50.0", - "rxjs": "6", - "semver": "^7.3.5" - } - }, - "node_modules/@ledgerhq/devices/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "optional": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@ledgerhq/devices/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "optional": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@ledgerhq/devices/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "optional": true - }, - "node_modules/@ledgerhq/errors": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-5.50.0.tgz", - "integrity": "sha512-gu6aJ/BHuRlpU7kgVpy2vcYk6atjB4iauP2ymF7Gk0ez0Y/6VSMVSJvubeEQN+IV60+OBK0JgeIZG7OiHaw8ow==", - "optional": true - }, - "node_modules/@ledgerhq/hw-transport": { - "version": "5.51.1", - "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-5.51.1.tgz", - "integrity": "sha512-6wDYdbWrw9VwHIcoDnqWBaDFyviyjZWv6H9vz9Vyhe4Qd7TIFmbTl/eWs6hZvtZBza9K8y7zD8ChHwRI4s9tSw==", - "optional": true, - "dependencies": { - "@ledgerhq/devices": "^5.51.1", - "@ledgerhq/errors": "^5.50.0", - "events": "^3.3.0" - } - }, - "node_modules/@ledgerhq/hw-transport-webusb": { - "version": "5.53.1", - "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-webusb/-/hw-transport-webusb-5.53.1.tgz", - "integrity": "sha512-A/f+xcrkIAZiJrvPpDvsrjxQX4cI2kbdiunQkwsYmOG3Bp4z89ZnsBiC7YBst4n2/g+QgTg0/KPVtODU5djooQ==", - "optional": true, - "dependencies": { - "@ledgerhq/devices": "^5.51.1", - "@ledgerhq/errors": "^5.50.0", - "@ledgerhq/hw-transport": "^5.51.1", - "@ledgerhq/logs": "^5.50.0" - } - }, - "node_modules/@ledgerhq/logs": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-5.50.0.tgz", - "integrity": "sha512-swKHYCOZUGyVt4ge0u8a7AwNcA//h4nx5wIi0sruGye1IJ5Cva0GyK9L2/WdX+kWVTKp92ZiEo1df31lrWGPgA==", - "optional": true - }, - "node_modules/@microsoft/fetch-event-source": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@microsoft/fetch-event-source/-/fetch-event-source-2.0.1.tgz", - "integrity": "sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA==", - "optional": true - }, - "node_modules/@multiformats/base-x": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@multiformats/base-x/-/base-x-4.0.1.tgz", - "integrity": "sha512-eMk0b9ReBbV23xXU693TAIrLyeO5iTgBZGSJfpqriG8UkYvr/hC9u9pyMlAakDNHWmbhMZCDs6KQO0jzKD8OTw==", - "optional": true - }, - "node_modules/@nodefactory/filsnap-adapter": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@nodefactory/filsnap-adapter/-/filsnap-adapter-0.2.2.tgz", - "integrity": "sha512-nbaYMwVopOXN2bWOdDY3il6gGL9qMuCmMN4WPuoxzJjSnAMJNqEeSe6MNNJ/fYBLipZcJfAtirNXRrFLFN+Tvw==", - "deprecated": "Package is deprecated in favour of @chainsafe/filsnap-adapter", - "optional": true - }, - "node_modules/@nodefactory/filsnap-types": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@nodefactory/filsnap-types/-/filsnap-types-0.2.2.tgz", - "integrity": "sha512-XT1tE2vrYF2D0tSNNekgjqKRpqPQn4W72eKul9dDCul/8ykouhqnVTyjFHYvBhlBWE0PK3nmG7i83QvhgGSiMw==", - "optional": true - }, - "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==", - "optional": 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==", - "optional": 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==", - "optional": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@openzeppelin/contract-loader": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@openzeppelin/contract-loader/-/contract-loader-0.6.3.tgz", - "integrity": "sha512-cOFIjBjwbGgZhDZsitNgJl0Ye1rd5yu/Yx5LMgeq3u0ZYzldm4uObzHDFq4gjDdoypvyORjjJa3BlFA7eAnVIg==", - "dev": true, - "dependencies": { - "find-up": "^4.1.0", - "fs-extra": "^8.1.0" - } - }, - "node_modules/@openzeppelin/contract-loader/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@openzeppelin/contract-loader/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, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/@openzeppelin/contract-loader/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@openzeppelin/contract-loader/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@openzeppelin/contract-loader/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@openzeppelin/contract-loader/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@openzeppelin/contract-loader/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, - "engines": { - "node": ">=8" - } - }, - "node_modules/@openzeppelin/contracts": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.3.2.tgz", - "integrity": "sha512-AybF1cesONZStg5kWf6ao9OlqTZuPqddvprc0ky7lrUVOjXeKpmQ2Y9FK+6ygxasb+4aic4O5pneFBfwVsRRRg==" - }, - "node_modules/@openzeppelin/test-helpers": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/@openzeppelin/test-helpers/-/test-helpers-0.5.13.tgz", - "integrity": "sha512-H9LUHM0nqZVObWyzJrXJ9FLDgtcBZZK0L+LhA0wdcvK3M4Um2LpLX4KbP/mUYcgvHK03pK7Ub4T6RYp3Vjy/mg==", - "dev": true, - "dependencies": { - "@openzeppelin/contract-loader": "^0.6.2", - "@truffle/contract": "^4.0.35", - "ansi-colors": "^3.2.3", - "chai": "^4.2.0", - "chai-bn": "^0.2.1", - "ethjs-abi": "^0.2.1", - "lodash.flatten": "^4.4.0", - "semver": "^5.6.0", - "web3": "^1.2.5", - "web3-utils": "^1.2.5" - } - }, - "node_modules/@openzeppelin/test-helpers/node_modules/ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=", - "optional": true - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", - "optional": true - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", - "optional": true - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=", - "optional": true - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", - "optional": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=", - "optional": true - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=", - "optional": true - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=", - "optional": true - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=", - "optional": true - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=", - "optional": true - }, - "node_modules/@redux-saga/core": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@redux-saga/core/-/core-1.1.3.tgz", - "integrity": "sha512-8tInBftak8TPzE6X13ABmEtRJGjtK17w7VUs7qV17S8hCO5S3+aUTWZ/DBsBJPdE8Z5jOPwYALyvofgq1Ws+kg==", - "dependencies": { - "@babel/runtime": "^7.6.3", - "@redux-saga/deferred": "^1.1.2", - "@redux-saga/delay-p": "^1.1.2", - "@redux-saga/is": "^1.1.2", - "@redux-saga/symbols": "^1.1.2", - "@redux-saga/types": "^1.1.0", - "redux": "^4.0.4", - "typescript-tuple": "^2.2.1" - } - }, - "node_modules/@redux-saga/core/node_modules/redux": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/redux/-/redux-4.1.1.tgz", - "integrity": "sha512-hZQZdDEM25UY2P493kPYuKqviVwZ58lEmGQNeQ+gXa+U0gYPUBf7NKYazbe3m+bs/DzM/ahN12DbF+NG8i0CWw==", - "dependencies": { - "@babel/runtime": "^7.9.2" - } - }, - "node_modules/@redux-saga/deferred": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@redux-saga/deferred/-/deferred-1.1.2.tgz", - "integrity": "sha512-908rDLHFN2UUzt2jb4uOzj6afpjgJe3MjICaUNO3bvkV/kN/cNeI9PMr8BsFXB/MR8WTAZQq/PlTq8Kww3TBSQ==" - }, - "node_modules/@redux-saga/delay-p": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@redux-saga/delay-p/-/delay-p-1.1.2.tgz", - "integrity": "sha512-ojc+1IoC6OP65Ts5+ZHbEYdrohmIw1j9P7HS9MOJezqMYtCDgpkoqB5enAAZrNtnbSL6gVCWPHaoaTY5KeO0/g==", - "dependencies": { - "@redux-saga/symbols": "^1.1.2" - } - }, - "node_modules/@redux-saga/is": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@redux-saga/is/-/is-1.1.2.tgz", - "integrity": "sha512-OLbunKVsCVNTKEf2cH4TYyNbbPgvmZ52iaxBD4I1fTif4+MTXMa4/Z07L83zW/hTCXwpSZvXogqMqLfex2Tg6w==", - "dependencies": { - "@redux-saga/symbols": "^1.1.2", - "@redux-saga/types": "^1.1.0" - } - }, - "node_modules/@redux-saga/symbols": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@redux-saga/symbols/-/symbols-1.1.2.tgz", - "integrity": "sha512-EfdGnF423glv3uMwLsGAtE6bg+R9MdqlHEzExnfagXPrIiuxwr3bdiAwz3gi+PsrQ3yBlaBpfGLtDG8rf3LgQQ==" - }, - "node_modules/@redux-saga/types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@redux-saga/types/-/types-1.1.0.tgz", - "integrity": "sha512-afmTuJrylUU/0OtqzaRkbyYFFNgCF73Bvel/sw90pvGrWIZ+vyoIJqA6eMSoA6+nb443kTmulmBtC9NerXboNg==" - }, - "node_modules/@repeaterjs/repeater": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@repeaterjs/repeater/-/repeater-3.0.4.tgz", - "integrity": "sha512-AW8PKd6iX3vAZ0vA43nOUOnbq/X5ihgU+mSXXqunMkeQADGiqw/PY0JNeYtD5sr0PAy51YPgAPbDoeapv9r8WA==", - "optional": true - }, - "node_modules/@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/@solidity-parser/parser": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.13.2.tgz", - "integrity": "sha512-RwHnpRnfrnD2MSPveYoPh8nhofEvX7fgjHk1Oq+NNvCcLx4r1js91CO9o+F/F3fBzOCyvm8kKRTriFICX/odWw==", - "optional": true, - "dependencies": { - "antlr4ts": "^0.5.0-alpha.4" - } - }, - "node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", - "dependencies": { - "defer-to-connect": "^1.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@textile/buckets": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@textile/buckets/-/buckets-6.2.0.tgz", - "integrity": "sha512-83yqKiz1sAvu93l+5klGdjYzsoXYdRbncXzZ7QPWReS8UEV6/VhrvmkIz0K5EYSVWXuLeh0HjVB53Kq3VLMmiw==", - "optional": true, - "dependencies": { - "@improbable-eng/grpc-web": "^0.13.0", - "@repeaterjs/repeater": "^3.0.4", - "@textile/buckets-grpc": "2.6.6", - "@textile/context": "^0.12.1", - "@textile/crypto": "^4.2.1", - "@textile/grpc-authentication": "^3.4.1", - "@textile/grpc-connection": "^2.5.1", - "@textile/grpc-transport": "^0.5.1", - "@textile/hub-grpc": "2.6.6", - "@textile/hub-threads-client": "^5.5.0", - "@textile/security": "^0.9.1", - "@textile/threads-id": "^0.6.1", - "abort-controller": "^3.0.0", - "cids": "^1.1.4", - "it-drain": "^1.0.3", - "loglevel": "^1.6.8", - "paramap-it": "^0.1.1" - } - }, - "node_modules/@textile/buckets-grpc": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/@textile/buckets-grpc/-/buckets-grpc-2.6.6.tgz", - "integrity": "sha512-Gg+96RviTLNnSX8rhPxFgREJn3Ss2wca5Szk60nOenW+GoVIc+8dtsA9bE/6Vh5Gn85zAd17m1C2k6PbJK8x3Q==", - "optional": true, - "dependencies": { - "@improbable-eng/grpc-web": "^0.13.0", - "@types/google-protobuf": "^3.7.4", - "google-protobuf": "^3.13.0" - } - }, - "node_modules/@textile/buckets/node_modules/cids": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/cids/-/cids-1.1.9.tgz", - "integrity": "sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "multibase": "^4.0.1", - "multicodec": "^3.0.1", - "multihashes": "^4.0.1", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=4.0.0", - "npm": ">=3.0.0" - } - }, - "node_modules/@textile/buckets/node_modules/multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "@multiformats/base-x": "^4.0.1" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/@textile/buckets/node_modules/multicodec": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-3.2.1.tgz", - "integrity": "sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - } - }, - "node_modules/@textile/buckets/node_modules/multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", - "optional": true, - "dependencies": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/@textile/buckets/node_modules/multihashes/node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==", - "optional": true - }, - "node_modules/@textile/buckets/node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "optional": true, - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/@textile/buckets/node_modules/varint": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", - "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", - "optional": true - }, - "node_modules/@textile/context": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/@textile/context/-/context-0.12.1.tgz", - "integrity": "sha512-3UDkz0YjwpWt8zY8NBkZ9UqqlR2L9Gv6t2TAXAQT+Rh/3/X0IAFGQlAaFT5wdGPN2nqbXDeEOFfkMs/T2K02Iw==", - "optional": true, - "dependencies": { - "@improbable-eng/grpc-web": "^0.13.0", - "@textile/security": "^0.9.1" - } - }, - "node_modules/@textile/crypto": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@textile/crypto/-/crypto-4.2.1.tgz", - "integrity": "sha512-7qxFLrXiSq5Tf3Wh3Oh6JKJMitF/6N3/AJyma6UAA8iQnAZBF98ShWz9tR59a3dvmGTc9MlyplOm16edbccscg==", - "optional": true, - "dependencies": { - "@types/ed2curve": "^0.2.2", - "ed2curve": "^0.3.0", - "fastestsmallesttextencoderdecoder": "^1.0.22", - "multibase": "^3.1.0", - "tweetnacl": "^1.0.3" - } - }, - "node_modules/@textile/crypto/node_modules/multibase": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-3.1.2.tgz", - "integrity": "sha512-bpklWHs70LO3smJUHOjcnzGceJJvn9ui0Vau6Za0B/GBepaXswmW8Ufea0uD9pROf/qCQ4N4lZ3sf3U+SNf0tw==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "@multiformats/base-x": "^4.0.1", - "web-encoding": "^1.0.6" - }, - "engines": { - "node": ">=10.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/@textile/crypto/node_modules/tweetnacl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", - "optional": true - }, - "node_modules/@textile/grpc-authentication": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@textile/grpc-authentication/-/grpc-authentication-3.4.1.tgz", - "integrity": "sha512-AzMWlmx//EzBeanVdtXLFr8joMc5v9T5Q6VhAUjzN2vx0bCYywn0GhJEiCWbHsvfr4CJ19FvDYeUZUPfewxNPA==", - "optional": true, - "dependencies": { - "@textile/context": "^0.12.1", - "@textile/crypto": "^4.2.1", - "@textile/grpc-connection": "^2.5.1", - "@textile/hub-threads-client": "^5.5.0", - "@textile/security": "^0.9.1" - } - }, - "node_modules/@textile/grpc-connection": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@textile/grpc-connection/-/grpc-connection-2.5.1.tgz", - "integrity": "sha512-ujSjt0gcFLxu4VWtUFlCrnoqUVa/aI8emQ1YSo71Hdf4/XVYctSJlj4abVPArQdyusIVK3bWoUekBE6suJeMhg==", - "optional": true, - "dependencies": { - "@improbable-eng/grpc-web": "^0.12.0", - "@textile/context": "^0.12.1", - "@textile/grpc-transport": "^0.5.1" - } - }, - "node_modules/@textile/grpc-connection/node_modules/@improbable-eng/grpc-web": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@improbable-eng/grpc-web/-/grpc-web-0.12.0.tgz", - "integrity": "sha512-uJjgMPngreRTYPBuo6gswMj1gK39Wbqre/RgE0XnSDXJRg6ST7ZhuS53dFE6Vc2CX4jxgl+cO+0B3op8LA4Q0Q==", - "optional": true, - "dependencies": { - "browser-headers": "^0.4.0" - }, - "peerDependencies": { - "google-protobuf": "^3.2.0" - } - }, - "node_modules/@textile/grpc-powergate-client": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@textile/grpc-powergate-client/-/grpc-powergate-client-2.6.2.tgz", - "integrity": "sha512-ODe22lveqPiSkBsxnhLIRKQzZVwvyqDVx6WBPQJZI4yxrja5SDOq6/yH2Dtmqyfxg8BOobFvn+tid3wexRZjnQ==", - "optional": true, - "dependencies": { - "@improbable-eng/grpc-web": "^0.14.0", - "@types/google-protobuf": "^3.15.2", - "google-protobuf": "^3.17.3" - } - }, - "node_modules/@textile/grpc-powergate-client/node_modules/@improbable-eng/grpc-web": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/@improbable-eng/grpc-web/-/grpc-web-0.14.1.tgz", - "integrity": "sha512-XaIYuunepPxoiGVLLHmlnVminUGzBTnXr8Wv7khzmLWbNw4TCwJKX09GSMJlKhu/TRk6gms0ySFxewaETSBqgw==", - "optional": true, - "dependencies": { - "browser-headers": "^0.4.1" - }, - "peerDependencies": { - "google-protobuf": "^3.14.0" - } - }, - "node_modules/@textile/grpc-transport": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@textile/grpc-transport/-/grpc-transport-0.5.1.tgz", - "integrity": "sha512-TXd51uWUYhcGPeESbzgSgCy3OYAXJemUUk0lqAklAKvRiXG33SYx8K9CFDxBJdnzT5FOMck7eSliKCROaRuabw==", - "optional": true, - "dependencies": { - "@improbable-eng/grpc-web": "^0.13.0", - "@types/ws": "^7.2.6", - "isomorphic-ws": "^4.0.1", - "loglevel": "^1.6.6", - "ws": "^7.2.1" - } - }, - "node_modules/@textile/grpc-transport/node_modules/ws": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", - "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", - "optional": true, - "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/@textile/hub": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@textile/hub/-/hub-6.3.0.tgz", - "integrity": "sha512-LJe/KgFK6xMDlycl+txus70DV/zwbwlbcaM2xlnE6mK+fr+ZA0s8+7CX4UnvjT2xjgrw4/TPiQ8hoTArxmZ2xg==", - "optional": true, - "dependencies": { - "@textile/buckets": "^6.2.0", - "@textile/crypto": "^4.2.1", - "@textile/grpc-authentication": "^3.4.1", - "@textile/hub-filecoin": "^2.2.0", - "@textile/hub-grpc": "2.6.6", - "@textile/hub-threads-client": "^5.5.0", - "@textile/security": "^0.9.1", - "@textile/threads-id": "^0.6.1", - "@textile/users": "^6.2.0", - "loglevel": "^1.6.8", - "multihashes": "3.1.2" - } - }, - "node_modules/@textile/hub-filecoin": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@textile/hub-filecoin/-/hub-filecoin-2.2.0.tgz", - "integrity": "sha512-1niQti/TSqsY8KKF3/QRxGWI4j2L0b6GfJDSh0t2hvWS4Sz6miTEtuLccL1ccQB/lj8Nko3MUok3v04WhhmoBA==", - "optional": true, - "dependencies": { - "@improbable-eng/grpc-web": "^0.12.0", - "@textile/context": "^0.12.1", - "@textile/crypto": "^4.2.1", - "@textile/grpc-authentication": "^3.4.1", - "@textile/grpc-connection": "^2.5.1", - "@textile/grpc-powergate-client": "^2.6.2", - "@textile/hub-grpc": "2.6.6", - "@textile/security": "^0.9.1", - "event-iterator": "^2.0.0", - "loglevel": "^1.6.8" - } - }, - "node_modules/@textile/hub-filecoin/node_modules/@improbable-eng/grpc-web": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@improbable-eng/grpc-web/-/grpc-web-0.12.0.tgz", - "integrity": "sha512-uJjgMPngreRTYPBuo6gswMj1gK39Wbqre/RgE0XnSDXJRg6ST7ZhuS53dFE6Vc2CX4jxgl+cO+0B3op8LA4Q0Q==", - "optional": true, - "dependencies": { - "browser-headers": "^0.4.0" - }, - "peerDependencies": { - "google-protobuf": "^3.2.0" - } - }, - "node_modules/@textile/hub-filecoin/node_modules/event-iterator": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/event-iterator/-/event-iterator-2.0.0.tgz", - "integrity": "sha512-KGft0ldl31BZVV//jj+IAIGCxkvvUkkON+ScH6zfoX+l+omX6001ggyRSpI0Io2Hlro0ThXotswCtfzS8UkIiQ==", - "optional": true - }, - "node_modules/@textile/hub-grpc": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/@textile/hub-grpc/-/hub-grpc-2.6.6.tgz", - "integrity": "sha512-PHoLUE1lq0hyiVjIucPHRxps8r1oafXHIgmAR99+Lk4TwAF2MXx5rfxYhg1dEJ3ches8ZuNbVGkiNIXroIoZ8Q==", - "optional": true, - "dependencies": { - "@improbable-eng/grpc-web": "^0.13.0", - "@types/google-protobuf": "^3.7.4", - "google-protobuf": "^3.13.0" - } - }, - "node_modules/@textile/hub-threads-client": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@textile/hub-threads-client/-/hub-threads-client-5.5.0.tgz", - "integrity": "sha512-W8j5W5ZO2i9nnRbBQLkt3DXbk2NEdz8jZ+YBavgJniWg8OdvnobSznvTv6ZNlJs7WWJPQF8Z3TA0aXKZi1ik6A==", - "optional": true, - "dependencies": { - "@improbable-eng/grpc-web": "^0.13.0", - "@textile/context": "^0.12.1", - "@textile/hub-grpc": "2.6.6", - "@textile/security": "^0.9.1", - "@textile/threads-client": "^2.3.0", - "@textile/threads-id": "^0.6.1", - "@textile/users-grpc": "2.6.6", - "loglevel": "^1.7.0" - } - }, - "node_modules/@textile/hub/node_modules/multibase": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-3.1.2.tgz", - "integrity": "sha512-bpklWHs70LO3smJUHOjcnzGceJJvn9ui0Vau6Za0B/GBepaXswmW8Ufea0uD9pROf/qCQ4N4lZ3sf3U+SNf0tw==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "@multiformats/base-x": "^4.0.1", - "web-encoding": "^1.0.6" - }, - "engines": { - "node": ">=10.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/@textile/hub/node_modules/multihashes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-3.1.2.tgz", - "integrity": "sha512-AP4IoV/YzkNrfbQKZE3OMPibrmy350OmCd6cJkwyM8oExaXIlOY4UnOOVSQtAEuq/LR01XfXKCESidzZvSwHCQ==", - "optional": true, - "dependencies": { - "multibase": "^3.1.0", - "uint8arrays": "^2.0.5", - "varint": "^6.0.0" - }, - "engines": { - "node": ">=10.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/@textile/hub/node_modules/uint8arrays": { - "version": "2.1.10", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-2.1.10.tgz", - "integrity": "sha512-Q9/hhJa2836nQfEJSZTmr+pg9+cDJS9XEAp7N2Vg5MzL3bK/mkMVfjscRGYruP9jNda6MAdf4QD/y78gSzkp6A==", - "optional": true, - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/@textile/hub/node_modules/varint": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", - "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", - "optional": true - }, - "node_modules/@textile/multiaddr": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@textile/multiaddr/-/multiaddr-0.6.1.tgz", - "integrity": "sha512-OQK/kXYhtUA8yN41xltCxCiCO98Pkk8yMgUdhPDAhogvptvX4k9g6Rg0Yob18uBwN58AYUg075V//SWSK1kUCQ==", - "optional": true, - "dependencies": { - "@textile/threads-id": "^0.6.1", - "multiaddr": "^8.1.2", - "varint": "^6.0.0" - } - }, - "node_modules/@textile/multiaddr/node_modules/varint": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", - "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", - "optional": true - }, - "node_modules/@textile/security": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@textile/security/-/security-0.9.1.tgz", - "integrity": "sha512-pmiSOUezV/udTMoQsvyEZwZFfN0tMo6dOAof4VBqyFdDZZV6doeI5zTDpqSJZTg69n0swfWxsHw96ZWQIoWvsw==", - "optional": true, - "dependencies": { - "@consento/sync-randombytes": "^1.0.5", - "fast-sha256": "^1.3.0", - "fastestsmallesttextencoderdecoder": "^1.0.22", - "multibase": "^3.1.0" - } - }, - "node_modules/@textile/security/node_modules/multibase": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-3.1.2.tgz", - "integrity": "sha512-bpklWHs70LO3smJUHOjcnzGceJJvn9ui0Vau6Za0B/GBepaXswmW8Ufea0uD9pROf/qCQ4N4lZ3sf3U+SNf0tw==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "@multiformats/base-x": "^4.0.1", - "web-encoding": "^1.0.6" - }, - "engines": { - "node": ">=10.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/@textile/threads-client": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@textile/threads-client/-/threads-client-2.3.0.tgz", - "integrity": "sha512-4pbAuv8ke6Pyd7cuM/sWbrG5tZ3ODUeVLhq0HwIGXWFvT1odMfMS3E2gss6oEA5P4LxAHm7ITzt/0UwXDtEp0g==", - "optional": true, - "dependencies": { - "@improbable-eng/grpc-web": "^0.13.0", - "@textile/context": "^0.12.1", - "@textile/crypto": "^4.2.1", - "@textile/grpc-transport": "^0.5.1", - "@textile/multiaddr": "^0.6.1", - "@textile/security": "^0.9.1", - "@textile/threads-client-grpc": "^1.1.1", - "@textile/threads-id": "^0.6.1", - "@types/to-json-schema": "^0.2.0", - "fastestsmallesttextencoderdecoder": "^1.0.22", - "to-json-schema": "^0.2.5" - } - }, - "node_modules/@textile/threads-client-grpc": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@textile/threads-client-grpc/-/threads-client-grpc-1.1.1.tgz", - "integrity": "sha512-vdRD6hW90w1ys35AmeCy/DSQqASpu9oAP72zE8awLmB+MEUxHKclp4qRITgRAgRVczs/YpiksUBzqCNS9ekx6A==", - "optional": true, - "dependencies": { - "@improbable-eng/grpc-web": "^0.14.0", - "@types/google-protobuf": "^3.15.5", - "google-protobuf": "^3.17.3" - } - }, - "node_modules/@textile/threads-client-grpc/node_modules/@improbable-eng/grpc-web": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/@improbable-eng/grpc-web/-/grpc-web-0.14.1.tgz", - "integrity": "sha512-XaIYuunepPxoiGVLLHmlnVminUGzBTnXr8Wv7khzmLWbNw4TCwJKX09GSMJlKhu/TRk6gms0ySFxewaETSBqgw==", - "optional": true, - "dependencies": { - "browser-headers": "^0.4.1" - }, - "peerDependencies": { - "google-protobuf": "^3.14.0" - } - }, - "node_modules/@textile/threads-id": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@textile/threads-id/-/threads-id-0.6.1.tgz", - "integrity": "sha512-KwhbLjZ/eEquPorGgHFotw4g0bkKLTsqQmnsIxFeo+6C1mz40PQu4IOvJwohHr5GL6wedjlobry4Jj+uI3N+0w==", - "optional": true, - "dependencies": { - "@consento/sync-randombytes": "^1.0.4", - "multibase": "^3.1.0", - "varint": "^6.0.0" - } - }, - "node_modules/@textile/threads-id/node_modules/multibase": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-3.1.2.tgz", - "integrity": "sha512-bpklWHs70LO3smJUHOjcnzGceJJvn9ui0Vau6Za0B/GBepaXswmW8Ufea0uD9pROf/qCQ4N4lZ3sf3U+SNf0tw==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "@multiformats/base-x": "^4.0.1", - "web-encoding": "^1.0.6" - }, - "engines": { - "node": ">=10.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/@textile/threads-id/node_modules/varint": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", - "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", - "optional": true - }, - "node_modules/@textile/users": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/@textile/users/-/users-6.2.0.tgz", - "integrity": "sha512-uUQfKgsdBGKxSffnwwm1G8Je4sQ/Qvn2fTCMe83o3NFYhB3tOhv/gQSlsxd0TCyJnEyq7pH9EanuoCRNWe5Hcg==", - "optional": true, - "dependencies": { - "@improbable-eng/grpc-web": "^0.13.0", - "@textile/buckets-grpc": "2.6.6", - "@textile/context": "^0.12.1", - "@textile/crypto": "^4.2.1", - "@textile/grpc-authentication": "^3.4.1", - "@textile/grpc-connection": "^2.5.1", - "@textile/grpc-transport": "^0.5.1", - "@textile/hub-grpc": "2.6.6", - "@textile/hub-threads-client": "^5.5.0", - "@textile/security": "^0.9.1", - "@textile/threads-id": "^0.6.1", - "@textile/users-grpc": "2.6.6", - "event-iterator": "^2.0.0", - "loglevel": "^1.7.0" - } - }, - "node_modules/@textile/users-grpc": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/@textile/users-grpc/-/users-grpc-2.6.6.tgz", - "integrity": "sha512-pzI/jAWJx1/NqvSj03ukn2++aDNRdnyjwgbxh2drrsuxRZyCQEa1osBAA+SDkH5oeRf6dgxrc9dF8W1Ttjn0Yw==", - "optional": true, - "dependencies": { - "@improbable-eng/grpc-web": "^0.13.0", - "@types/google-protobuf": "^3.7.4", - "google-protobuf": "^3.13.0" - } - }, - "node_modules/@textile/users/node_modules/event-iterator": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/event-iterator/-/event-iterator-2.0.0.tgz", - "integrity": "sha512-KGft0ldl31BZVV//jj+IAIGCxkvvUkkON+ScH6zfoX+l+omX6001ggyRSpI0Io2Hlro0ThXotswCtfzS8UkIiQ==", - "optional": true - }, - "node_modules/@truffle/abi-utils": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@truffle/abi-utils/-/abi-utils-0.2.4.tgz", - "integrity": "sha512-ICr5Sger6r5uj2G5GN9Zp9OQDCaCqe2ZyAEyvavDoFB+jX0zZFUCfDnv5jllGRhgzdYJ3mec2390mjUyz9jSZA==", - "dependencies": { - "change-case": "3.0.2", - "faker": "^5.3.1", - "fast-check": "^2.12.1" - } - }, - "node_modules/@truffle/blockchain-utils": { - "version": "0.0.31", - "resolved": "https://registry.npmjs.org/@truffle/blockchain-utils/-/blockchain-utils-0.0.31.tgz", - "integrity": "sha512-BFo/nyxwhoHqPrqBQA1EAmSxeNnspGLiOCMa9pAL7WYSjyNBlrHaqCMO/F2O87G+NUK/u06E70DiSP2BFP0ZZw==" - }, - "node_modules/@truffle/code-utils": { - "version": "1.2.29", - "resolved": "https://registry.npmjs.org/@truffle/code-utils/-/code-utils-1.2.29.tgz", - "integrity": "sha512-BLNDjFLhDHCJjmdVSTObEgQDT3QFi1Yif20fDHt53kwjRH6T+MGcvaW8b9Yk8r3qpeFAYJrT2yEi02JBTr/hNg==", - "dependencies": { - "cbor": "^5.1.0" - } - }, - "node_modules/@truffle/codec": { - "version": "0.11.19", - "resolved": "https://registry.npmjs.org/@truffle/codec/-/codec-0.11.19.tgz", - "integrity": "sha512-ZxsfRWBE4wcQ01NCpMWH6VRJ/q3mGTl3ku8ln+WJ2P6McIMsS37imO3d8N9NWiQ49klc9kJfT3mKnOVMLTJhIg==", - "dependencies": { - "@truffle/abi-utils": "^0.2.4", - "@truffle/compile-common": "^0.7.22", - "big.js": "^5.2.2", - "bn.js": "^5.1.3", - "cbor": "^5.1.0", - "debug": "^4.3.1", - "lodash.clonedeep": "^4.5.0", - "lodash.escaperegexp": "^4.1.2", - "lodash.partition": "^4.6.0", - "lodash.sum": "^4.0.2", - "semver": "^7.3.4", - "utf8": "^3.0.0", - "web3-utils": "1.5.3" - } - }, - "node_modules/@truffle/codec/node_modules/eth-lib": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", - "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", - "dependencies": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "xhr-request-promise": "^0.1.2" - } - }, - "node_modules/@truffle/codec/node_modules/eth-lib/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/@truffle/codec/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@truffle/codec/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@truffle/codec/node_modules/web3-utils": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.5.3.tgz", - "integrity": "sha512-56nRgA+Ad9SEyCv39g36rTcr5fpsd4L9LgV3FK0aB66nAMazLAA6Qz4lH5XrUKPDyBIPGJIR+kJsyRtwcu2q1Q==", - "dependencies": { - "bn.js": "^4.11.9", - "eth-lib": "0.2.8", - "ethereum-bloom-filters": "^1.0.6", - "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/@truffle/codec/node_modules/web3-utils/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/@truffle/codec/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/@truffle/compile-common": { - "version": "0.7.22", - "resolved": "https://registry.npmjs.org/@truffle/compile-common/-/compile-common-0.7.22.tgz", - "integrity": "sha512-afFKh0Wphn8JrCSjOORKjO8/E1X0EtQv6GpFJpQCAWo3/i4VGcSVKR1rjkknnExtjEGe9PJH/Ym/opGH3pQyDw==", - "dependencies": { - "@truffle/error": "^0.0.14", - "colors": "^1.4.0" - } - }, - "node_modules/@truffle/config": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@truffle/config/-/config-1.3.6.tgz", - "integrity": "sha512-FuuBYoS7kg88hTYkfKK3sS3waPKbj/OtT2NwHMA2HENi5thwv4fHGwisTgwFtD7JvXYJhom336lxYkfGCA5sQA==", - "optional": true, - "dependencies": { - "@truffle/error": "^0.0.14", - "@truffle/events": "^0.0.14", - "@truffle/provider": "^0.2.39", - "configstore": "^4.0.0", - "find-up": "^2.1.0", - "lodash.assignin": "^4.2.0", - "lodash.merge": "^4.6.2", - "lodash.pick": "^4.4.0", - "module": "^1.2.5", - "original-require": "^1.0.1" - } - }, - "node_modules/@truffle/contract": { - "version": "4.3.40", - "resolved": "https://registry.npmjs.org/@truffle/contract/-/contract-4.3.40.tgz", - "integrity": "sha512-VRO1CrNT+pdsjWBu/F8dZw3pAdJrpSx9hogBkiJOvikrz3ZEQOYA9cAMC4Pl+677Q5Qd+4DSxEtB1ufjpSThIg==", - "dependencies": { - "@ensdomains/ensjs": "^2.0.1", - "@truffle/blockchain-utils": "^0.0.31", - "@truffle/contract-schema": "^3.4.3", - "@truffle/debug-utils": "^5.1.20", - "@truffle/error": "^0.0.14", - "@truffle/interface-adapter": "^0.5.8", - "bignumber.js": "^7.2.1", - "debug": "^4.3.1", - "ethers": "^4.0.32", - "web3": "1.5.3", - "web3-core-helpers": "1.5.3", - "web3-core-promievent": "1.5.3", - "web3-eth-abi": "1.5.3", - "web3-utils": "1.5.3" - } - }, - "node_modules/@truffle/contract-schema": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/@truffle/contract-schema/-/contract-schema-3.4.3.tgz", - "integrity": "sha512-pgaTgF4CKIpkqVYZVr2qGTxZZQOkNCWOXW9VQpKvLd4G0SNF2Y1gyhrFbBhoOUtYlbbSty+IEFFHsoAqpqlvpQ==", - "dependencies": { - "ajv": "^6.10.0", - "debug": "^4.3.1" - } - }, - "node_modules/@truffle/contract-sources": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/@truffle/contract-sources/-/contract-sources-0.1.12.tgz", - "integrity": "sha512-7OH8P+N4n2LewbNiVpuleshPqj8G7n9Qkd5ot79sZ/R6xIRyXF05iBtg3/IbjIzOeQCrCE9aYUHNe2go9RuM0g==", - "optional": true, - "dependencies": { - "debug": "^4.3.1", - "glob": "^7.1.6" - } - }, - "node_modules/@truffle/contract-sources/node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "optional": 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/@truffle/contract/node_modules/bignumber.js": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-7.2.1.tgz", - "integrity": "sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ==", - "engines": { - "node": "*" - } - }, - "node_modules/@truffle/contract/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/@truffle/contract/node_modules/eth-lib": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", - "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", - "dependencies": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "xhr-request-promise": "^0.1.2" - } - }, - "node_modules/@truffle/contract/node_modules/web3-core-helpers": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.5.3.tgz", - "integrity": "sha512-Ip1IjB3S8vN7Kf1PPjK41U5gskmMk6IJQlxIVuS8/1U7n/o0jC8krqtpRwiMfAgYyw3TXwBFtxSRTvJtnLyXZw==", - "dependencies": { - "web3-eth-iban": "1.5.3", - "web3-utils": "1.5.3" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/contract/node_modules/web3-core-promievent": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.5.3.tgz", - "integrity": "sha512-CFfgqvk3Vk6PIAxtLLuX+pOMozxkKCY+/GdGr7weMh033mDXEPvwyVjoSRO1PqIKj668/hMGQsVoIgbyxkJ9Mg==", - "dependencies": { - "eventemitter3": "4.0.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/contract/node_modules/web3-eth-abi": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.5.3.tgz", - "integrity": "sha512-i/qhuFsoNrnV130CSRYX/z4SlCfSQ4mHntti5yTmmQpt70xZKYZ57BsU0R29ueSQ9/P+aQrL2t2rqkQkAloUxg==", - "dependencies": { - "@ethersproject/abi": "5.0.7", - "web3-utils": "1.5.3" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/contract/node_modules/web3-eth-iban": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.5.3.tgz", - "integrity": "sha512-vMzmGqolYZvRHwP9P4Nf6G8uYM5aTLlQu2a34vz78p0KlDC+eV1th3+90Qeaupa28EG7OO0IT1F0BejiIauOPw==", - "dependencies": { - "bn.js": "^4.11.9", - "web3-utils": "1.5.3" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/contract/node_modules/web3-utils": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.5.3.tgz", - "integrity": "sha512-56nRgA+Ad9SEyCv39g36rTcr5fpsd4L9LgV3FK0aB66nAMazLAA6Qz4lH5XrUKPDyBIPGJIR+kJsyRtwcu2q1Q==", - "dependencies": { - "bn.js": "^4.11.9", - "eth-lib": "0.2.8", - "ethereum-bloom-filters": "^1.0.6", - "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/@truffle/db": { - "version": "0.5.30", - "resolved": "https://registry.npmjs.org/@truffle/db/-/db-0.5.30.tgz", - "integrity": "sha512-lRwKmnOHdCyBuBq1KkOGfl5N7gZ7eo+VMo7mmjUusydUC0MDWozVhvzdTtxDwiSGEfIyzPBOj8DMSrGXQ20IDQ==", - "optional": true, - "dependencies": { - "@truffle/abi-utils": "^0.2.4", - "@truffle/code-utils": "^1.2.29", - "@truffle/config": "^1.3.6", - "@truffle/resolver": "^7.0.28", - "apollo-server": "^2.18.2", - "debug": "^4.3.1", - "fs-extra": "^9.1.0", - "graphql": "^15.3.0", - "graphql-tag": "^2.11.0", - "graphql-tools": "^6.2.4", - "json-stable-stringify": "^1.0.1", - "jsondown": "^1.0.0", - "pascal-case": "^2.0.1", - "pluralize": "^8.0.0", - "pouchdb": "7.1.1", - "pouchdb-adapter-memory": "^7.1.1", - "pouchdb-adapter-node-websql": "^7.0.0", - "pouchdb-debug": "^7.1.1", - "pouchdb-find": "^7.0.0", - "web3-utils": "1.5.2" - } - }, - "node_modules/@truffle/db-loader": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/@truffle/db-loader/-/db-loader-0.0.9.tgz", - "integrity": "sha512-cYrTEc4APw3CDefOL7DBBblATTEcehhOm301suWV3OBxXUC8bPbF1LXbKOQP+rTeB63LKeq3RqN1WZApC8M9FQ==", - "optionalDependencies": { - "@truffle/db": "^0.5.30" - } - }, - "node_modules/@truffle/debug-utils": { - "version": "5.1.20", - "resolved": "https://registry.npmjs.org/@truffle/debug-utils/-/debug-utils-5.1.20.tgz", - "integrity": "sha512-ttbkDaNJJaVvIcfraK+KhSxA1A5LWNKTdGqVHxWaARPBIn6dxlzNa58Yp/bs6AhL5VWUraHeeyG4uKU/jgzgEA==", - "dependencies": { - "@truffle/codec": "^0.11.19", - "@trufflesuite/chromafi": "^2.2.2", - "bn.js": "^5.1.3", - "chalk": "^2.4.2", - "debug": "^4.3.1", - "highlightjs-solidity": "^2.0.2" - } - }, - "node_modules/@truffle/debugger": { - "version": "9.1.15", - "resolved": "https://registry.npmjs.org/@truffle/debugger/-/debugger-9.1.15.tgz", - "integrity": "sha512-ontw9F1NJnbOEmazQOvJRlb2etgyJFO3IqLh9ZXqsTdff8se9K6OGMbGIuhNj0ZSY0eWUnzk11rLB7tJgDSwyA==", - "dependencies": { - "@truffle/abi-utils": "^0.2.4", - "@truffle/codec": "^0.11.13", - "@truffle/source-map-utils": "^1.3.57", - "bn.js": "^5.1.3", - "debug": "^4.3.1", - "json-pointer": "^0.6.0", - "json-stable-stringify": "^1.0.1", - "lodash.flatten": "^4.4.0", - "lodash.merge": "^4.6.2", - "lodash.sum": "^4.0.2", - "lodash.zipwith": "^4.2.0", - "redux": "^3.7.2", - "redux-saga": "1.0.0", - "remote-redux-devtools": "^0.5.12", - "reselect-tree": "^1.3.4", - "semver": "^7.3.4", - "web3": "1.5.2", - "web3-eth-abi": "1.5.2" - } - }, - "node_modules/@truffle/debugger/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@truffle/debugger/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@truffle/debugger/node_modules/web3": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.5.2.tgz", - "integrity": "sha512-aapKLdO8t7Cos6tZLeeQUtCJvTiPMlLcHsHHDLSBZ/VaJEucSTxzun32M8sp3BmF4waDEmhY+iyUM1BKvtAcVQ==", - "hasInstallScript": true, - "dependencies": { - "web3-bzz": "1.5.2", - "web3-core": "1.5.2", - "web3-eth": "1.5.2", - "web3-eth-personal": "1.5.2", - "web3-net": "1.5.2", - "web3-shh": "1.5.2", - "web3-utils": "1.5.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/debugger/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/@truffle/error": { - "version": "0.0.14", - "resolved": "https://registry.npmjs.org/@truffle/error/-/error-0.0.14.tgz", - "integrity": "sha512-utJx+SZYoMqk8wldQG4gCVKhV8GwMJbWY7sLXFT/D8wWZTnE2peX7URFJh/cxkjTRCO328z1s2qewkhyVsu2HA==" - }, - "node_modules/@truffle/events": { - "version": "0.0.14", - "resolved": "https://registry.npmjs.org/@truffle/events/-/events-0.0.14.tgz", - "integrity": "sha512-lrWT+4tohj7IgK+RHrW1vzcMHUJnutW3Plqlp/STMarZBPXm38k9w2Q2qJm6BdsBd+ZRZLwBVZwkOgwTal5dew==", - "optional": true, - "dependencies": { - "emittery": "^0.4.1", - "ora": "^3.4.0" - } - }, - "node_modules/@truffle/expect": { - "version": "0.0.18", - "resolved": "https://registry.npmjs.org/@truffle/expect/-/expect-0.0.18.tgz", - "integrity": "sha512-ZcYladRCgwn3bbhK3jIORVHcUOBk/MXsUxjfzcw+uD+0H1Kodsvcw1AAIaqd5tlyFhdOb7YkOcH0kUES7F8d1A==", - "optional": true - }, - "node_modules/@truffle/hdwallet-provider": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@truffle/hdwallet-provider/-/hdwallet-provider-1.5.0.tgz", - "integrity": "sha512-nWgOBRT3ZCX7VAFVrDrWLvX405J502WlP5azmnWbM5r3fqDKUJlBdtHZTCGeiDKAT6twtpTUj6tO8mKmrjF8PA==", - "dev": true, - "dependencies": { - "@trufflesuite/web3-provider-engine": "15.0.13-1", - "eth-sig-util": "^3.0.1", - "ethereum-cryptography": "^0.1.3", - "ethereum-protocol": "^1.0.1", - "ethereumjs-common": "^1.5.0", - "ethereumjs-tx": "^2.1.2", - "ethereumjs-util": "^6.1.0", - "ethereumjs-wallet": "^1.0.1" - } - }, - "node_modules/@truffle/hdwallet-provider/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/@truffle/hdwallet-provider/node_modules/ethereumjs-util": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", - "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", - "dev": true, - "dependencies": { - "@types/bn.js": "^4.11.3", - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "0.1.6", - "rlp": "^2.2.3" - } - }, - "node_modules/@truffle/interface-adapter": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/@truffle/interface-adapter/-/interface-adapter-0.5.8.tgz", - "integrity": "sha512-vvy3xpq36oLgjjy8KE9l2Jabg3WcGPOt18tIyMfTQX9MFnbHoQA2Ne2i8xsd4p6KfxIqSjAB53Q9/nScAqY0UQ==", - "dependencies": { - "bn.js": "^5.1.3", - "ethers": "^4.0.32", - "web3": "1.5.3" - } - }, - "node_modules/@truffle/preserve": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@truffle/preserve/-/preserve-0.2.4.tgz", - "integrity": "sha512-rMJQr/uvBIpT23uGM9RLqZKwIIR2CyeggVOTuN2UHHljSsxHWcvRCkNZCj/AA3wH3GSOQzCrbYBcs0d/RF6E1A==", - "optional": true, - "dependencies": { - "spinnies": "^0.5.1" - } - }, - "node_modules/@truffle/preserve-fs": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@truffle/preserve-fs/-/preserve-fs-0.2.4.tgz", - "integrity": "sha512-dGHPWw40PpSMZSWTTCrv+wq5vQuSh2Cy1ABdhQOqMkw7F5so4mdLZdgh956em2fLbTx5NwaEV7dwLu2lYM+xwA==", - "optional": true, - "dependencies": { - "@truffle/preserve": "^0.2.4" - } - }, - "node_modules/@truffle/preserve-to-buckets": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@truffle/preserve-to-buckets/-/preserve-to-buckets-0.2.4.tgz", - "integrity": "sha512-C3NBOY7BK55mURBLrYxUqhz57Mz23Q9ePj+A0J4sJnmWJIsjfzuc2gozXkrzFK5od5Rg786NIoXxPxkb2E0tsA==", - "optional": true, - "dependencies": { - "@textile/hub": "^6.0.2", - "@truffle/preserve": "^0.2.4", - "cids": "^1.1.5", - "ipfs-http-client": "^48.2.2", - "isomorphic-ws": "^4.0.1", - "iter-tools": "^7.0.2", - "ws": "^7.4.3" - } - }, - "node_modules/@truffle/preserve-to-buckets/node_modules/cids": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/cids/-/cids-1.1.9.tgz", - "integrity": "sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "multibase": "^4.0.1", - "multicodec": "^3.0.1", - "multihashes": "^4.0.1", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=4.0.0", - "npm": ">=3.0.0" - } - }, - "node_modules/@truffle/preserve-to-buckets/node_modules/multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "@multiformats/base-x": "^4.0.1" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/@truffle/preserve-to-buckets/node_modules/multicodec": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-3.2.1.tgz", - "integrity": "sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - } - }, - "node_modules/@truffle/preserve-to-buckets/node_modules/multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", - "optional": true, - "dependencies": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/@truffle/preserve-to-buckets/node_modules/multihashes/node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==", - "optional": true - }, - "node_modules/@truffle/preserve-to-buckets/node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "optional": true, - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/@truffle/preserve-to-buckets/node_modules/varint": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", - "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", - "optional": true - }, - "node_modules/@truffle/preserve-to-buckets/node_modules/ws": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", - "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", - "optional": true, - "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/@truffle/preserve-to-filecoin": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@truffle/preserve-to-filecoin/-/preserve-to-filecoin-0.2.4.tgz", - "integrity": "sha512-kUzvSUCfpH0gcLxOM8eaYy5dPuJYh/wBpjU5bEkCcrx1HQWr73fR3slS8cO5PNqaxkDvm8RDlh7Lha2JTLp4rw==", - "optional": true, - "dependencies": { - "@truffle/preserve": "^0.2.4", - "cids": "^1.1.5", - "delay": "^5.0.0", - "filecoin.js": "^0.0.5-alpha" - } - }, - "node_modules/@truffle/preserve-to-filecoin/node_modules/cids": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/cids/-/cids-1.1.9.tgz", - "integrity": "sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "multibase": "^4.0.1", - "multicodec": "^3.0.1", - "multihashes": "^4.0.1", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=4.0.0", - "npm": ">=3.0.0" - } - }, - "node_modules/@truffle/preserve-to-filecoin/node_modules/multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "@multiformats/base-x": "^4.0.1" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/@truffle/preserve-to-filecoin/node_modules/multicodec": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-3.2.1.tgz", - "integrity": "sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - } - }, - "node_modules/@truffle/preserve-to-filecoin/node_modules/multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", - "optional": true, - "dependencies": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/@truffle/preserve-to-filecoin/node_modules/multihashes/node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==", - "optional": true - }, - "node_modules/@truffle/preserve-to-filecoin/node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "optional": true, - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/@truffle/preserve-to-filecoin/node_modules/varint": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", - "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", - "optional": true - }, - "node_modules/@truffle/preserve-to-ipfs": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@truffle/preserve-to-ipfs/-/preserve-to-ipfs-0.2.4.tgz", - "integrity": "sha512-17gEBhYcS1Qx/FAfOrlyyKJ74HLYm4xROtHwqRvV9MoDI1k3w/xcL+odRrl5H15NX8vNFOukAI7cGe0NPjQHvQ==", - "optional": true, - "dependencies": { - "@truffle/preserve": "^0.2.4", - "ipfs-http-client": "^48.2.2", - "iter-tools": "^7.0.2" - } - }, - "node_modules/@truffle/provider": { - "version": "0.2.39", - "resolved": "https://registry.npmjs.org/@truffle/provider/-/provider-0.2.39.tgz", - "integrity": "sha512-svL1u/BtPyteZbYnngxVBvYHkesTRLFYXdklDJT2S+X4jy8dmHRZIUdM6SL4SOrDPICiEnnp1fczsVWEqrEdig==", - "optional": true, - "dependencies": { - "@truffle/error": "^0.0.14", - "@truffle/interface-adapter": "^0.5.5", - "web3": "1.5.2" - } - }, - "node_modules/@truffle/provider/node_modules/web3": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.5.2.tgz", - "integrity": "sha512-aapKLdO8t7Cos6tZLeeQUtCJvTiPMlLcHsHHDLSBZ/VaJEucSTxzun32M8sp3BmF4waDEmhY+iyUM1BKvtAcVQ==", - "hasInstallScript": true, - "optional": true, - "dependencies": { - "web3-bzz": "1.5.2", - "web3-core": "1.5.2", - "web3-eth": "1.5.2", - "web3-eth-personal": "1.5.2", - "web3-net": "1.5.2", - "web3-shh": "1.5.2", - "web3-utils": "1.5.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@truffle/provisioner": { - "version": "0.2.29", - "resolved": "https://registry.npmjs.org/@truffle/provisioner/-/provisioner-0.2.29.tgz", - "integrity": "sha512-fyoZ99aUigme0mKAxSQMLg2W7QIObVS1QnLhvWqBN0TBiaLPknvwvxfdGsOsr3cteDDzT/dYu3NVviQXxMwrmA==", - "optional": true, - "dependencies": { - "@truffle/config": "^1.3.6" - } - }, - "node_modules/@truffle/resolver": { - "version": "7.0.28", - "resolved": "https://registry.npmjs.org/@truffle/resolver/-/resolver-7.0.28.tgz", - "integrity": "sha512-f5qy0wI6bNmKvpAyDXP+yuhvhEUsPzcax5XfQPi8iO2sS2BAlXLMmJICmKtU8rOiyEsBfNDwysHAYr16GNIiUw==", - "optional": true, - "dependencies": { - "@truffle/contract": "^4.3.34", - "@truffle/contract-sources": "^0.1.12", - "@truffle/expect": "^0.0.18", - "@truffle/provisioner": "^0.2.29", - "abi-to-sol": "^0.2.0", - "debug": "^4.3.1", - "detect-installed": "^2.0.4", - "get-installed-path": "^4.0.8", - "glob": "^7.1.6" - } - }, - "node_modules/@truffle/resolver/node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "optional": 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/@truffle/source-map-utils": { - "version": "1.3.57", - "resolved": "https://registry.npmjs.org/@truffle/source-map-utils/-/source-map-utils-1.3.57.tgz", - "integrity": "sha512-cDiIzCdqhCaK6DRWtYau5MwqDpnz+n2JCsNa3AWkE3Jo5t8zuhEja7yqt4WZcrxMrDZiRHv3p1hK0TYHHiv1Hw==", - "dependencies": { - "@truffle/code-utils": "^1.2.29", - "@truffle/codec": "^0.11.13", - "debug": "^4.3.1", - "json-pointer": "^0.6.0", - "node-interval-tree": "^1.3.3", - "web3-utils": "1.5.2" - } - }, - "node_modules/@trufflesuite/chromafi": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@trufflesuite/chromafi/-/chromafi-2.2.2.tgz", - "integrity": "sha512-mItQwVBsb8qP/vaYHQ1kDt2vJLhjoEXJptT6y6fJGvFophMFhOI/NsTVUa0nJL1nyMeFiS6hSYuNVdpQZzB1gA==", - "dependencies": { - "ansi-mark": "^1.0.0", - "ansi-regex": "^3.0.0", - "array-uniq": "^1.0.3", - "camelcase": "^4.1.0", - "chalk": "^2.3.2", - "cheerio": "^1.0.0-rc.2", - "detect-indent": "^5.0.0", - "he": "^1.1.1", - "highlight.js": "^10.4.1", - "lodash.merge": "^4.6.2", - "min-indent": "^1.0.0", - "strip-ansi": "^4.0.0", - "strip-indent": "^2.0.0", - "super-split": "^1.1.0" - } - }, - "node_modules/@trufflesuite/chromafi/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "engines": { - "node": ">=4" - } - }, - "node_modules/@trufflesuite/chromafi/node_modules/camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "engines": { - "node": ">=4" - } - }, - "node_modules/@trufflesuite/chromafi/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@trufflesuite/eth-json-rpc-filters": { - "version": "4.1.2-1", - "resolved": "https://registry.npmjs.org/@trufflesuite/eth-json-rpc-filters/-/eth-json-rpc-filters-4.1.2-1.tgz", - "integrity": "sha512-/MChvC5dw2ck9NU1cZmdovCz2VKbOeIyR4tcxDvA5sT+NaL0rA2/R5U0yI7zsbo1zD+pgqav77rQHTzpUdDNJQ==", - "dev": true, - "dependencies": { - "@trufflesuite/eth-json-rpc-middleware": "^4.4.2-0", - "await-semaphore": "^0.1.3", - "eth-query": "^2.1.2", - "json-rpc-engine": "^5.1.3", - "lodash.flatmap": "^4.5.0", - "safe-event-emitter": "^1.0.1" - } - }, - "node_modules/@trufflesuite/eth-json-rpc-infura": { - "version": "4.0.3-0", - "resolved": "https://registry.npmjs.org/@trufflesuite/eth-json-rpc-infura/-/eth-json-rpc-infura-4.0.3-0.tgz", - "integrity": "sha512-xaUanOmo0YLqRsL0SfXpFienhdw5bpQ1WEXxMTRi57az4lwpZBv4tFUDvcerdwJrxX9wQqNmgUgd1BrR01dumw==", - "dev": true, - "dependencies": { - "@trufflesuite/eth-json-rpc-middleware": "^4.4.2-1", - "cross-fetch": "^2.1.1", - "eth-json-rpc-errors": "^1.0.1", - "json-rpc-engine": "^5.1.3" - } - }, - "node_modules/@trufflesuite/eth-json-rpc-infura/node_modules/cross-fetch": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.5.tgz", - "integrity": "sha512-xqYAhQb4NhCJSRym03dwxpP1bYXpK3y7UN83Bo2WFi3x1Zmzn0SL/6xGoPr+gpt4WmNrgCCX3HPysvOwFOW36w==", - "dev": true, - "dependencies": { - "node-fetch": "2.6.1", - "whatwg-fetch": "2.0.4" - } - }, - "node_modules/@trufflesuite/eth-json-rpc-infura/node_modules/eth-json-rpc-errors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/eth-json-rpc-errors/-/eth-json-rpc-errors-1.1.1.tgz", - "integrity": "sha512-WT5shJ5KfNqHi9jOZD+ID8I1kuYWNrigtZat7GOQkvwo99f8SzAVaEcWhJUv656WiZOAg3P1RiJQANtUmDmbIg==", - "deprecated": "Package renamed: https://www.npmjs.com/package/eth-rpc-errors", - "dev": true, - "dependencies": { - "fast-safe-stringify": "^2.0.6" - } - }, - "node_modules/@trufflesuite/eth-json-rpc-infura/node_modules/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "dev": true, - "engines": { - "node": "4.x || >=6.0.0" - } - }, - "node_modules/@trufflesuite/eth-json-rpc-middleware": { - "version": "4.4.2-1", - "resolved": "https://registry.npmjs.org/@trufflesuite/eth-json-rpc-middleware/-/eth-json-rpc-middleware-4.4.2-1.tgz", - "integrity": "sha512-iEy9H8ja7/8aYES5HfrepGBKU9n/Y4OabBJEklVd/zIBlhCCBAWBqkIZgXt11nBXO/rYAeKwYuE3puH3ByYnLA==", - "dev": true, - "dependencies": { - "@trufflesuite/eth-sig-util": "^1.4.2", - "btoa": "^1.2.1", - "clone": "^2.1.1", - "eth-json-rpc-errors": "^1.0.1", - "eth-query": "^2.1.2", - "ethereumjs-block": "^1.6.0", - "ethereumjs-tx": "^1.3.7", - "ethereumjs-util": "^5.1.2", - "ethereumjs-vm": "^2.6.0", - "fetch-ponyfill": "^4.0.0", - "json-rpc-engine": "^5.1.3", - "json-stable-stringify": "^1.0.1", - "pify": "^3.0.0", - "safe-event-emitter": "^1.0.1" - } - }, - "node_modules/@trufflesuite/eth-json-rpc-middleware/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/@trufflesuite/eth-json-rpc-middleware/node_modules/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/@trufflesuite/eth-json-rpc-middleware/node_modules/eth-json-rpc-errors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/eth-json-rpc-errors/-/eth-json-rpc-errors-1.1.1.tgz", - "integrity": "sha512-WT5shJ5KfNqHi9jOZD+ID8I1kuYWNrigtZat7GOQkvwo99f8SzAVaEcWhJUv656WiZOAg3P1RiJQANtUmDmbIg==", - "deprecated": "Package renamed: https://www.npmjs.com/package/eth-rpc-errors", - "dev": true, - "dependencies": { - "fast-safe-stringify": "^2.0.6" - } - }, - "node_modules/@trufflesuite/eth-json-rpc-middleware/node_modules/ethereum-common": { - "version": "0.0.18", - "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz", - "integrity": "sha1-L9w1dvIykDNYl26znaeDIT/5Uj8=", - "dev": true - }, - "node_modules/@trufflesuite/eth-json-rpc-middleware/node_modules/ethereumjs-tx": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz", - "integrity": "sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==", - "deprecated": "New package name format for new versions: @ethereumjs/tx. Please update.", - "dev": true, - "dependencies": { - "ethereum-common": "^0.0.18", - "ethereumjs-util": "^5.0.0" - } - }, - "node_modules/@trufflesuite/eth-json-rpc-middleware/node_modules/ethereumjs-util": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", - "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "^0.1.3", - "rlp": "^2.0.0", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/@trufflesuite/eth-sig-util": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@trufflesuite/eth-sig-util/-/eth-sig-util-1.4.2.tgz", - "integrity": "sha512-+GyfN6b0LNW77hbQlH3ufZ/1eCON7mMrGym6tdYf7xiNw9Vv3jBO72bmmos1EId2NgBvPMhmYYm6DSLQFTmzrA==", - "dev": true, - "dependencies": { - "ethereumjs-abi": "^0.6.8", - "ethereumjs-util": "^5.1.1" - } - }, - "node_modules/@trufflesuite/eth-sig-util/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/@trufflesuite/eth-sig-util/node_modules/ethereumjs-util": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", - "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "^0.1.3", - "rlp": "^2.0.0", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/@trufflesuite/web3-provider-engine": { - "version": "15.0.13-1", - "resolved": "https://registry.npmjs.org/@trufflesuite/web3-provider-engine/-/web3-provider-engine-15.0.13-1.tgz", - "integrity": "sha512-6u3x/iIN5fyj8pib5QTUDmIOUiwAGhaqdSTXdqCu6v9zo2BEwdCqgEJd1uXDh3DBmPRDfiZ/ge8oUPy7LerpHg==", - "dev": true, - "dependencies": { - "@trufflesuite/eth-json-rpc-filters": "^4.1.2-1", - "@trufflesuite/eth-json-rpc-infura": "^4.0.3-0", - "@trufflesuite/eth-json-rpc-middleware": "^4.4.2-1", - "@trufflesuite/eth-sig-util": "^1.4.2", - "async": "^2.5.0", - "backoff": "^2.5.0", - "clone": "^2.0.0", - "cross-fetch": "^2.1.0", - "eth-block-tracker": "^4.4.2", - "eth-json-rpc-errors": "^2.0.2", - "ethereumjs-block": "^1.2.2", - "ethereumjs-tx": "^1.2.0", - "ethereumjs-util": "^5.1.5", - "ethereumjs-vm": "^2.3.4", - "json-stable-stringify": "^1.0.1", - "promise-to-callback": "^1.0.0", - "readable-stream": "^2.2.9", - "request": "^2.85.0", - "semaphore": "^1.0.3", - "ws": "^5.1.1", - "xhr": "^2.2.0", - "xtend": "^4.0.1" - } - }, - "node_modules/@trufflesuite/web3-provider-engine/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/@trufflesuite/web3-provider-engine/node_modules/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/@trufflesuite/web3-provider-engine/node_modules/cross-fetch": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-2.2.5.tgz", - "integrity": "sha512-xqYAhQb4NhCJSRym03dwxpP1bYXpK3y7UN83Bo2WFi3x1Zmzn0SL/6xGoPr+gpt4WmNrgCCX3HPysvOwFOW36w==", - "dev": true, - "dependencies": { - "node-fetch": "2.6.1", - "whatwg-fetch": "2.0.4" - } - }, - "node_modules/@trufflesuite/web3-provider-engine/node_modules/ethereum-common": { - "version": "0.0.18", - "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz", - "integrity": "sha1-L9w1dvIykDNYl26znaeDIT/5Uj8=", - "dev": true - }, - "node_modules/@trufflesuite/web3-provider-engine/node_modules/ethereumjs-tx": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz", - "integrity": "sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==", - "deprecated": "New package name format for new versions: @ethereumjs/tx. Please update.", - "dev": true, - "dependencies": { - "ethereum-common": "^0.0.18", - "ethereumjs-util": "^5.0.0" - } - }, - "node_modules/@trufflesuite/web3-provider-engine/node_modules/ethereumjs-util": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", - "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "^0.1.3", - "rlp": "^2.0.0", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/@trufflesuite/web3-provider-engine/node_modules/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "dev": true, - "engines": { - "node": "4.x || >=6.0.0" - } - }, - "node_modules/@trufflesuite/web3-provider-engine/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 - }, - "node_modules/@trufflesuite/web3-provider-engine/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": 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/@trufflesuite/web3-provider-engine/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, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/@trufflesuite/web3-provider-engine/node_modules/ws": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz", - "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==", - "dev": true, - "dependencies": { - "async-limiter": "~1.0.0" - } - }, - "node_modules/@types/accepts": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", - "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.1.tgz", - "integrity": "sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg==", - "optional": true, - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "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, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-0mPF08jn9zYI0n0Q/Pnz7C4kThdSt+6LD4amsrYDDpgBfrVWa3TcCOxKX1zkGgYniGagRv8heN2cbh+CAn+uuQ==", - "optional": true - }, - "node_modules/@types/cookies": { - "version": "0.7.7", - "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.7.tgz", - "integrity": "sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==", - "optional": true, - "dependencies": { - "@types/connect": "*", - "@types/express": "*", - "@types/keygrip": "*", - "@types/node": "*" - } - }, - "node_modules/@types/cors": { - "version": "2.8.10", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz", - "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==", - "optional": true - }, - "node_modules/@types/ed2curve": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@types/ed2curve/-/ed2curve-0.2.2.tgz", - "integrity": "sha512-G1sTX5xo91ydevQPINbL2nfgVAj/s1ZiqZxC8OCWduwu+edoNGUm5JXtTkg9F3LsBZbRI46/0HES4CPUE2wc9g==", - "optional": true, - "dependencies": { - "tweetnacl": "^1.0.0" - } - }, - "node_modules/@types/ed2curve/node_modules/tweetnacl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", - "optional": true - }, - "node_modules/@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", - "optional": true, - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.17.24", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.24.tgz", - "integrity": "sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA==", - "optional": true, - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "node_modules/@types/form-data": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz", - "integrity": "sha1-yayFsqX9GENbjIXZ7LUObWyJP/g=", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/fs-capacitor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/fs-capacitor/-/fs-capacitor-2.0.0.tgz", - "integrity": "sha512-FKVPOCFbhCvZxpVAMhdBdTfVfXUpsh15wFHgqOKxh9N9vzWZVuWCSijZ5T4U34XYNnuj2oduh6xcs1i+LPI+BQ==", - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/google-protobuf": { - "version": "3.15.5", - "resolved": "https://registry.npmjs.org/@types/google-protobuf/-/google-protobuf-3.15.5.tgz", - "integrity": "sha512-6bgv24B+A2bo9AfzReeg5StdiijKzwwnRflA8RLd1V4Yv995LeTmo0z69/MPbBDFSiZWdZHQygLo/ccXhMEDgw==", - "optional": true - }, - "node_modules/@types/http-assert": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz", - "integrity": "sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA==", - "optional": true - }, - "node_modules/@types/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-e+2rjEwK6KDaNOm5Aa9wNGgyS9oSZU/4pfSMMPYNOfjvFI0WVXm29+ITRFr6aKDvvKo7uU1jV68MW4ScsfDi7Q==", - "optional": true - }, - "node_modules/@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", - "optional": true - }, - "node_modules/@types/keygrip": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz", - "integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==", - "optional": true - }, - "node_modules/@types/koa": { - "version": "2.13.4", - "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.4.tgz", - "integrity": "sha512-dfHYMfU+z/vKtQB7NUrthdAEiSvnLebvBjwHtfFmpZmB7em2N3WVQdHgnFq+xvyVgxW5jKDmjWfLD3lw4g4uTw==", - "optional": true, - "dependencies": { - "@types/accepts": "*", - "@types/content-disposition": "*", - "@types/cookies": "*", - "@types/http-assert": "*", - "@types/http-errors": "*", - "@types/keygrip": "*", - "@types/koa-compose": "*", - "@types/node": "*" - } - }, - "node_modules/@types/koa-compose": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz", - "integrity": "sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==", - "optional": true, - "dependencies": { - "@types/koa": "*" - } - }, - "node_modules/@types/long": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.1.tgz", - "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==", - "optional": true - }, - "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "optional": true - }, - "node_modules/@types/node": { - "version": "12.20.25", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.25.tgz", - "integrity": "sha512-hcTWqk7DR/HrN9Xe7AlJwuCaL13Vcd9/g/T54YrJz4Q3ESM5mr33YCzW2bOfzSIc3aZMeGBvbLGvgN6mIJ0I5Q==" - }, - "node_modules/@types/pbkdf2": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", - "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "devOptional": true - }, - "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "optional": true - }, - "node_modules/@types/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", - "optional": true, - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/to-json-schema": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@types/to-json-schema/-/to-json-schema-0.2.1.tgz", - "integrity": "sha512-DlvjodmdSrih054SrUqgS3bIZ93allrfbzjFUFmUhAtC60O+B/doLfgB8stafkEFyrU/zXWtPlX/V1H94iKv/A==", - "optional": true, - "dependencies": { - "@types/json-schema": "*" - } - }, - "node_modules/@types/websocket": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/websocket/-/websocket-1.0.2.tgz", - "integrity": "sha512-B5m9aq7cbbD/5/jThEr33nUY8WEfVi6A2YKCTOvw5Ldy7mtsOkqRvGjnzy6g7iMMDsgu7xREuCzqATLDLQVKcQ==", - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/ws": { - "version": "7.4.7", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", - "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/zen-observable": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/@types/zen-observable/-/zen-observable-0.8.3.tgz", - "integrity": "sha512-fbF6oTd4sGGy0xjHPKAt+eS2CrxJ3+6gQ3FGcBoIJR2TLAyCkCyI8JqZNy+FeON0AhVgNJoUumVoZQjBFUqHkw==", - "optional": true - }, - "node_modules/@wry/context": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.6.1.tgz", - "integrity": "sha512-LOmVnY1iTU2D8tv4Xf6MVMZZ+juIJ87Kt/plMijjN20NMAXGmH4u8bS1t0uT74cZ5gwpocYueV58YwyI8y+GKw==", - "optional": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@wry/equality": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.1.11.tgz", - "integrity": "sha512-mwEVBDUVODlsQQ5dfuLUS5/Tf7jqUKyhKYHmVi4fPB6bDMOfWvUPJmKgS1Z7Za/sOI3vzWt4+O7yCiL/70MogA==", - "optional": true, - "dependencies": { - "tslib": "^1.9.3" - } - }, - "node_modules/@wry/equality/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "optional": true - }, - "node_modules/@wry/trie": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.3.1.tgz", - "integrity": "sha512-WwB53ikYudh9pIorgxrkHKrQZcCqNM/Q/bDzZBffEaGUKGuHrRb3zZUT9Sh2qw9yogC7SsdRmQ1ER0pqvd3bfw==", - "optional": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@zondax/filecoin-signing-tools": { - "version": "0.2.0", - "resolved": "git+ssh://git@github.com/Digital-MOB-Filecoin/filecoin-signing-tools-js.git#8f8e92157cac2556d35cab866779e9a8ea8a4e25", - "integrity": "sha512-u1sHMBQXGiGHv8S3LkdKs0mH1erEbD4QoHWwCZns0BuQaKlpxbdxN8ikHCQOBPT6FzSHadwhf3cTSWxVl3DGig==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "axios": "^0.20.0", - "base32-decode": "^1.0.0", - "base32-encode": "^1.1.1", - "bip32": "^2.0.5", - "bip39": "^3.0.2", - "blakejs": "^1.1.0", - "bn.js": "^5.1.2", - "ipld-dag-cbor": "^0.17.0", - "leb128": "0.0.5", - "secp256k1": "^4.0.1" - } - }, - "node_modules/@zxing/text-encoding": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz", - "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==", - "optional": true - }, - "node_modules/101": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/101/-/101-1.6.3.tgz", - "integrity": "sha512-4dmQ45yY0Dx24Qxp+zAsNLlMF6tteCyfVzgbulvSyC7tCyd3V8sW76sS0tHq8NpcbXfWTKasfyfzU1Kd86oKzw==", - "optional": true, - "dependencies": { - "clone": "^1.0.2", - "deep-eql": "^0.1.3", - "keypather": "^1.10.2" - } - }, - "node_modules/abab": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.4.tgz", - "integrity": "sha1-X6rZwsB/YN12dw9xzwJbYqY8/U4=", - "optional": true - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "optional": true - }, - "node_modules/abi-to-sol": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/abi-to-sol/-/abi-to-sol-0.2.1.tgz", - "integrity": "sha512-zJPxaymTHQx/Edpy3NELGseGuDrFPVVzwRvIyxu37ZgRsItHoaxLQeGuOxYNxJPNuc030D6S6evmw0yCCtn+1A==", - "optional": true, - "dependencies": { - "@truffle/abi-utils": "^0.1.0", - "@truffle/codec": "^0.7.1", - "@truffle/contract-schema": "^3.3.1", - "ajv": "^6.12.5", - "better-ajv-errors": "^0.6.7", - "neodoc": "^2.0.2", - "prettier": "^2.1.2", - "prettier-plugin-solidity": "^1.0.0-alpha.59", - "source-map-support": "^0.5.19" - }, - "bin": { - "abi-to-sol": "dist/bin/abi-to-sol.js" - } - }, - "node_modules/abi-to-sol/node_modules/@truffle/abi-utils": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@truffle/abi-utils/-/abi-utils-0.1.6.tgz", - "integrity": "sha512-A9bW5XHywPNHod8rsu4x4eyM4C6k3eMeyOCd47edhiA/e9kgAVp6J3QDzKoHS8nuJ2qiaq+jk5bLnAgNWAHYyQ==", - "optional": true, - "dependencies": { - "change-case": "3.0.2", - "faker": "^5.3.1", - "fast-check": "^2.12.1" - } - }, - "node_modules/abi-to-sol/node_modules/@truffle/codec": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@truffle/codec/-/codec-0.7.1.tgz", - "integrity": "sha512-mNd6KnW6J0UB1zafGBXDlTEbCMvWpmPAJmzv7aF/nAIaN/F8UePSCiQ1OTQP39Rprj6GFiCCaWVnBAwum6UGSg==", - "optional": true, - "dependencies": { - "big.js": "^5.2.2", - "bn.js": "^4.11.8", - "borc": "^2.1.2", - "debug": "^4.1.0", - "lodash.clonedeep": "^4.5.0", - "lodash.escaperegexp": "^4.1.2", - "lodash.partition": "^4.6.0", - "lodash.sum": "^4.0.2", - "semver": "^6.3.0", - "source-map-support": "^0.5.19", - "utf8": "^3.0.0", - "web3-utils": "1.2.9" - } - }, - "node_modules/abi-to-sol/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "optional": true - }, - "node_modules/abi-to-sol/node_modules/eth-lib": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.7.tgz", - "integrity": "sha1-L5Pxex4jrsN1nNSj/iDBKGo/wco=", - "optional": true, - "dependencies": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "xhr-request-promise": "^0.1.2" - } - }, - "node_modules/abi-to-sol/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "optional": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/abi-to-sol/node_modules/web3-utils": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.2.9.tgz", - "integrity": "sha512-9hcpuis3n/LxFzEVjwnVgvJzTirS2S9/MiNAa7l4WOEoywY+BSNwnRX4MuHnjkh9NY25B6QOjuNG6FNnSjTw1w==", - "optional": true, - "dependencies": { - "bn.js": "4.11.8", - "eth-lib": "0.2.7", - "ethereum-bloom-filters": "^1.0.6", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "underscore": "1.9.1", - "utf8": "3.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/abi-to-sol/node_modules/web3-utils/node_modules/bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", - "optional": true - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "optional": true, - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/abstract-leveldown": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz", - "integrity": "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==", - "devOptional": true, - "dependencies": { - "xtend": "~4.0.0" - } - }, - "node_modules/accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "dependencies": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", - "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-dynamic-import": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz", - "integrity": "sha1-x1K9IQvvZ5UBtsbLf8hPj0cVjMQ=", - "dependencies": { - "acorn": "^4.0.3" - } - }, - "node_modules/acorn-globals": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.9.tgz", - "integrity": "sha1-VbtemGkVB7dFedBRNBMhfDgMVM8=", - "optional": true, - "dependencies": { - "acorn": "^2.1.0" - } - }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz", - "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=", - "optional": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/aes-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0=" - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "dependencies": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-mark": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/ansi-mark/-/ansi-mark-1.0.4.tgz", - "integrity": "sha1-HNS6jVfxXxCdaq9uycqXhsik7mw=", - "dependencies": { - "ansi-regex": "^3.0.0", - "array-uniq": "^1.0.3", - "chalk": "^2.3.2", - "strip-ansi": "^4.0.0", - "super-split": "^1.1.0" - } - }, - "node_modules/ansi-mark/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "engines": { - "node": ">=4" - } - }, - "node_modules/ansi-mark/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "engines": { - "node": ">=6" - } - }, - "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==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "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==", - "optional": true - }, - "node_modules/any-signal": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/any-signal/-/any-signal-2.1.2.tgz", - "integrity": "sha512-B+rDnWasMi/eWcajPcCWSlYc7muXOrcYrqgyzcdKisl2H/WTlQ0gip1KyQfr0ZlxJdsuWCj/LWwQm7fhyhRfIQ==", - "optional": true, - "dependencies": { - "abort-controller": "^3.0.0", - "native-abort-controller": "^1.0.3" - } - }, - "node_modules/any-signal/node_modules/native-abort-controller": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/native-abort-controller/-/native-abort-controller-1.0.3.tgz", - "integrity": "sha512-fd5LY5q06mHKZPD5FmMrn7Lkd2H018oBGKNOAdLpctBDEPFKsfJ1nX9ke+XRa8PEJJpjqrpQkGjq2IZ27QNmYA==", - "optional": true, - "peerDependencies": { - "abort-controller": "*" - } - }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/anymatch/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==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/apollo-cache-control": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/apollo-cache-control/-/apollo-cache-control-0.14.0.tgz", - "integrity": "sha512-qN4BCq90egQrgNnTRMUHikLZZAprf3gbm8rC5Vwmc6ZdLolQ7bFsa769Hqi6Tq/lS31KLsXBLTOsRbfPHph12w==", - "deprecated": "The functionality provided by the `apollo-cache-control` package is built in to `apollo-server-core` starting with Apollo Server 3. See https://www.apollographql.com/docs/apollo-server/migration/#cachecontrol for details.", - "optional": true, - "dependencies": { - "apollo-server-env": "^3.1.0", - "apollo-server-plugin-base": "^0.13.0" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependencies": { - "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-datasource": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-0.9.0.tgz", - "integrity": "sha512-y8H99NExU1Sk4TvcaUxTdzfq2SZo6uSj5dyh75XSQvbpH6gdAXIW9MaBcvlNC7n0cVPsidHmOcHOWxJ/pTXGjA==", - "optional": true, - "dependencies": { - "apollo-server-caching": "^0.7.0", - "apollo-server-env": "^3.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/apollo-graphql": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/apollo-graphql/-/apollo-graphql-0.9.3.tgz", - "integrity": "sha512-rcAl2E841Iko4kSzj4Pt3PRBitmyq1MvoEmpl04TQSpGnoVgl1E/ZXuLBYxMTSnEAm7umn2IsoY+c6Ll9U/10A==", - "optional": true, - "dependencies": { - "core-js-pure": "^3.10.2", - "lodash.sortby": "^4.7.0", - "sha.js": "^2.4.11" - }, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "graphql": "^14.2.1 || ^15.0.0" - } - }, - "node_modules/apollo-link": { - "version": "1.2.14", - "resolved": "https://registry.npmjs.org/apollo-link/-/apollo-link-1.2.14.tgz", - "integrity": "sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg==", - "optional": true, - "dependencies": { - "apollo-utilities": "^1.3.0", - "ts-invariant": "^0.4.0", - "tslib": "^1.9.3", - "zen-observable-ts": "^0.8.21" - }, - "peerDependencies": { - "graphql": "^0.11.3 || ^0.12.3 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-link/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "optional": true - }, - "node_modules/apollo-reporting-protobuf": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-0.8.0.tgz", - "integrity": "sha512-B3XmnkH6Y458iV6OsA7AhfwvTgeZnFq9nPVjbxmLKnvfkEl8hYADtz724uPa0WeBiD7DSFcnLtqg9yGmCkBohg==", - "optional": true, - "dependencies": { - "@apollo/protobufjs": "1.2.2" - } - }, - "node_modules/apollo-server": { - "version": "2.25.2", - "resolved": "https://registry.npmjs.org/apollo-server/-/apollo-server-2.25.2.tgz", - "integrity": "sha512-2Ekx9puU5DqviZk6Kw1hbqTun3lwOWUjhiBJf+UfifYmnqq0s9vAv6Ditw+DEXwphJQ4vGKVVgVIEw6f/9YfhQ==", - "optional": true, - "dependencies": { - "apollo-server-core": "^2.25.2", - "apollo-server-express": "^2.25.2", - "express": "^4.0.0", - "graphql-subscriptions": "^1.0.0", - "graphql-tools": "^4.0.8", - "stoppable": "^1.1.0" - }, - "peerDependencies": { - "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-server-caching": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/apollo-server-caching/-/apollo-server-caching-0.7.0.tgz", - "integrity": "sha512-MsVCuf/2FxuTFVhGLK13B+TZH9tBd2qkyoXKKILIiGcZ5CDUEBO14vIV63aNkMkS1xxvK2U4wBcuuNj/VH2Mkw==", - "optional": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/apollo-server-caching/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "optional": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/apollo-server-caching/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "optional": true - }, - "node_modules/apollo-server-core": { - "version": "2.25.2", - "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-2.25.2.tgz", - "integrity": "sha512-lrohEjde2TmmDTO7FlOs8x5QQbAS0Sd3/t0TaK2TWaodfzi92QAvIsq321Mol6p6oEqmjm8POIDHW1EuJd7XMA==", - "optional": true, - "dependencies": { - "@apollographql/apollo-tools": "^0.5.0", - "@apollographql/graphql-playground-html": "1.6.27", - "@apollographql/graphql-upload-8-fork": "^8.1.3", - "@josephg/resolvable": "^1.0.0", - "@types/ws": "^7.0.0", - "apollo-cache-control": "^0.14.0", - "apollo-datasource": "^0.9.0", - "apollo-graphql": "^0.9.0", - "apollo-reporting-protobuf": "^0.8.0", - "apollo-server-caching": "^0.7.0", - "apollo-server-env": "^3.1.0", - "apollo-server-errors": "^2.5.0", - "apollo-server-plugin-base": "^0.13.0", - "apollo-server-types": "^0.9.0", - "apollo-tracing": "^0.15.0", - "async-retry": "^1.2.1", - "fast-json-stable-stringify": "^2.0.0", - "graphql-extensions": "^0.15.0", - "graphql-tag": "^2.11.0", - "graphql-tools": "^4.0.8", - "loglevel": "^1.6.7", - "lru-cache": "^6.0.0", - "sha.js": "^2.4.11", - "subscriptions-transport-ws": "^0.9.19", - "uuid": "^8.0.0" - }, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-server-core/node_modules/graphql-tools": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-4.0.8.tgz", - "integrity": "sha512-MW+ioleBrwhRjalKjYaLQbr+920pHBgy9vM/n47sswtns8+96sRn5M/G+J1eu7IMeKWiN/9p6tmwCHU7552VJg==", - "deprecated": "This package has been deprecated and now it only exports makeExecutableSchema.\\nAnd it will no longer receive updates.\\nWe recommend you to migrate to scoped packages such as @graphql-tools/schema, @graphql-tools/utils and etc.\\nCheck out https://www.graphql-tools.com to learn what package you should use instead", - "optional": true, - "dependencies": { - "apollo-link": "^1.2.14", - "apollo-utilities": "^1.0.1", - "deprecated-decorator": "^0.1.6", - "iterall": "^1.1.3", - "uuid": "^3.1.0" - }, - "peerDependencies": { - "graphql": "^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-server-core/node_modules/graphql-tools/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "optional": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/apollo-server-core/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "optional": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/apollo-server-core/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==", - "optional": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/apollo-server-core/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "optional": true - }, - "node_modules/apollo-server-env": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-3.1.0.tgz", - "integrity": "sha512-iGdZgEOAuVop3vb0F2J3+kaBVi4caMoxefHosxmgzAbbSpvWehB8Y1QiSyyMeouYC38XNVk5wnZl+jdGSsWsIQ==", - "optional": true, - "dependencies": { - "node-fetch": "^2.6.1", - "util.promisify": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/apollo-server-errors": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-2.5.0.tgz", - "integrity": "sha512-lO5oTjgiC3vlVg2RKr3RiXIIQ5pGXBFxYGGUkKDhTud3jMIhs+gel8L8zsEjKaKxkjHhCQAA/bcEfYiKkGQIvA==", - "optional": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-server-express": { - "version": "2.25.2", - "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-2.25.2.tgz", - "integrity": "sha512-A2gF2e85vvDugPlajbhr0A14cDFDIGX0mteNOJ8P3Z3cIM0D4hwrWxJidI+SzobefDIyIHu1dynFedJVhV0euQ==", - "optional": true, - "dependencies": { - "@apollographql/graphql-playground-html": "1.6.27", - "@types/accepts": "^1.3.5", - "@types/body-parser": "1.19.0", - "@types/cors": "2.8.10", - "@types/express": "^4.17.12", - "@types/express-serve-static-core": "^4.17.21", - "accepts": "^1.3.5", - "apollo-server-core": "^2.25.2", - "apollo-server-types": "^0.9.0", - "body-parser": "^1.18.3", - "cors": "^2.8.5", - "express": "^4.17.1", - "graphql-subscriptions": "^1.0.0", - "graphql-tools": "^4.0.8", - "parseurl": "^1.3.2", - "subscriptions-transport-ws": "^0.9.19", - "type-is": "^1.6.16" - }, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-server-express/node_modules/@types/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", - "optional": true, - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/apollo-server-express/node_modules/graphql-tools": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-4.0.8.tgz", - "integrity": "sha512-MW+ioleBrwhRjalKjYaLQbr+920pHBgy9vM/n47sswtns8+96sRn5M/G+J1eu7IMeKWiN/9p6tmwCHU7552VJg==", - "deprecated": "This package has been deprecated and now it only exports makeExecutableSchema.\\nAnd it will no longer receive updates.\\nWe recommend you to migrate to scoped packages such as @graphql-tools/schema, @graphql-tools/utils and etc.\\nCheck out https://www.graphql-tools.com to learn what package you should use instead", - "optional": true, - "dependencies": { - "apollo-link": "^1.2.14", - "apollo-utilities": "^1.0.1", - "deprecated-decorator": "^0.1.6", - "iterall": "^1.1.3", - "uuid": "^3.1.0" - }, - "peerDependencies": { - "graphql": "^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-server-express/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "optional": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/apollo-server-plugin-base": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-0.13.0.tgz", - "integrity": "sha512-L3TMmq2YE6BU6I4Tmgygmd0W55L+6XfD9137k+cWEBFu50vRY4Re+d+fL5WuPkk5xSPKd/PIaqzidu5V/zz8Kg==", - "optional": true, - "dependencies": { - "apollo-server-types": "^0.9.0" - }, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-server-types": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-0.9.0.tgz", - "integrity": "sha512-qk9tg4Imwpk732JJHBkhW0jzfG0nFsLqK2DY6UhvJf7jLnRePYsPxWfPiNkxni27pLE2tiNlCwoDFSeWqpZyBg==", - "optional": true, - "dependencies": { - "apollo-reporting-protobuf": "^0.8.0", - "apollo-server-caching": "^0.7.0", - "apollo-server-env": "^3.1.0" - }, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-server/node_modules/graphql-tools": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-4.0.8.tgz", - "integrity": "sha512-MW+ioleBrwhRjalKjYaLQbr+920pHBgy9vM/n47sswtns8+96sRn5M/G+J1eu7IMeKWiN/9p6tmwCHU7552VJg==", - "deprecated": "This package has been deprecated and now it only exports makeExecutableSchema.\\nAnd it will no longer receive updates.\\nWe recommend you to migrate to scoped packages such as @graphql-tools/schema, @graphql-tools/utils and etc.\\nCheck out https://www.graphql-tools.com to learn what package you should use instead", - "optional": true, - "dependencies": { - "apollo-link": "^1.2.14", - "apollo-utilities": "^1.0.1", - "deprecated-decorator": "^0.1.6", - "iterall": "^1.1.3", - "uuid": "^3.1.0" - }, - "peerDependencies": { - "graphql": "^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-server/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "optional": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/apollo-tracing": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/apollo-tracing/-/apollo-tracing-0.15.0.tgz", - "integrity": "sha512-UP0fztFvaZPHDhIB/J+qGuy6hWO4If069MGC98qVs0I8FICIGu4/8ykpX3X3K6RtaQ56EDAWKykCxFv4ScxMeA==", - "deprecated": "The `apollo-tracing` package is no longer part of Apollo Server 3. See https://www.apollographql.com/docs/apollo-server/migration/#tracing for details", - "optional": true, - "dependencies": { - "apollo-server-env": "^3.1.0", - "apollo-server-plugin-base": "^0.13.0" - }, - "engines": { - "node": ">=4.0" - }, - "peerDependencies": { - "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-upload-client": { - "version": "14.1.2", - "resolved": "https://registry.npmjs.org/apollo-upload-client/-/apollo-upload-client-14.1.2.tgz", - "integrity": "sha512-ozaW+4tnVz1rpfwiQwG3RCdCcZ93RV/37ZQbRnObcQ9mjb+zur58sGDPVg9Ef3fiujLmiE/Fe9kdgvIMA3VOjA==", - "optional": true, - "dependencies": { - "@apollo/client": "^3.1.5", - "@babel/runtime": "^7.11.2", - "extract-files": "^9.0.0" - }, - "engines": { - "node": "^10.17.0 || ^12.0.0 || >= 13.7.0" - }, - "funding": { - "url": "https://github.com/sponsors/jaydenseric" - }, - "peerDependencies": { - "graphql": "14 - 15", - "subscriptions-transport-ws": "^0.9.0" - } - }, - "node_modules/apollo-utilities": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/apollo-utilities/-/apollo-utilities-1.3.4.tgz", - "integrity": "sha512-pk2hiWrCXMAy2fRPwEyhvka+mqwzeP60Jr1tRYi5xru+3ko94HI9o6lK0CT33/w4RDlxWchmdhDCrvdr+pHCig==", - "optional": true, - "dependencies": { - "@wry/equality": "^0.1.2", - "fast-json-stable-stringify": "^2.0.0", - "ts-invariant": "^0.4.0", - "tslib": "^1.10.0" - }, - "peerDependencies": { - "graphql": "^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/apollo-utilities/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "optional": true - }, - "node_modules/app-module-path": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/app-module-path/-/app-module-path-2.2.0.tgz", - "integrity": "sha1-ZBqlXft9am8KgUHEucCqULbCTdU=" - }, - "node_modules/aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "optional": true - }, - "node_modules/are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", - "optional": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "node_modules/are-we-there-yet/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==", - "optional": true - }, - "node_modules/are-we-there-yet/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "optional": 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/are-we-there-yet/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==", - "optional": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/argsarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/argsarray/-/argsarray-0.0.1.tgz", - "integrity": "sha1-bnIHtOzbObCviDA/pa4ivajfYcs=", - "optional": true - }, - "node_modules/arr-diff": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", - "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", - "optional": true, - "dependencies": { - "arr-flatten": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "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==", - "optional": 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": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array-unique": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", - "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array.prototype.map": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.3.tgz", - "integrity": "sha512-nNcb30v0wfDyIe26Yif3PcV1JXQp4zEeEfupG7L4SRjnD6HLbO5b2a7eVSba53bOx4YCHYMBHt+Fp4vYstneRA==", - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.1", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", - "devOptional": true - }, - "node_modules/asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dependencies": { - "object-assign": "^4.1.1", - "util": "0.10.3" - } - }, - "node_modules/assert-args": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/assert-args/-/assert-args-1.2.1.tgz", - "integrity": "sha1-QEEDoUUqMv53iYgR5U5ZCoqTc70=", - "optional": true, - "dependencies": { - "101": "^1.2.0", - "compound-subject": "0.0.1", - "debug": "^2.2.0", - "get-prototype-of": "0.0.0", - "is-capitalized": "^1.0.0", - "is-class": "0.0.4" - } - }, - "node_modules/assert-args/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "optional": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/assert/node_modules/inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" - }, - "node_modules/assert/node_modules/util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dependencies": { - "inherits": "2.0.1" - } - }, - "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, - "engines": { - "node": "*" - } - }, - "node_modules/assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/async": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", - "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "optional": true - }, - "node_modules/async-eventemitter": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/async-eventemitter/-/async-eventemitter-0.2.4.tgz", - "integrity": "sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw==", - "dev": true, - "dependencies": { - "async": "^2.4.0" - } - }, - "node_modules/async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" - }, - "node_modules/async-retry": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", - "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", - "optional": true, - "dependencies": { - "retry": "0.13.1" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, - "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==", - "optional": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "optional": true, - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/await-semaphore": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/await-semaphore/-/await-semaphore-0.1.3.tgz", - "integrity": "sha512-d1W2aNSYcz/sxYO4pMGX9vq65qOTu0P800epMud+6cYYX0QcT7zyqcxec3VWzpgvdXo57UWmVbZpLMjX2m1I7Q==", - "dev": true - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" - }, - "node_modules/axios": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.20.0.tgz", - "integrity": "sha512-ANA4rr2BDcmmAQLOKft2fufrtuvlqR+cXNNinUmvfeSNCOF98PZL+7M/v1zIdGo7OLjEA9J2gXJL+j4zGsl0bA==", - "deprecated": "Critical security vulnerability fixed in v0.21.1. For more information, see https://github.com/axios/axios/pull/3410", - "optional": true, - "dependencies": { - "follow-redirects": "^1.10.0" - } - }, - "node_modules/babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", - "dependencies": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - } - }, - "node_modules/babel-code-frame/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=" - }, - "node_modules/babel-code-frame/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-code-frame/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/babel-generator": { - "version": "6.26.1", - "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", - "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", - "dependencies": { - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "detect-indent": "^4.0.0", - "jsesc": "^1.3.0", - "lodash": "^4.17.4", - "source-map": "^0.5.7", - "trim-right": "^1.0.1" - } - }, - "node_modules/babel-generator/node_modules/detect-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", - "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", - "dependencies": { - "repeating": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-generator/node_modules/jsesc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", - "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", - "bin": { - "jsesc": "bin/jsesc" - } - }, - "node_modules/babel-generator/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dependencies": { - "babel-runtime": "^6.22.0" - } - }, - "node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "optional": true, - "dependencies": { - "object.assign": "^4.1.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.2.2.tgz", - "integrity": "sha512-kISrENsJ0z5dNPq5eRvcctITNHYXWOA4DUZRFYCz3jYCcvTb/A546LIddmoGNMVYg2U38OyFeNosQwI9ENTqIQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.2.2", - "semver": "^6.1.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.2.5.tgz", - "integrity": "sha512-ninF5MQNwAX9Z7c9ED+H2pGt1mXdP4TqzlHKyPIYmJIYz0N+++uwdM7RnJukklhzJ54Q84vA4ZJkgs7lu5vqcw==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.2.2", - "core-js-compat": "^3.16.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.2.2.tgz", - "integrity": "sha512-Goy5ghsc21HgPDFtzRkSirpZVW35meGoTmTOb2bxqdl60ghub4xOidgNTHaZfQ2FaxQsKmwvXtOAkcIS4SMBWg==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.2.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/babel-plugin-syntax-trailing-function-commas": { - "version": "7.0.0-beta.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", - "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==", - "optional": true - }, - "node_modules/babel-preset-fbjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", - "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==", - "optional": true, - "dependencies": { - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.0.0", - "@babel/plugin-syntax-class-properties": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.0.0", - "@babel/plugin-syntax-jsx": "^7.0.0", - "@babel/plugin-syntax-object-rest-spread": "^7.0.0", - "@babel/plugin-transform-arrow-functions": "^7.0.0", - "@babel/plugin-transform-block-scoped-functions": "^7.0.0", - "@babel/plugin-transform-block-scoping": "^7.0.0", - "@babel/plugin-transform-classes": "^7.0.0", - "@babel/plugin-transform-computed-properties": "^7.0.0", - "@babel/plugin-transform-destructuring": "^7.0.0", - "@babel/plugin-transform-flow-strip-types": "^7.0.0", - "@babel/plugin-transform-for-of": "^7.0.0", - "@babel/plugin-transform-function-name": "^7.0.0", - "@babel/plugin-transform-literals": "^7.0.0", - "@babel/plugin-transform-member-expression-literals": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/plugin-transform-object-super": "^7.0.0", - "@babel/plugin-transform-parameters": "^7.0.0", - "@babel/plugin-transform-property-literals": "^7.0.0", - "@babel/plugin-transform-react-display-name": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0", - "@babel/plugin-transform-spread": "^7.0.0", - "@babel/plugin-transform-template-literals": "^7.0.0", - "babel-plugin-syntax-trailing-function-commas": "^7.0.0-beta.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", - "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" - } - }, - "node_modules/babel-runtime/node_modules/core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.", - "hasInstallScript": true - }, - "node_modules/babel-runtime/node_modules/regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" - }, - "node_modules/babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", - "dependencies": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" - } - }, - "node_modules/babel-traverse/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/babel-traverse/node_modules/globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", - "dependencies": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" - } - }, - "node_modules/babel-types/node_modules/to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", - "bin": { - "babylon": "bin/babylon.js" - } - }, - "node_modules/backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", - "optional": true - }, - "node_modules/backoff": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz", - "integrity": "sha1-9hbtqdPktmuMp/ynn2lXIsX44m8=", - "dev": true, - "dependencies": { - "precond": "0.2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "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==" - }, - "node_modules/base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "optional": true, - "dependencies": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base-x": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", - "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/base/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "optional": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "optional": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "optional": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "optional": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base/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==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/base32-decode": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base32-decode/-/base32-decode-1.0.0.tgz", - "integrity": "sha512-KNWUX/R7wKenwE/G/qFMzGScOgVntOmbE27vvc6GrniDGYb6a5+qWcuoXl8WIOQL7q0TpK7nZDm1Y04Yi3Yn5g==", - "optional": true - }, - "node_modules/base32-encode": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/base32-encode/-/base32-encode-1.2.0.tgz", - "integrity": "sha512-cHFU8XeRyx0GgmoWi5qHMCVRiqU6J3MHWxVgun7jggCBUpVzm1Ir7M9dYr2whjSNc3tFeXfQ/oZjQu/4u55h9A==", - "optional": true, - "dependencies": { - "to-data-view": "^1.1.0" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/bech32": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" - }, - "node_modules/better-ajv-errors": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/better-ajv-errors/-/better-ajv-errors-0.6.7.tgz", - "integrity": "sha512-PYgt/sCzR4aGpyNy5+ViSQ77ognMnWq7745zM+/flYO4/Yisdtp9wDQW2IKCyVYPUxQt3E/b5GBSwfhd1LPdlg==", - "optional": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "@babel/runtime": "^7.0.0", - "chalk": "^2.4.1", - "core-js": "^3.2.1", - "json-to-ast": "^2.0.3", - "jsonpointer": "^4.0.1", - "leven": "^3.1.0" - }, - "peerDependencies": { - "ajv": "4.11.8 - 6" - } - }, - "node_modules/big-integer": { - "version": "1.6.36", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.36.tgz", - "integrity": "sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "engines": { - "node": "*" - } - }, - "node_modules/bignumber.js": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.1.tgz", - "integrity": "sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA==", - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "devOptional": true, - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "node_modules/bip32": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/bip32/-/bip32-2.0.6.tgz", - "integrity": "sha512-HpV5OMLLGTjSVblmrtYRfFFKuQB+GArM0+XP8HGWfJ5vxYBqo+DesvJwOdC2WJ3bCkZShGf0QIfoIpeomVzVdA==", - "optional": true, - "dependencies": { - "@types/node": "10.12.18", - "bs58check": "^2.1.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "tiny-secp256k1": "^1.1.3", - "typeforce": "^1.11.5", - "wif": "^2.0.6" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/bip32/node_modules/@types/node": { - "version": "10.12.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", - "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==", - "optional": true - }, - "node_modules/bip39": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.0.4.tgz", - "integrity": "sha512-YZKQlb752TrUWqHWj7XAwCSjYEgGAk+/Aas3V7NyjQeZYsztO8JnQUaCWhcnL4T+jL8nvB8typ2jRPzTlgugNw==", - "optional": true, - "dependencies": { - "@types/node": "11.11.6", - "create-hash": "^1.1.0", - "pbkdf2": "^3.0.9", - "randombytes": "^2.0.1" - } - }, - "node_modules/bip39/node_modules/@types/node": { - "version": "11.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz", - "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==", - "optional": true - }, - "node_modules/bip66": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/bip66/-/bip66-1.1.5.tgz", - "integrity": "sha1-AfqHSHhcpwlV1QESF9GzE5lpyiI=", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/bitcore-lib": { - "version": "8.25.10", - "resolved": "https://registry.npmjs.org/bitcore-lib/-/bitcore-lib-8.25.10.tgz", - "integrity": "sha512-MyHpSg7aFRHe359RA/gdkaQAal3NswYZTLEuu0tGX1RGWXAYN9i/24fsjPqVKj+z0ua+gzAT7aQs0KiKXWCgKA==", - "optional": true, - "dependencies": { - "bech32": "=1.1.3", - "bn.js": "=4.11.8", - "bs58": "^4.0.1", - "buffer-compare": "=1.1.1", - "elliptic": "^6.5.3", - "inherits": "=2.0.1", - "lodash": "^4.17.20" - } - }, - "node_modules/bitcore-lib/node_modules/bech32": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.3.tgz", - "integrity": "sha512-yuVFUvrNcoJi0sv5phmqc6P+Fl1HjRDRNOOkHY2X/3LBy2bIGNSFx4fZ95HMaXHupuS7cZR15AsvtmCIF4UEyg==", - "optional": true - }, - "node_modules/bitcore-lib/node_modules/bn.js": { - "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", - "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==", - "optional": true - }, - "node_modules/bitcore-lib/node_modules/inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "optional": true - }, - "node_modules/bitcore-mnemonic": { - "version": "8.25.10", - "resolved": "https://registry.npmjs.org/bitcore-mnemonic/-/bitcore-mnemonic-8.25.10.tgz", - "integrity": "sha512-FeXxO37BLV5JRvxPmVFB91zRHalavV8H4TdQGt1/hz0AkoPymIV68OkuB+TptpjeYgatcgKPoPvPhglJkTzFQQ==", - "optional": true, - "dependencies": { - "bitcore-lib": "^8.25.10", - "unorm": "^1.4.1" - }, - "peerDependencies": { - "bitcore-lib": "^8.20.1" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "optional": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/blakejs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.1.1.tgz", - "integrity": "sha512-bLG6PHOCZJKNshTjGRBvET0vTciwQE6zFKOKKXPDJfwFBd4Ac0yBfPZqcGvGJap50l7ktvlpFqc2jGVaUgbJgg==" - }, - "node_modules/blob-to-it": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/blob-to-it/-/blob-to-it-1.0.3.tgz", - "integrity": "sha512-3bCrqSWG2qWwoIeF6DUJeuW/1isjx7DUhqZn9GpWlK8SVeqcjP+zw4yujdV0bVaqtggk6CUgtu87jfwHi5g7Zg==", - "optional": true, - "dependencies": { - "browser-readablestream-to-it": "^1.0.2" - } - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" - }, - "node_modules/bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" - }, - "node_modules/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "dependencies": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" - }, - "node_modules/borc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/borc/-/borc-2.1.2.tgz", - "integrity": "sha512-Sy9eoUi4OiKzq7VovMn246iTo17kzuyHJKomCfpWMlI6RpfN1gk95w7d7gH264nApVLg0HZfcpz62/g4VH1Y4w==", - "optional": true, - "dependencies": { - "bignumber.js": "^9.0.0", - "buffer": "^5.5.0", - "commander": "^2.15.0", - "ieee754": "^1.1.13", - "iso-url": "~0.4.7", - "json-text-sequence": "~0.1.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", - "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", - "optional": true, - "dependencies": { - "expand-range": "^1.8.1", - "preserve": "^0.2.0", - "repeat-element": "^1.1.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" - }, - "node_modules/browser-headers": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/browser-headers/-/browser-headers-0.4.1.tgz", - "integrity": "sha512-CA9hsySZVo9371qEHjHZtYxV2cFtVj5Wj/ZHi8ooEsrtm4vOnl9Y9HmyYWk9q+05d7K3rdoAE0j3MVEFVvtQtg==", - "optional": true - }, - "node_modules/browser-readablestream-to-it": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browser-readablestream-to-it/-/browser-readablestream-to-it-1.0.2.tgz", - "integrity": "sha512-lv4M2Z6RKJpyJijJzBQL5MNssS7i8yedl+QkhnLCyPtgNGNSXv1KthzUnye9NlRAtBAI80X6S9i+vK09Rzjcvg==", - "optional": true - }, - "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==" - }, - "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==", - "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/browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "node_modules/browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "node_modules/browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dependencies": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "node_modules/browserify-sign/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==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dependencies": { - "pako": "~1.0.5" - } - }, - "node_modules/browserslist": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.1.tgz", - "integrity": "sha512-aLD0ZMDSnF4lUt4ZDNgqi5BUn9BZ7YdQdI/cYlILrhdSSZJLU9aNZoD5/NBmM4SK34APB2e83MOsRt1EnkuyaQ==", - "devOptional": true, - "dependencies": { - "caniuse-lite": "^1.0.30001259", - "electron-to-chromium": "^1.3.846", - "escalade": "^3.1.1", - "nanocolors": "^0.1.5", - "node-releases": "^1.1.76" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", - "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==", - "dependencies": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "optional": true, - "dependencies": { - "node-int64": "^0.4.0" - } - }, - "node_modules/btoa": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", - "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", - "dev": true, - "bin": { - "btoa": "bin/btoa.js" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/btoa-lite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", - "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=", - "optional": true - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-compare": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-compare/-/buffer-compare-1.1.1.tgz", - "integrity": "sha1-W+e+hTr4kZjR9N3AkNHWakiu9ZY=", - "optional": true - }, - "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==" - }, - "node_modules/buffer-pipe": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/buffer-pipe/-/buffer-pipe-0.0.3.tgz", - "integrity": "sha512-GlxfuD/NrKvCNs0Ut+7b1IHjylfdegMBxQIlZHj7bObKVQBxB5S84gtm2yu1mQ8/sSggceWBDPY0cPXgvX2MuA==", - "optional": true, - "dependencies": { - "safe-buffer": "^5.1.2" - } - }, - "node_modules/buffer-to-arraybuffer": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz", - "integrity": "sha1-YGSkD6dutDxyOrqe+PbhIW0QURo=" - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" - }, - "node_modules/bufferutil": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.3.tgz", - "integrity": "sha512-yEYTwGndELGvfXsImMBLop58eaGW+YdONi1fNjTINSY98tmMmFijBG6WXgdkfuLNt4imzQNtIE+eBp1PVpMCSw==", - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.2.0" - } - }, - "node_modules/builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" - }, - "node_modules/busboy": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-0.3.1.tgz", - "integrity": "sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw==", - "optional": true, - "dependencies": { - "dicer": "0.3.0" - }, - "engines": { - "node": ">=4.5.0" - } - }, - "node_modules/bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "optional": true, - "dependencies": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cache-base/node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/camel-case": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", - "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", - "dependencies": { - "no-case": "^2.2.0", - "upper-case": "^1.1.1" - } - }, - "node_modules/camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001261", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001261.tgz", - "integrity": "sha512-vM8D9Uvp7bHIN0fZ2KQ4wnmYFpJo/Etb4Vwsuc+ka0tfGDHvOPrFm6S/7CCNLSOkAUjenT2HnUPESdOIL91FaA==", - "devOptional": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - } - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "node_modules/cbor": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/cbor/-/cbor-5.2.0.tgz", - "integrity": "sha512-5IMhi9e1QU76ppa5/ajP1BmMWZ2FHkhAhjeVKQ/EFCgYSEaeVaoGtL7cxJskf9oCCk+XjzaIdc3IuU/dbA/o2A==", - "dependencies": { - "bignumber.js": "^9.0.1", - "nofilter": "^1.0.4" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "dependencies": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chai": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz", - "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==", - "dev": true, - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "pathval": "^1.1.1", - "type-detect": "^4.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chai-bn": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/chai-bn/-/chai-bn-0.2.2.tgz", - "integrity": "sha512-MzjelH0p8vWn65QKmEq/DLBG1Hle4WeyqT79ANhXZhn/UxRWO0OogkAxi5oGGtfzwU9bZR8mvbvYdoqNVWQwFg==", - "dev": true, - "peerDependencies": { - "bn.js": "^4.11.0", - "chai": "^4.0.0" - } - }, - "node_modules/chai/node_modules/deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", - "dev": true, - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/chai/node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "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==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/change-case": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-3.0.2.tgz", - "integrity": "sha512-Mww+SLF6MZ0U6kdg11algyKd5BARbyM4TbFBepwowYSR5ClfQGCGtxNXgykpN0uF/bstWeaGDT4JWaDh8zWAHA==", - "dependencies": { - "camel-case": "^3.0.0", - "constant-case": "^2.0.0", - "dot-case": "^2.1.0", - "header-case": "^1.0.0", - "is-lower-case": "^1.1.0", - "is-upper-case": "^1.1.0", - "lower-case": "^1.1.1", - "lower-case-first": "^1.0.0", - "no-case": "^2.3.2", - "param-case": "^2.1.0", - "pascal-case": "^2.0.0", - "path-case": "^2.1.0", - "sentence-case": "^2.1.0", - "snake-case": "^2.1.0", - "swap-case": "^1.1.0", - "title-case": "^2.1.0", - "upper-case": "^1.1.1", - "upper-case-first": "^1.1.0" - } - }, - "node_modules/charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/checkpoint-store": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/checkpoint-store/-/checkpoint-store-1.1.0.tgz", - "integrity": "sha1-BOTLUWuRQziTWB5tRgGnjpVS6gY=", - "dev": true, - "dependencies": { - "functional-red-black-tree": "^1.0.1" - } - }, - "node_modules/cheerio": { - "version": "1.0.0-rc.10", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", - "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", - "dependencies": { - "cheerio-select": "^1.5.0", - "dom-serializer": "^1.3.2", - "domhandler": "^4.2.0", - "htmlparser2": "^6.1.0", - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/cheeriojs/cheerio?sponsor=1" - } - }, - "node_modules/cheerio-select": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz", - "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==", - "dependencies": { - "css-select": "^4.1.3", - "css-what": "^5.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0", - "domutils": "^2.7.0" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", - "optional": true, - "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" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "optional": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/chokidar/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "optional": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/chokidar/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==", - "optional": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/chokidar/node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "optional": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chokidar/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==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - }, - "node_modules/cids": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/cids/-/cids-0.7.5.tgz", - "integrity": "sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "buffer": "^5.5.0", - "class-is": "^1.1.0", - "multibase": "~0.6.0", - "multicodec": "^1.0.0", - "multihashes": "~0.4.15" - }, - "engines": { - "node": ">=4.0.0", - "npm": ">=3.0.0" - } - }, - "node_modules/cids/node_modules/multicodec": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-1.0.4.tgz", - "integrity": "sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "buffer": "^5.6.0", - "varint": "^5.0.0" - } - }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/circular": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/circular/-/circular-1.0.5.tgz", - "integrity": "sha1-fad6+Yu96c5LWzWM1Va13e0tMUk=", - "dev": true - }, - "node_modules/circular-json": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.5.9.tgz", - "integrity": "sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ==", - "deprecated": "CircularJSON is in maintenance only, flatted is its successor.", - "optional": true - }, - "node_modules/class-is": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz", - "integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==" - }, - "node_modules/class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "optional": true, - "dependencies": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "optional": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/class-utils/node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "optional": true, - "dependencies": { - "restore-cursor": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cli-logger": { - "version": "0.5.40", - "resolved": "https://registry.npmjs.org/cli-logger/-/cli-logger-0.5.40.tgz", - "integrity": "sha1-CX8OEbByx8aYomxH9YiinCC0iws=", - "dev": true, - "dependencies": { - "circular": "^1.0.5", - "cli-util": "~1.1.27" - } - }, - "node_modules/cli-regexp": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/cli-regexp/-/cli-regexp-0.1.2.tgz", - "integrity": "sha1-a82TsJ+y7RAl0woRVdWZeVSlNRI=", - "dev": true - }, - "node_modules/cli-spinners": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.0.tgz", - "integrity": "sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q==", - "optional": true, - "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, - "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.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "dev": 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": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": 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, - "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": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cli-util": { - "version": "1.1.27", - "resolved": "https://registry.npmjs.org/cli-util/-/cli-util-1.1.27.tgz", - "integrity": "sha1-QtaeNqBAoyH8nPhRwVE8rcUJMFQ=", - "dev": true, - "dependencies": { - "cli-regexp": "~0.1.0" - } - }, - "node_modules/cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "optional": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=", - "optional": true, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", - "dependencies": { - "mimic-response": "^1.0.0" - } - }, - "node_modules/clone-stats": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-0.0.1.tgz", - "integrity": "sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE=", - "optional": true - }, - "node_modules/code-error-fragment": { - "version": "0.0.230", - "resolved": "https://registry.npmjs.org/code-error-fragment/-/code-error-fragment-0.0.230.tgz", - "integrity": "sha512-cadkfKp6932H8UkhzE/gcUqhRMNf8jHzkAN7+5Myabswaghu4xABTgPHDCjW+dBAJxj/SpkTYokpzDqY4pCzQw==", - "optional": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "optional": true, - "dependencies": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-logger": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/color-logger/-/color-logger-0.0.6.tgz", - "integrity": "sha1-5WJF7ymCJlcRDHy3WpzXhstp7Rs=" - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "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==", - "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 - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "optional": true - }, - "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "optional": true - }, - "node_modules/compound-subject": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/compound-subject/-/compound-subject-0.0.1.tgz", - "integrity": "sha1-JxVUaYoVrmCLHfyv0wt7oeqJLEs=", - "optional": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "node_modules/concat-stream": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.1.tgz", - "integrity": "sha1-87gKz54fSOOHXAaItBtsMWAu6hw=", - "engines": [ - "node >= 0.8" - ], - "optional": true, - "dependencies": { - "inherits": "~2.0.1", - "readable-stream": "~2.0.0", - "typedarray": "~0.0.5" - } - }, - "node_modules/concat-stream/node_modules/readable-stream": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz", - "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=", - "optional": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "~1.0.0", - "process-nextick-args": "~1.0.6", - "string_decoder": "~0.10.x", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/concat-stream/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "optional": true - }, - "node_modules/configstore": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-4.0.0.tgz", - "integrity": "sha512-CmquAXFBocrzaSM8mtGPMM/HiWmyIpr4CcJl/rgY2uCObZ/S7cKU0silxslqJejl+t/T9HS8E0PUNQD81JGUEQ==", - "optional": true, - "dependencies": { - "dot-prop": "^4.1.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" - }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", - "optional": true - }, - "node_modules/constant-case": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-2.0.0.tgz", - "integrity": "sha1-QXV2TTidP6nI7NKRhu1gBSQ7akY=", - "dependencies": { - "snake-case": "^2.1.0", - "upper-case": "^1.1.1" - } - }, - "node_modules/constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" - }, - "node_modules/content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-hash": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/content-hash/-/content-hash-2.5.2.tgz", - "integrity": "sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw==", - "dependencies": { - "cids": "^0.7.1", - "multicodec": "^0.5.5", - "multihashes": "^0.4.15" - } - }, - "node_modules/content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "devOptional": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "node_modules/cookiejar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==" - }, - "node_modules/copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/core-js": { - "version": "3.17.3", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.17.3.tgz", - "integrity": "sha512-lyvajs+wd8N1hXfzob1LdOCCHFU4bGMbqqmLn1Q4QlCpDqWPpGf+p0nj+LNrvDDG33j0hZXw2nsvvVpHysxyNw==", - "hasInstallScript": true, - "optional": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat": { - "version": "3.18.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.18.1.tgz", - "integrity": "sha512-XJMYx58zo4W0kLPmIingVZA10+7TuKrMLPt83+EzDmxFJQUMcTVVmQ+n5JP4r6Z14qSzhQBRi3NSWoeVyKKXUg==", - "dev": true, - "dependencies": { - "browserslist": "^4.17.1", - "semver": "7.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/core-js-pure": { - "version": "3.17.3", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.17.3.tgz", - "integrity": "sha512-YusrqwiOTTn8058JDa0cv9unbXdIiIgcgI9gXso0ey4WgkFLd3lYlV9rp9n7nDCsYxXsMDTjA4m1h3T348mdlQ==", - "hasInstallScript": true, - "optional": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/crc-32": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", - "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", - "dependencies": { - "exit-on-epipe": "~1.0.1", - "printj": "~1.1.0" - }, - "bin": { - "crc32": "bin/crc32.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "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==", - "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==", - "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/cross-fetch": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.0.6.tgz", - "integrity": "sha512-KBPUbqgFjzWlVcURG+Svp9TlhA5uliYtiNx/0r8nv0pdypeQCRJ9IaSIc3q/x3q8t3F75cHuwxVql1HFGHCNJQ==", - "optional": true, - "dependencies": { - "node-fetch": "2.6.1" - } - }, - "node_modules/cross-fetch/node_modules/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "optional": true, - "engines": { - "node": "4.x || >=6.0.0" - } - }, - "node_modules/cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", - "dependencies": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "node_modules/crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/crypto-addr-codec": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/crypto-addr-codec/-/crypto-addr-codec-0.1.7.tgz", - "integrity": "sha512-X4hzfBzNhy4mAc3UpiXEC/L0jo5E8wAa9unsnA8nNXYzXjCcGk83hfC5avJWCSGT8V91xMnAS9AKMHmjw5+XCg==", - "dependencies": { - "base-x": "^3.0.8", - "big-integer": "1.6.36", - "blakejs": "^1.1.0", - "bs58": "^4.0.1", - "ripemd160-min": "0.0.6", - "safe-buffer": "^5.2.0", - "sha3": "^2.1.1" - } - }, - "node_modules/crypto-addr-codec/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==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - }, - "engines": { - "node": "*" - } - }, - "node_modules/crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", - "optional": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/css": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", - "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", - "optional": true, - "dependencies": { - "inherits": "^2.0.3", - "source-map": "^0.6.1", - "source-map-resolve": "^0.5.2", - "urix": "^0.1.0" - } - }, - "node_modules/css-select": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", - "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^5.0.0", - "domhandler": "^4.2.0", - "domutils": "^2.6.0", - "nth-check": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-what": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.1.0.tgz", - "integrity": "sha512-arSMRWIIFY0hV8pIxZMEfmMI47Wj3R/aWpZDDxWYCPEiOMv6tfOrnpDtgxBYPEQD4V0Y/958+1TdC3iWTFcUPw==", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cssfilter": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", - "integrity": "sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4=", - "optional": true - }, - "node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "optional": true - }, - "node_modules/cssstyle": { - "version": "0.2.37", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", - "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", - "optional": true, - "dependencies": { - "cssom": "0.3.x" - } - }, - "node_modules/d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/dataloader": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dataloader/-/dataloader-2.0.0.tgz", - "integrity": "sha512-YzhyDAwA4TaQIhM5go+vCLmU0UikghC/t9DTQYZR2M/UvZ1MdOhPezSDZcjj9uqQJOMqjLcpWtyW2iNINdlatQ==", - "optional": true - }, - "node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/debug-fabulous": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-0.0.4.tgz", - "integrity": "sha1-+gccXYdIRoVCSAdCHKSxawsaB2M=", - "optional": true, - "dependencies": { - "debug": "2.X", - "lazy-debug-legacy": "0.0.X", - "object-assign": "4.1.0" - } - }, - "node_modules/debug-fabulous/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "optional": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/debug-fabulous/node_modules/object-assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "integrity": "sha1-ejs9DpgGPUP0wD8uiubNUahog6A=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/deep-eql": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", - "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", - "optional": true, - "dependencies": { - "type-detect": "0.1.1" - }, - "engines": { - "node": "*" - } - }, - "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==", - "optional": 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==", - "optional": true - }, - "node_modules/defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "optional": true, - "dependencies": { - "clone": "^1.0.2" - } - }, - "node_modules/defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" - }, - "node_modules/deferred-leveldown": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz", - "integrity": "sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw==", - "optional": true, - "dependencies": { - "abstract-leveldown": "~6.2.1", - "inherits": "^2.0.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/deferred-leveldown/node_modules/abstract-leveldown": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz", - "integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==", - "optional": true, - "dependencies": { - "buffer": "^5.5.0", - "immediate": "^3.2.3", - "level-concat-iterator": "~2.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dependencies": { - "object-keys": "^1.0.12" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "optional": true, - "dependencies": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "optional": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "optional": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "optional": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/define-property/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==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/delay": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", - "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==", - "devOptional": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "optional": true - }, - "node_modules/delimit-stream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/delimit-stream/-/delimit-stream-0.1.0.tgz", - "integrity": "sha1-m4MZR3wOX4rrPONXrjBfwl6hzSs=", - "optional": true - }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/deprecated-decorator": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz", - "integrity": "sha1-AJZjF7ehL+kvPMgx91g68ym4bDc=", - "optional": true - }, - "node_modules/des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "node_modules/detect-indent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", - "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", - "engines": { - "node": ">=4" - } - }, - "node_modules/detect-installed": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-installed/-/detect-installed-2.0.4.tgz", - "integrity": "sha1-oIUEZefD68/5eda2U1rTRLgN18U=", - "optional": true, - "dependencies": { - "get-installed-path": "^2.0.3" - }, - "engines": { - "node": ">=4", - "npm": ">=2" - } - }, - "node_modules/detect-installed/node_modules/get-installed-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/get-installed-path/-/get-installed-path-2.1.1.tgz", - "integrity": "sha512-Qkn9eq6tW5/q9BDVdMpB8tOHljX9OSP0jRC5TRNVA4qRc839t4g8KQaR8t0Uv0EFVL0MlyG7m/ofjEgAROtYsA==", - "optional": true, - "dependencies": { - "global-modules": "1.0.0" - } - }, - "node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", - "optional": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/detect-newline": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", - "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/dicer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz", - "integrity": "sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==", - "optional": true, - "dependencies": { - "streamsearch": "0.1.2" - }, - "engines": { - "node": ">=4.5.0" - } - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "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==", - "optional": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dir-glob/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==", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/dns-over-http-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/dns-over-http-resolver/-/dns-over-http-resolver-1.2.3.tgz", - "integrity": "sha512-miDiVSI6KSNbi4SVifzO/reD8rMnxgrlnkrlkugOLQpWQTe2qMdHsZp5DmfKjxNE+/T3VAAYLQUZMv9SMr6+AA==", - "optional": true, - "dependencies": { - "debug": "^4.3.1", - "native-fetch": "^3.0.0", - "receptacle": "^1.3.2" - } - }, - "node_modules/dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" - }, - "node_modules/domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "engines": { - "node": ">=0.4", - "npm": ">=1.2" - } - }, - "node_modules/domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domhandler": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz", - "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/dot-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-2.1.1.tgz", - "integrity": "sha1-NNzzf1Co6TwrO8qLt/uRVcfaO+4=", - "dependencies": { - "no-case": "^2.2.0" - } - }, - "node_modules/dot-prop": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", - "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==", - "optional": true, - "dependencies": { - "is-obj": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/double-ended-queue": { - "version": "2.1.0-0", - "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", - "integrity": "sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw=", - "optional": true - }, - "node_modules/drbg.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz", - "integrity": "sha1-Pja2xCs3BDgjzbwzLVjzHiRFSAs=", - "dev": true, - "dependencies": { - "browserify-aes": "^1.0.6", - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" - }, - "node_modules/duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "optional": true, - "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/duplexify/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==", - "optional": true - }, - "node_modules/duplexify/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "optional": 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/duplexify/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==", - "optional": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/ed2curve": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/ed2curve/-/ed2curve-0.3.0.tgz", - "integrity": "sha512-8w2fmmq3hv9rCrcI7g9hms2pMunQr1JINfcjwR9tAyZqhtyaMN991lF/ZfHfr5tzZQ8c7y7aBgZbjfbd0fjFwQ==", - "optional": true, - "dependencies": { - "tweetnacl": "1.x.x" - } - }, - "node_modules/ed2curve/node_modules/tweetnacl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", - "optional": true - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "node_modules/electron-fetch": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/electron-fetch/-/electron-fetch-1.7.4.tgz", - "integrity": "sha512-+fBLXEy4CJWQ5bz8dyaeSG1hD6JJ15kBZyj3eh24pIVrd3hLM47H/umffrdQfS6GZ0falF0g9JT9f3Rs6AVUhw==", - "optional": true, - "dependencies": { - "encoding": "^0.1.13" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.3.853", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.853.tgz", - "integrity": "sha512-W4U8n+U8I5/SUaFcqZgbKRmYZwcyEIQVBDf+j5QQK6xChjXnQD+wj248eGR9X4u+dDmDR//8vIfbu4PrdBBIoQ==", - "devOptional": true - }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "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.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/emittery": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.4.1.tgz", - "integrity": "sha512-r4eRSeStEGf6M5SKdrQhhLK5bOwOBxQhIE3YSTnZE3GpKiLfnnhE+tPtrJE79+eDJgm39BM6LSoI8SCx4HbwlQ==", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "optional": true - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "devOptional": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/encoding-down": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/encoding-down/-/encoding-down-6.3.0.tgz", - "integrity": "sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw==", - "optional": true, - "dependencies": { - "abstract-leveldown": "^6.2.1", - "inherits": "^2.0.3", - "level-codec": "^9.0.0", - "level-errors": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/encoding-down/node_modules/abstract-leveldown": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz", - "integrity": "sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ==", - "optional": true, - "dependencies": { - "buffer": "^5.5.0", - "immediate": "^3.2.3", - "level-concat-iterator": "~2.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "devOptional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/end-stream": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/end-stream/-/end-stream-0.1.0.tgz", - "integrity": "sha1-MgA/P0OKKwFDFoE3+PpumGbIHtU=", - "optional": true, - "dependencies": { - "write-stream": "~0.4.3" - } - }, - "node_modules/enhanced-resolve": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz", - "integrity": "sha1-BCHjOf1xQZs9oT0Smzl5BAIwR24=", - "dependencies": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.4.0", - "object-assign": "^4.0.1", - "tapable": "^0.2.7" - }, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "optional": true - }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.18.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.6.tgz", - "integrity": "sha512-kAeIT4cku5eNLNuUKhlmtuk1/TRZvQoYccn6TO0cSVdf1kzB0T7+dYuVK9MWM7l+/53W2Q8M7N2c6MQvhXFcUQ==", - "dependencies": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-string": "^1.0.7", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" - }, - "node_modules/es-get-iterator": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz", - "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.0", - "has-symbols": "^1.0.1", - "is-arguments": "^1.1.0", - "is-map": "^2.0.2", - "is-set": "^2.0.2", - "is-string": "^1.0.5", - "isarray": "^2.0.5" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-get-iterator/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es5-ext": { - "version": "0.10.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "dependencies": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" - } - }, - "node_modules/es6-denodeify": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-denodeify/-/es6-denodeify-0.1.5.tgz", - "integrity": "sha1-MdTV/pxVA+ElRgQ5MQ4WoqPznB8=", - "optional": true - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-map": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", - "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-set": "~0.1.5", - "es6-symbol": "~3.1.1", - "event-emitter": "~0.3.5" - } - }, - "node_modules/es6-set": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", - "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14", - "es6-iterator": "~2.0.1", - "es6-symbol": "3.1.1", - "event-emitter": "~0.3.5" - } - }, - "node_modules/es6-set/node_modules/es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "node_modules/es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "devOptional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "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": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", - "optional": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=4.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/escope": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", - "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", - "dependencies": { - "es6-map": "^0.1.3", - "es6-weak-map": "^2.0.1", - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/esdoc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/esdoc/-/esdoc-1.1.0.tgz", - "integrity": "sha512-vsUcp52XJkOWg9m1vDYplGZN2iDzvmjDL5M/Mp8qkoDG3p2s0yIQCIjKR5wfPBaM3eV14a6zhQNYiNTCVzPnxA==", - "dependencies": { - "babel-generator": "6.26.1", - "babel-traverse": "6.26.0", - "babylon": "6.18.0", - "cheerio": "1.0.0-rc.2", - "color-logger": "0.0.6", - "escape-html": "1.0.3", - "fs-extra": "5.0.0", - "ice-cap": "0.0.4", - "marked": "0.3.19", - "minimist": "1.2.0", - "taffydb": "2.7.3" - }, - "bin": { - "esdoc": "out/src/ESDocCLI.js" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/esdoc/node_modules/cheerio": { - "version": "1.0.0-rc.2", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.2.tgz", - "integrity": "sha1-S59TqBsn5NXawxwP/Qz6A8xoMNs=", - "dependencies": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.0", - "entities": "~1.1.1", - "htmlparser2": "^3.9.1", - "lodash": "^4.15.0", - "parse5": "^3.0.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/esdoc/node_modules/css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "dependencies": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" - } - }, - "node_modules/esdoc/node_modules/css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", - "engines": { - "node": "*" - } - }, - "node_modules/esdoc/node_modules/dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", - "dependencies": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" - } - }, - "node_modules/esdoc/node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - }, - "node_modules/esdoc/node_modules/domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dependencies": { - "domelementtype": "1" - } - }, - "node_modules/esdoc/node_modules/domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "node_modules/esdoc/node_modules/entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" - }, - "node_modules/esdoc/node_modules/fs-extra": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", - "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "node_modules/esdoc/node_modules/htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dependencies": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - } - }, - "node_modules/esdoc/node_modules/minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" - }, - "node_modules/esdoc/node_modules/nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dependencies": { - "boolbase": "~1.0.0" - } - }, - "node_modules/esdoc/node_modules/parse5": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz", - "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==", - "dependencies": { - "@types/node": "*" - } - }, - "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==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "engines": { - "node": ">=4.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==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/eth-block-tracker": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/eth-block-tracker/-/eth-block-tracker-4.4.3.tgz", - "integrity": "sha512-A8tG4Z4iNg4mw5tP1Vung9N9IjgMNqpiMoJ/FouSFwNCGHv2X0mmOYwtQOJzki6XN7r7Tyo01S29p7b224I4jw==", - "dev": true, - "dependencies": { - "@babel/plugin-transform-runtime": "^7.5.5", - "@babel/runtime": "^7.5.5", - "eth-query": "^2.1.0", - "json-rpc-random-id": "^1.0.1", - "pify": "^3.0.0", - "safe-event-emitter": "^1.0.1" - } - }, - "node_modules/eth-ens-namehash": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", - "integrity": "sha1-IprEbsqG1S4MmR58sq74P/D2i88=", - "dependencies": { - "idna-uts46-hx": "^2.3.1", - "js-sha3": "^0.5.7" - } - }, - "node_modules/eth-gas-reporter": { - "version": "0.2.22", - "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.22.tgz", - "integrity": "sha512-L1FlC792aTf3j/j+gGzSNlGrXKSxNPXQNk6TnV5NNZ2w3jnQCRyJjDl0zUo25Cq2t90IS5vGdbkwqFQK7Ce+kw==", - "dev": true, - "dependencies": { - "@ethersproject/abi": "^5.0.0-beta.146", - "@solidity-parser/parser": "^0.12.0", - "cli-table3": "^0.5.0", - "colors": "^1.1.2", - "ethereumjs-util": "6.2.0", - "ethers": "^4.0.40", - "fs-readdir-recursive": "^1.1.0", - "lodash": "^4.17.14", - "markdown-table": "^1.1.3", - "mocha": "^7.1.1", - "req-cwd": "^2.0.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.5", - "sha1": "^1.1.1", - "sync-request": "^6.0.0" - }, - "peerDependencies": { - "@codechecks/client": "^0.1.0" - } - }, - "node_modules/eth-gas-reporter/node_modules/@solidity-parser/parser": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.12.2.tgz", - "integrity": "sha512-d7VS7PxgMosm5NyaiyDJRNID5pK4AWj1l64Dbz0147hJgy5k2C0/ZiKK/9u5c5K+HRUVHmp+RMvGEjGh84oA5Q==", - "dev": true - }, - "node_modules/eth-gas-reporter/node_modules/ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/eth-gas-reporter/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/eth-gas-reporter/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eth-gas-reporter/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/eth-gas-reporter/node_modules/chokidar": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", - "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", - "dev": true, - "dependencies": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.2.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.1.1" - } - }, - "node_modules/eth-gas-reporter/node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "node_modules/eth-gas-reporter/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eth-gas-reporter/node_modules/diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/eth-gas-reporter/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "node_modules/eth-gas-reporter/node_modules/ethereumjs-util": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.0.tgz", - "integrity": "sha512-vb0XN9J2QGdZGIEKG2vXM+kUdEivUfU6Wmi5y0cg+LRhDYKnXIZ/Lz7XjFbHRR9VIKq2lVGLzGBkA++y2nOdOQ==", - "dev": true, - "dependencies": { - "@types/bn.js": "^4.11.3", - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "ethjs-util": "0.1.6", - "keccak": "^2.0.0", - "rlp": "^2.2.3", - "secp256k1": "^3.0.1" - } - }, - "node_modules/eth-gas-reporter/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eth-gas-reporter/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/eth-gas-reporter/node_modules/fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "deprecated": "\"Please update to latest v2.3 or v2.2\"", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/eth-gas-reporter/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, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/eth-gas-reporter/node_modules/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": 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": "*" - } - }, - "node_modules/eth-gas-reporter/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, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/eth-gas-reporter/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": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eth-gas-reporter/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, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eth-gas-reporter/node_modules/js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/eth-gas-reporter/node_modules/keccak": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-2.1.0.tgz", - "integrity": "sha512-m1wbJRTo+gWbctZWay9i26v5fFnYkOn7D5PCxJ3fZUGUEb49dE1Pm4BREUYCt/aoO6di7jeoGmhvqN9Nzylm3Q==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "bindings": "^1.5.0", - "inherits": "^2.0.4", - "nan": "^2.14.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=5.12.0" - } - }, - "node_modules/eth-gas-reporter/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/eth-gas-reporter/node_modules/log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eth-gas-reporter/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/eth-gas-reporter/node_modules/mocha": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz", - "integrity": "sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==", - "dev": true, - "dependencies": { - "ansi-colors": "3.2.3", - "browser-stdout": "1.3.1", - "chokidar": "3.3.0", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "find-up": "3.0.0", - "glob": "7.1.3", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "3.0.0", - "minimatch": "3.0.4", - "mkdirp": "0.5.5", - "ms": "2.1.1", - "node-environment-flags": "1.0.6", - "object.assign": "4.1.0", - "strip-json-comments": "2.0.1", - "supports-color": "6.0.0", - "which": "1.3.1", - "wide-align": "1.1.3", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "node_modules/eth-gas-reporter/node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true - }, - "node_modules/eth-gas-reporter/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, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eth-gas-reporter/node_modules/object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "dependencies": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/eth-gas-reporter/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eth-gas-reporter/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/eth-gas-reporter/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/eth-gas-reporter/node_modules/readdirp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", - "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", - "dev": true, - "dependencies": { - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/eth-gas-reporter/node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "node_modules/eth-gas-reporter/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" - } - ] - }, - "node_modules/eth-gas-reporter/node_modules/secp256k1": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.8.0.tgz", - "integrity": "sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "bindings": "^1.5.0", - "bip66": "^1.1.5", - "bn.js": "^4.11.8", - "create-hash": "^1.2.0", - "drbg.js": "^1.0.1", - "elliptic": "^6.5.2", - "nan": "^2.14.0", - "safe-buffer": "^5.1.2" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/eth-gas-reporter/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/eth-gas-reporter/node_modules/supports-color": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/eth-gas-reporter/node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/eth-gas-reporter/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "node_modules/eth-gas-reporter/node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "node_modules/eth-gas-reporter/node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/eth-gas-reporter/node_modules/yargs-unparser": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", - "dev": true, - "dependencies": { - "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/eth-json-rpc-errors": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/eth-json-rpc-errors/-/eth-json-rpc-errors-2.0.2.tgz", - "integrity": "sha512-uBCRM2w2ewusRHGxN8JhcuOb2RN3ueAOYH/0BhqdFmQkZx5lj5+fLKTz0mIVOzd4FG5/kUksCzCD7eTEim6gaA==", - "deprecated": "Package renamed: https://www.npmjs.com/package/eth-rpc-errors", - "dev": true, - "dependencies": { - "fast-safe-stringify": "^2.0.6" - } - }, - "node_modules/eth-lib": { - "version": "0.1.29", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz", - "integrity": "sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==", - "dependencies": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "nano-json-stream-parser": "^0.1.2", - "servify": "^0.1.12", - "ws": "^3.0.0", - "xhr-request-promise": "^0.1.2" - } - }, - "node_modules/eth-lib/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/eth-query": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/eth-query/-/eth-query-2.1.2.tgz", - "integrity": "sha1-1nQdkAAQa1FRDHLbktY2VFam2l4=", - "dev": true, - "dependencies": { - "json-rpc-random-id": "^1.0.0", - "xtend": "^4.0.1" - } - }, - "node_modules/eth-rpc-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eth-rpc-errors/-/eth-rpc-errors-3.0.0.tgz", - "integrity": "sha512-iPPNHPrLwUlR9xCSYm7HHQjWBasor3+KZfRvwEWxMz3ca0yqnlBeJrnyphkGIXZ4J7AMAaOLmwy4AWhnxOiLxg==", - "dev": true, - "dependencies": { - "fast-safe-stringify": "^2.0.6" - } - }, - "node_modules/eth-sig-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-3.0.1.tgz", - "integrity": "sha512-0Us50HiGGvZgjtWTyAI/+qTzYPMLy5Q451D0Xy68bxq1QMWdoOddDwGvsqcFT27uohKgalM9z/yxplyt+mY2iQ==", - "dev": true, - "dependencies": { - "ethereumjs-abi": "^0.6.8", - "ethereumjs-util": "^5.1.1", - "tweetnacl": "^1.0.3", - "tweetnacl-util": "^0.15.0" - } - }, - "node_modules/eth-sig-util/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/eth-sig-util/node_modules/ethereumjs-util": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", - "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "^0.1.3", - "rlp": "^2.0.0", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/eth-sig-util/node_modules/tweetnacl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", - "dev": true - }, - "node_modules/ethereum-bloom-filters": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", - "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", - "dependencies": { - "js-sha3": "^0.8.0" - } - }, - "node_modules/ethereum-bloom-filters/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==" - }, - "node_modules/ethereum-common": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.2.0.tgz", - "integrity": "sha512-XOnAR/3rntJgbCdGhqdaLIxDLWKLmsZOGhHdBKadEr6gEnJLH52k93Ou+TUdFaPN3hJc3isBZBal3U/XZ15abA==", - "dev": true - }, - "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==", - "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/ethereum-cryptography/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==", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/ethereum-cryptography/node_modules/scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" - }, - "node_modules/ethereum-cryptography/node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" - }, - "node_modules/ethereum-protocol": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ethereum-protocol/-/ethereum-protocol-1.0.1.tgz", - "integrity": "sha512-3KLX1mHuEsBW0dKG+c6EOJS1NBNqdCICvZW9sInmZTt5aY0oxmHVggYRE0lJu1tcnMD1K+AKHdLi6U43Awm1Vg==", - "dev": true - }, - "node_modules/ethereumjs-abi": { - "version": "0.6.8", - "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", - "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.8", - "ethereumjs-util": "^6.0.0" - } - }, - "node_modules/ethereumjs-abi/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/ethereumjs-abi/node_modules/ethereumjs-util": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", - "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", - "dev": true, - "dependencies": { - "@types/bn.js": "^4.11.3", - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "0.1.6", - "rlp": "^2.2.3" - } - }, - "node_modules/ethereumjs-account": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/ethereumjs-account/-/ethereumjs-account-2.0.5.tgz", - "integrity": "sha512-bgDojnXGjhMwo6eXQC0bY6UK2liSFUSMwwylOmQvZbSl/D7NXQ3+vrGO46ZeOgjGfxXmgIeVNDIiHw7fNZM4VA==", - "dev": true, - "dependencies": { - "ethereumjs-util": "^5.0.0", - "rlp": "^2.0.0", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/ethereumjs-account/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/ethereumjs-account/node_modules/ethereumjs-util": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", - "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "^0.1.3", - "rlp": "^2.0.0", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/ethereumjs-block": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-1.7.1.tgz", - "integrity": "sha512-B+sSdtqm78fmKkBq78/QLKJbu/4Ts4P2KFISdgcuZUPDm9x+N7qgBPIIFUGbaakQh8bzuquiRVbdmvPKqbILRg==", - "deprecated": "New package name format for new versions: @ethereumjs/block. Please update.", - "dev": true, - "dependencies": { - "async": "^2.0.1", - "ethereum-common": "0.2.0", - "ethereumjs-tx": "^1.2.2", - "ethereumjs-util": "^5.0.0", - "merkle-patricia-tree": "^2.1.2" - } - }, - "node_modules/ethereumjs-block/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/ethereumjs-block/node_modules/ethereumjs-tx": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz", - "integrity": "sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==", - "deprecated": "New package name format for new versions: @ethereumjs/tx. Please update.", - "dev": true, - "dependencies": { - "ethereum-common": "^0.0.18", - "ethereumjs-util": "^5.0.0" - } - }, - "node_modules/ethereumjs-block/node_modules/ethereumjs-tx/node_modules/ethereum-common": { - "version": "0.0.18", - "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz", - "integrity": "sha1-L9w1dvIykDNYl26znaeDIT/5Uj8=", - "dev": true - }, - "node_modules/ethereumjs-block/node_modules/ethereumjs-util": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", - "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "^0.1.3", - "rlp": "^2.0.0", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/ethereumjs-common": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz", - "integrity": "sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA==", - "deprecated": "New package name format for new versions: @ethereumjs/common. Please update.", - "dev": true - }, - "node_modules/ethereumjs-testrpc": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/ethereumjs-testrpc/-/ethereumjs-testrpc-6.0.3.tgz", - "integrity": "sha512-lAxxsxDKK69Wuwqym2K49VpXtBvLEsXr1sryNG4AkvL5DomMdeCBbu3D87UEevKenLHBiT8GTjARwN6Yj039gA==", - "deprecated": "ethereumjs-testrpc has been renamed to ganache-cli, please use this package from now on.", - "dependencies": { - "webpack": "^3.0.0" - }, - "bin": { - "testrpc": "build/cli.node.js" - } - }, - "node_modules/ethereumjs-tx": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", - "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", - "deprecated": "New package name format for new versions: @ethereumjs/tx. Please update.", - "dev": true, - "dependencies": { - "ethereumjs-common": "^1.5.0", - "ethereumjs-util": "^6.0.0" - } - }, - "node_modules/ethereumjs-tx/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/ethereumjs-tx/node_modules/ethereumjs-util": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", - "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", - "dev": true, - "dependencies": { - "@types/bn.js": "^4.11.3", - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "0.1.6", - "rlp": "^2.2.3" - } - }, - "node_modules/ethereumjs-util": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.0.tgz", - "integrity": "sha512-kR+vhu++mUDARrsMMhsjjzPduRVAeundLGXucGRHF3B4oEltOUspfgCVco4kckucj3FMlLaZHUl9n7/kdmr6Tw==", - "dependencies": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "0.1.6", - "rlp": "^2.2.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/ethereumjs-util/node_modules/@types/bn.js": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz", - "integrity": "sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/ethereumjs-vm": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/ethereumjs-vm/-/ethereumjs-vm-2.6.0.tgz", - "integrity": "sha512-r/XIUik/ynGbxS3y+mvGnbOKnuLo40V5Mj1J25+HEO63aWYREIqvWeRO/hnROlMBE5WoniQmPmhiaN0ctiHaXw==", - "deprecated": "New package name format for new versions: @ethereumjs/vm. Please update.", - "dev": true, - "dependencies": { - "async": "^2.1.2", - "async-eventemitter": "^0.2.2", - "ethereumjs-account": "^2.0.3", - "ethereumjs-block": "~2.2.0", - "ethereumjs-common": "^1.1.0", - "ethereumjs-util": "^6.0.0", - "fake-merkle-patricia-tree": "^1.0.1", - "functional-red-black-tree": "^1.0.1", - "merkle-patricia-tree": "^2.3.2", - "rustbn.js": "~0.2.0", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/ethereumjs-vm/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/ethereumjs-vm/node_modules/ethereumjs-block": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/ethereumjs-block/-/ethereumjs-block-2.2.2.tgz", - "integrity": "sha512-2p49ifhek3h2zeg/+da6XpdFR3GlqY3BIEiqxGF8j9aSRIgkb7M1Ky+yULBKJOu8PAZxfhsYA+HxUk2aCQp3vg==", - "deprecated": "New package name format for new versions: @ethereumjs/block. Please update.", - "dev": true, - "dependencies": { - "async": "^2.0.1", - "ethereumjs-common": "^1.5.0", - "ethereumjs-tx": "^2.1.1", - "ethereumjs-util": "^5.0.0", - "merkle-patricia-tree": "^2.1.2" - } - }, - "node_modules/ethereumjs-vm/node_modules/ethereumjs-block/node_modules/ethereumjs-util": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", - "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "^0.1.3", - "rlp": "^2.0.0", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/ethereumjs-vm/node_modules/ethereumjs-util": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", - "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", - "dev": true, - "dependencies": { - "@types/bn.js": "^4.11.3", - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "0.1.6", - "rlp": "^2.2.3" - } - }, - "node_modules/ethereumjs-wallet": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ethereumjs-wallet/-/ethereumjs-wallet-1.0.1.tgz", - "integrity": "sha512-3Z5g1hG1das0JWU6cQ9HWWTY2nt9nXCcwj7eXVNAHKbo00XAZO8+NHlwdgXDWrL0SXVQMvTWN8Q/82DRH/JhPw==", - "dev": true, - "dependencies": { - "aes-js": "^3.1.1", - "bs58check": "^2.1.2", - "ethereum-cryptography": "^0.1.3", - "ethereumjs-util": "^7.0.2", - "randombytes": "^2.0.6", - "scrypt-js": "^3.0.1", - "utf8": "^3.0.0", - "uuid": "^3.3.2" - } - }, - "node_modules/ethereumjs-wallet/node_modules/aes-js": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.1.2.tgz", - "integrity": "sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ==", - "dev": true - }, - "node_modules/ethereumjs-wallet/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 - }, - "node_modules/ethereumjs-wallet/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/ethers": { - "version": "4.0.49", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.49.tgz", - "integrity": "sha512-kPltTvWiyu+OktYy1IStSO16i2e7cS9D9OxZ81q2UUaiNPVrm/RTcbxamCXF9VUSKzJIdJV68EAIhTEVBalRWg==", - "dependencies": { - "aes-js": "3.0.0", - "bn.js": "^4.11.9", - "elliptic": "6.5.4", - "hash.js": "1.1.3", - "js-sha3": "0.5.7", - "scrypt-js": "2.0.4", - "setimmediate": "1.0.4", - "uuid": "2.0.1", - "xmlhttprequest": "1.8.0" - } - }, - "node_modules/ethers/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/ethjs-abi": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ethjs-abi/-/ethjs-abi-0.2.1.tgz", - "integrity": "sha1-4KepOn6BFjqUR3utVu3lJKtt5TM=", - "dev": true, - "dependencies": { - "bn.js": "4.11.6", - "js-sha3": "0.5.5", - "number-to-bn": "1.7.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/ethjs-abi/node_modules/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=", - "dev": true - }, - "node_modules/ethjs-abi/node_modules/js-sha3": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.5.tgz", - "integrity": "sha1-uvDA6MVK1ZA0R9+Wreekobynmko=", - "dev": true - }, - "node_modules/ethjs-unit": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", - "integrity": "sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk=", - "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": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" - }, - "node_modules/ethjs-util": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", - "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", - "dependencies": { - "is-hex-prefixed": "1.0.0", - "strip-hex-prefix": "1.0.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", - "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" - } - }, - "node_modules/event-iterator": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/event-iterator/-/event-iterator-1.2.0.tgz", - "integrity": "sha512-Daq7YUl0Mv1i4QEgzGQlz0jrx7hUFNyLGbiF+Ap7NCMCjDLCCnolyj6s0TAc6HmrBziO5rNVHsPwGMp7KdRPvw==", - "optional": true - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", - "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==" - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "engines": { - "node": ">=0.8.x" - } - }, - "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==", - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", - "dependencies": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/execa/node_modules/get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "engines": { - "node": ">=4" - } - }, - "node_modules/exit-on-epipe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", - "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/expand-brackets": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", - "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", - "optional": true, - "dependencies": { - "is-posix-bracket": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-range": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", - "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", - "optional": true, - "dependencies": { - "fill-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "optional": true, - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "dependencies": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/ext": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.5.0.tgz", - "integrity": "sha512-+ONcYoWj/SoQwUofMr94aGu05Ou4FepKi7N7b+O8T4jVfyIsZQV1/xeS8jpaBzF0csAk0KLXoHCxU7cKYZjo1Q==", - "dependencies": { - "type": "^2.5.0" - } - }, - "node_modules/ext/node_modules/type": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.5.0.tgz", - "integrity": "sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw==" - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "optional": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", - "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", - "optional": true, - "dependencies": { - "is-extglob": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extglob/node_modules/is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extract-files": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/extract-files/-/extract-files-9.0.0.tgz", - "integrity": "sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ==", - "optional": true, - "engines": { - "node": "^10.17.0 || ^12.0.0 || >= 13.7.0" - }, - "funding": { - "url": "https://github.com/sponsors/jaydenseric" - } - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/fake-merkle-patricia-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fake-merkle-patricia-tree/-/fake-merkle-patricia-tree-1.0.1.tgz", - "integrity": "sha1-S4w6z7Ugr635hgsfFM2M40As3dM=", - "dev": true, - "dependencies": { - "checkpoint-store": "^1.1.0" - } - }, - "node_modules/faker": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/faker/-/faker-5.5.3.tgz", - "integrity": "sha512-wLTv2a28wjUyWkbnX7u/ABZBkUkIF2fCd73V6P2oFqEGEktDfzWx4UxrSqtPRw0xPRAcjeAOIiJWqZm3pP4u3g==" - }, - "node_modules/fast-check": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-2.17.0.tgz", - "integrity": "sha512-fNNKkxNEJP+27QMcEzF6nbpOYoSZIS0p+TyB+xh/jXqRBxRhLkiZSREly4ruyV8uJi7nwH1YWAhi7OOK5TubRw==", - "dependencies": { - "pure-rand": "^5.0.0" - }, - "engines": { - "node": ">=8.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - }, - "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==" - }, - "node_modules/fast-fifo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.0.0.tgz", - "integrity": "sha512-4VEXmjxLj7sbs8J//cn2qhRap50dGzF5n8fjay8mau+Jn4hxSeR3xPFwxMaQq/pDaq7+KQk0PAbC2+nWDkJrmQ==", - "optional": true - }, - "node_modules/fast-future": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fast-future/-/fast-future-1.0.2.tgz", - "integrity": "sha1-hDWpqqAteSSNF9cE52JZMB2ZKAo=", - "optional": true - }, - "node_modules/fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", - "optional": 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.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fast-glob/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "optional": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fast-glob/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "optional": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fast-glob/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==", - "optional": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-glob/node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "optional": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-glob/node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "optional": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "optional": true - }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", - "dev": true - }, - "node_modules/fast-sha256": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-sha256/-/fast-sha256-1.3.0.tgz", - "integrity": "sha512-n11RGP/lrWEFI/bWdygLxhI+pVeo1ZYIVwvvPkW7azl/rOy+F3HYRZ2K5zeE9mmkhQppyv9sQFx0JM9UabnpPQ==", - "optional": true - }, - "node_modules/fastestsmallesttextencoderdecoder": { - "version": "1.0.22", - "resolved": "https://registry.npmjs.org/fastestsmallesttextencoderdecoder/-/fastestsmallesttextencoderdecoder-1.0.22.tgz", - "integrity": "sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==", - "optional": true - }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "optional": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", - "optional": true, - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/fbjs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.0.tgz", - "integrity": "sha512-dJd4PiDOFuhe7vk4F80Mba83Vr2QuK86FoxtgPmzBqEJahncp+13YCmfoa53KHCo6OnlXLG7eeMWPfB5CrpVKg==", - "optional": true, - "dependencies": { - "cross-fetch": "^3.0.4", - "fbjs-css-vars": "^1.0.0", - "loose-envify": "^1.0.0", - "object-assign": "^4.1.0", - "promise": "^7.1.1", - "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.18" - } - }, - "node_modules/fbjs-css-vars": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", - "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==", - "optional": true - }, - "node_modules/fbjs/node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "optional": true - }, - "node_modules/fetch-cookie": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-0.7.0.tgz", - "integrity": "sha512-Mm5pGlT3agW6t71xVM7vMZPIvI7T4FaTuFW4jari6dVzYHFDb3WZZsGpN22r/o3XMdkM0E7sPd1EGeyVbH2Tgg==", - "optional": true, - "dependencies": { - "es6-denodeify": "^0.1.1", - "tough-cookie": "^2.3.1" - } - }, - "node_modules/fetch-ponyfill": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/fetch-ponyfill/-/fetch-ponyfill-4.1.0.tgz", - "integrity": "sha1-rjzl9zLGReq4fkroeTQUcJsjmJM=", - "dev": true, - "dependencies": { - "node-fetch": "~1.7.1" - } - }, - "node_modules/fetch-ponyfill/node_modules/node-fetch": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", - "dev": true, - "dependencies": { - "encoding": "^0.1.11", - "is-stream": "^1.0.1" - } - }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "devOptional": true - }, - "node_modules/filecoin.js": { - "version": "0.0.5-alpha", - "resolved": "https://registry.npmjs.org/filecoin.js/-/filecoin.js-0.0.5-alpha.tgz", - "integrity": "sha512-xPrB86vDnTPfmvtN/rJSrhl4M77694ruOgNXd0+5gP67mgmCDhStLCqcr+zHIDRgDpraf7rY+ELbwjXZcQNdpQ==", - "optional": true, - "dependencies": { - "@ledgerhq/hw-transport-webusb": "^5.22.0", - "@nodefactory/filsnap-adapter": "^0.2.1", - "@nodefactory/filsnap-types": "^0.2.1", - "@zondax/filecoin-signing-tools": "github:Digital-MOB-Filecoin/filecoin-signing-tools-js", - "bignumber.js": "^9.0.0", - "bitcore-lib": "^8.22.2", - "bitcore-mnemonic": "^8.22.2", - "btoa-lite": "^1.0.0", - "events": "^3.2.0", - "isomorphic-ws": "^4.0.1", - "node-fetch": "^2.6.0", - "rpc-websockets": "^5.3.1", - "scrypt-async": "^2.0.1", - "tweetnacl": "^1.0.3", - "tweetnacl-util": "^0.15.1", - "websocket": "^1.0.31", - "ws": "^7.3.1" - } - }, - "node_modules/filecoin.js/node_modules/tweetnacl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", - "optional": true - }, - "node_modules/filecoin.js/node_modules/ws": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", - "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", - "optional": true, - "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/filename-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", - "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fill-range": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", - "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", - "optional": true, - "dependencies": { - "is-number": "^2.1.0", - "isobject": "^2.0.0", - "randomatic": "^3.0.0", - "repeat-element": "^1.1.2", - "repeat-string": "^1.5.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/first-chunk-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz", - "integrity": "sha1-Wb+1DNkF9g18OUzT2ayqtOatk04=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/flat": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", - "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", - "dependencies": { - "is-buffer": "~2.0.3" - }, - "bin": { - "flat": "cli.js" - } - }, - "node_modules/flat/node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "engines": { - "node": ">=4" - } - }, - "node_modules/follow-redirects": { - "version": "1.14.4", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", - "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==", - "devOptional": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "optional": true, - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/for-own": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", - "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", - "optional": true, - "dependencies": { - "for-in": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/foreach": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", - "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "optional": true, - "dependencies": { - "map-cache": "^0.2.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-capacitor": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/fs-capacitor/-/fs-capacitor-2.0.4.tgz", - "integrity": "sha512-8S4f4WsCryNw2mJJchi46YgB6CR5Ze+4L1h8ewl9tEpL4SJ3ZO+c/bS4BWhB8bK+O3TMqhuZarTitd0S0eh2pA==", - "optional": true, - "engines": { - "node": ">=8.5" - } - }, - "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==", - "optional": 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/fs-extra/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "optional": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/fs-extra/node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "optional": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/fs-minipass": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", - "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", - "dependencies": { - "minipass": "^2.6.0" - } - }, - "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 - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "devOptional": true - }, - "node_modules/ganache-cli": { - "version": "6.12.2", - "resolved": "https://registry.npmjs.org/ganache-cli/-/ganache-cli-6.12.2.tgz", - "integrity": "sha512-bnmwnJDBDsOWBUP8E/BExWf85TsdDEFelQSzihSJm9VChVO1SHp94YXLP5BlA4j/OTxp0wR4R1Tje9OHOuAJVw==", - "bundleDependencies": [ - "source-map-support", - "yargs", - "ethereumjs-util" - ], - "dependencies": { - "ethereumjs-util": "6.2.1", - "source-map-support": "0.5.12", - "yargs": "13.2.4" - }, - "bin": { - "ganache-cli": "cli.js" - } - }, - "node_modules/ganache-cli/node_modules/@types/bn.js": { - "version": "4.11.6", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/ganache-cli/node_modules/@types/node": { - "version": "14.11.2", - "devOptional": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache-cli/node_modules/@types/pbkdf2": { - "version": "3.1.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/ganache-cli/node_modules/@types/secp256k1": { - "version": "4.0.1", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/ganache-cli/node_modules/ansi-regex": { - "version": "4.1.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/ansi-styles": { - "version": "3.2.1", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ganache-cli/node_modules/base-x": { - "version": "3.0.8", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/ganache-cli/node_modules/blakejs": { - "version": "1.1.0", - "devOptional": true, - "inBundle": true, - "license": "CC0-1.0" - }, - "node_modules/ganache-cli/node_modules/bn.js": { - "version": "4.11.9", - "devOptional": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache-cli/node_modules/brorand": { - "version": "1.1.0", - "devOptional": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache-cli/node_modules/browserify-aes": { - "version": "1.2.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "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/ganache-cli/node_modules/bs58": { - "version": "4.0.1", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/ganache-cli/node_modules/bs58check": { - "version": "2.1.2", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/ganache-cli/node_modules/buffer-from": { - "version": "1.1.1", - "devOptional": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache-cli/node_modules/buffer-xor": { - "version": "1.0.3", - "devOptional": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache-cli/node_modules/camelcase": { - "version": "5.3.1", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/cipher-base": { - "version": "1.0.4", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/ganache-cli/node_modules/cliui": { - "version": "5.0.0", - "devOptional": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "node_modules/ganache-cli/node_modules/color-convert": { - "version": "1.9.3", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/ganache-cli/node_modules/color-name": { - "version": "1.1.3", - "devOptional": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache-cli/node_modules/create-hash": { - "version": "1.2.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "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/ganache-cli/node_modules/create-hmac": { - "version": "1.1.7", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "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/ganache-cli/node_modules/cross-spawn": { - "version": "6.0.5", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/ganache-cli/node_modules/decamelize": { - "version": "1.2.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ganache-cli/node_modules/elliptic": { - "version": "6.5.3", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - } - }, - "node_modules/ganache-cli/node_modules/emoji-regex": { - "version": "7.0.3", - "devOptional": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache-cli/node_modules/end-of-stream": { - "version": "1.4.4", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/ganache-cli/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "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/ganache-cli/node_modules/ethereumjs-util": { - "version": "6.2.1", - "devOptional": true, - "inBundle": true, - "license": "MPL-2.0", - "dependencies": { - "@types/bn.js": "^4.11.3", - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "0.1.6", - "rlp": "^2.2.3" - } - }, - "node_modules/ganache-cli/node_modules/ethjs-util": { - "version": "0.1.6", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "is-hex-prefixed": "1.0.0", - "strip-hex-prefix": "1.0.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/ganache-cli/node_modules/evp_bytestokey": { - "version": "1.0.3", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/ganache-cli/node_modules/execa": { - "version": "1.0.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/find-up": { - "version": "3.0.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/get-caller-file": { - "version": "2.0.5", - "devOptional": true, - "inBundle": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/ganache-cli/node_modules/get-stream": { - "version": "4.1.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/hash-base": { - "version": "3.1.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ganache-cli/node_modules/hash.js": { - "version": "1.1.7", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "node_modules/ganache-cli/node_modules/hmac-drbg": { - "version": "1.0.1", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/ganache-cli/node_modules/inherits": { - "version": "2.0.4", - "devOptional": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/ganache-cli/node_modules/invert-kv": { - "version": "2.0.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/ganache-cli/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/ganache-cli/node_modules/is-hex-prefixed": { - "version": "1.0.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/ganache-cli/node_modules/is-stream": { - "version": "1.1.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ganache-cli/node_modules/isexe": { - "version": "2.0.0", - "devOptional": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/ganache-cli/node_modules/keccak": { - "version": "3.0.1", - "devOptional": true, - "hasInstallScript": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/ganache-cli/node_modules/lcid": { - "version": "2.0.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "invert-kv": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/locate-path": { - "version": "3.0.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/map-age-cleaner": { - "version": "0.1.3", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "p-defer": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/md5.js": { - "version": "1.3.5", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/ganache-cli/node_modules/mem": { - "version": "4.3.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "map-age-cleaner": "^0.1.1", - "mimic-fn": "^2.0.0", - "p-is-promise": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/mimic-fn": { - "version": "2.1.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/minimalistic-assert": { - "version": "1.0.1", - "devOptional": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/ganache-cli/node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "devOptional": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache-cli/node_modules/nice-try": { - "version": "1.0.5", - "devOptional": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache-cli/node_modules/node-addon-api": { - "version": "2.0.2", - "devOptional": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache-cli/node_modules/node-gyp-build": { - "version": "4.2.3", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/ganache-cli/node_modules/npm-run-path": { - "version": "2.0.2", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ganache-cli/node_modules/once": { - "version": "1.4.0", - "devOptional": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/ganache-cli/node_modules/os-locale": { - "version": "3.1.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "execa": "^1.0.0", - "lcid": "^2.0.0", - "mem": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/p-defer": { - "version": "1.0.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/ganache-cli/node_modules/p-finally": { - "version": "1.0.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/ganache-cli/node_modules/p-is-promise": { - "version": "2.1.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/p-limit": { - "version": "2.3.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ganache-cli/node_modules/p-locate": { - "version": "3.0.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/p-try": { - "version": "2.2.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/path-exists": { - "version": "3.0.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/ganache-cli/node_modules/path-key": { - "version": "2.0.1", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/ganache-cli/node_modules/pbkdf2": { - "version": "3.1.1", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/ganache-cli/node_modules/pump": { - "version": "3.0.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/ganache-cli/node_modules/randombytes": { - "version": "2.1.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/ganache-cli/node_modules/readable-stream": { - "version": "3.6.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/ganache-cli/node_modules/require-directory": { - "version": "2.1.1", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ganache-cli/node_modules/require-main-filename": { - "version": "2.0.0", - "devOptional": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/ganache-cli/node_modules/ripemd160": { - "version": "2.0.2", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/ganache-cli/node_modules/rlp": { - "version": "2.2.6", - "devOptional": true, - "inBundle": true, - "license": "MPL-2.0", - "dependencies": { - "bn.js": "^4.11.1" - }, - "bin": { - "rlp": "bin/rlp" - } - }, - "node_modules/ganache-cli/node_modules/safe-buffer": { - "version": "5.2.1", - "devOptional": 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" - } - ], - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache-cli/node_modules/scrypt-js": { - "version": "3.0.1", - "devOptional": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache-cli/node_modules/secp256k1": { - "version": "4.0.2", - "devOptional": true, - "hasInstallScript": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "elliptic": "^6.5.2", - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/ganache-cli/node_modules/semver": { - "version": "5.7.1", - "devOptional": true, - "inBundle": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/ganache-cli/node_modules/set-blocking": { - "version": "2.0.0", - "devOptional": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/ganache-cli/node_modules/setimmediate": { - "version": "1.0.5", - "devOptional": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache-cli/node_modules/sha.js": { - "version": "2.4.11", - "devOptional": true, - "inBundle": true, - "license": "(MIT AND BSD-3-Clause)", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/ganache-cli/node_modules/shebang-command": { - "version": "1.2.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ganache-cli/node_modules/shebang-regex": { - "version": "1.0.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ganache-cli/node_modules/signal-exit": { - "version": "3.0.3", - "devOptional": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/ganache-cli/node_modules/source-map": { - "version": "0.6.1", - "devOptional": true, - "inBundle": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ganache-cli/node_modules/source-map-support": { - "version": "0.5.12", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/ganache-cli/node_modules/string_decoder": { - "version": "1.3.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/ganache-cli/node_modules/string-width": { - "version": "3.1.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/strip-ansi": { - "version": "5.2.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/strip-eof": { - "version": "1.0.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ganache-cli/node_modules/strip-hex-prefix": { - "version": "1.0.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "is-hex-prefixed": "1.0.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/ganache-cli/node_modules/util-deprecate": { - "version": "1.0.2", - "devOptional": true, - "inBundle": true, - "license": "MIT" - }, - "node_modules/ganache-cli/node_modules/which": { - "version": "1.3.1", - "devOptional": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/ganache-cli/node_modules/which-module": { - "version": "2.0.0", - "devOptional": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/ganache-cli/node_modules/wrap-ansi": { - "version": "5.1.0", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ganache-cli/node_modules/wrappy": { - "version": "1.0.2", - "devOptional": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/ganache-cli/node_modules/y18n": { - "version": "4.0.0", - "devOptional": true, - "inBundle": true, - "license": "ISC" - }, - "node_modules/ganache-cli/node_modules/yargs": { - "version": "13.2.4", - "devOptional": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "os-locale": "^3.1.0", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.0" - } - }, - "node_modules/ganache-cli/node_modules/yargs-parser": { - "version": "13.1.2", - "devOptional": true, - "inBundle": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", - "optional": true, - "dependencies": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "node_modules/gauge/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gauge/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "optional": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "devOptional": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" - }, - "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/get-installed-path": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/get-installed-path/-/get-installed-path-4.0.8.tgz", - "integrity": "sha512-PmANK1xElIHlHH2tXfOoTnSDUjX1X3GvKK6ZyLbUnSCCn1pADwu67eVWttuPzJWrXDDT2MfO6uAaKILOFfitmA==", - "optional": true, - "dependencies": { - "global-modules": "1.0.0" - }, - "engines": { - "node": ">=6", - "npm": ">=5", - "yarn": ">=1" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-iterator": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-iterator/-/get-iterator-1.0.2.tgz", - "integrity": "sha512-v+dm9bNVfOYsY1OrhaCrmyOcYoSeVvbt+hHZ0Au+T+p1y+0Uyj9aMaGIeUTT6xdpRbWzDeYKvfOslPhggQMcsg==", - "optional": true - }, - "node_modules/get-params": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/get-params/-/get-params-0.1.2.tgz", - "integrity": "sha1-uuDfq6WIoMYNeDTA2Nwv9g7u8v4=" - }, - "node_modules/get-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/get-prototype-of": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/get-prototype-of/-/get-prototype-of-0.0.0.tgz", - "integrity": "sha1-mHcr0QcW0W3rSzIlFsRp78oorEQ=", - "optional": true - }, - "node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "optional": 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/glob-base": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", - "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", - "optional": true, - "dependencies": { - "glob-parent": "^2.0.0", - "is-glob": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-base/node_modules/glob-parent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", - "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", - "optional": true, - "dependencies": { - "is-glob": "^2.0.0" - } - }, - "node_modules/glob-base/node_modules/is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-base/node_modules/is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "optional": true, - "dependencies": { - "is-extglob": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "optional": true, - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/glob-stream": { - "version": "5.3.5", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-5.3.5.tgz", - "integrity": "sha1-pVZlqajM3EGRWofHAeMtTgFvrSI=", - "optional": true, - "dependencies": { - "extend": "^3.0.0", - "glob": "^5.0.3", - "glob-parent": "^3.0.0", - "micromatch": "^2.3.7", - "ordered-read-streams": "^0.3.0", - "through2": "^0.6.0", - "to-absolute-glob": "^0.1.1", - "unique-stream": "^2.0.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/glob-stream/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "optional": true - }, - "node_modules/glob-stream/node_modules/readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "optional": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/glob-stream/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "optional": true - }, - "node_modules/glob-stream/node_modules/through2": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", - "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", - "optional": true, - "dependencies": { - "readable-stream": ">=1.0.33-1 <1.1.0-0", - "xtend": ">=4.0.0 <4.1.0-0" - } - }, - "node_modules/global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "dependencies": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, - "node_modules/global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "optional": true, - "dependencies": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "optional": true, - "dependencies": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "devOptional": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/globalthis": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.2.tgz", - "integrity": "sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ==", - "optional": true, - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globby": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.3.tgz", - "integrity": "sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg==", - "optional": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/google-protobuf": { - "version": "3.17.3", - "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.17.3.tgz", - "integrity": "sha512-OVPzcSWIAJ+d5yiHyeaLrdufQtrvaBrF4JQg+z8ynTkbO3uFcujqXszTumqg1cGsAsjkWnI+M5B1xZ19yR4Wyg==", - "optional": true - }, - "node_modules/got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "optional": true - }, - "node_modules/graphql": { - "version": "15.5.3", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-15.5.3.tgz", - "integrity": "sha512-sM+jXaO5KinTui6lbK/7b7H/Knj9BpjGxZ+Ki35v7YbUJxxdBCUqNM0h3CRVU1ZF9t5lNiBzvBCSYPvIwxPOQA==", - "optional": true, - "engines": { - "node": ">= 10.x" - } - }, - "node_modules/graphql-extensions": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.15.0.tgz", - "integrity": "sha512-bVddVO8YFJPwuACn+3pgmrEg6I8iBuYLuwvxiE+lcQQ7POotVZxm2rgGw0PvVYmWWf3DT7nTVDZ5ROh/ALp8mA==", - "deprecated": "The `graphql-extensions` API has been removed from Apollo Server 3. Use the plugin API instead: https://www.apollographql.com/docs/apollo-server/integrations/plugins/", - "optional": true, - "dependencies": { - "@apollographql/apollo-tools": "^0.5.0", - "apollo-server-env": "^3.1.0", - "apollo-server-types": "^0.9.0" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependencies": { - "graphql": "^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/graphql-subscriptions": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/graphql-subscriptions/-/graphql-subscriptions-1.2.1.tgz", - "integrity": "sha512-95yD/tKi24q8xYa7Q9rhQN16AYj5wPbrb8tmHGM3WRc9EBmWrG/0kkMl+tQG8wcEuE9ibR4zyOM31p5Sdr2v4g==", - "optional": true, - "dependencies": { - "iterall": "^1.3.0" - }, - "peerDependencies": { - "graphql": "^0.10.5 || ^0.11.3 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/graphql-tag": { - "version": "2.12.5", - "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.5.tgz", - "integrity": "sha512-5xNhP4063d16Pz3HBtKprutsPrmHZi5IdUGOWRxA2B6VF7BIRGOHZ5WQvDmJXZuPcBg7rYwaFxvQYjqkSdR3TQ==", - "optional": true, - "dependencies": { - "tslib": "^2.1.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0" - } - }, - "node_modules/graphql-tools": { - "version": "6.2.6", - "resolved": "https://registry.npmjs.org/graphql-tools/-/graphql-tools-6.2.6.tgz", - "integrity": "sha512-OyhSvK5ALVVD6bFiWjAqv2+lRyvjIRfb6Br5Tkjrv++rxnXDodPH/zhMbDGRw+W3SD5ioGEEz84yO48iPiN7jA==", - "deprecated": "This package has been deprecated and now it only exports makeExecutableSchema.\\nAnd it will no longer receive updates.\\nWe recommend you to migrate to scoped packages such as @graphql-tools/schema, @graphql-tools/utils and etc.\\nCheck out https://www.graphql-tools.com to learn what package you should use instead", - "optional": true, - "dependencies": { - "@graphql-tools/batch-delegate": "^6.2.6", - "@graphql-tools/code-file-loader": "^6.2.4", - "@graphql-tools/delegate": "^6.2.4", - "@graphql-tools/git-loader": "^6.2.4", - "@graphql-tools/github-loader": "^6.2.4", - "@graphql-tools/graphql-file-loader": "^6.2.4", - "@graphql-tools/graphql-tag-pluck": "^6.2.4", - "@graphql-tools/import": "^6.2.4", - "@graphql-tools/json-file-loader": "^6.2.4", - "@graphql-tools/links": "^6.2.4", - "@graphql-tools/load": "^6.2.4", - "@graphql-tools/load-files": "^6.2.4", - "@graphql-tools/merge": "^6.2.4", - "@graphql-tools/mock": "^6.2.4", - "@graphql-tools/module-loader": "^6.2.4", - "@graphql-tools/relay-operation-optimizer": "^6.2.4", - "@graphql-tools/resolvers-composition": "^6.2.4", - "@graphql-tools/schema": "^6.2.4", - "@graphql-tools/stitch": "^6.2.4", - "@graphql-tools/url-loader": "^6.2.4", - "@graphql-tools/utils": "^6.2.4", - "@graphql-tools/wrap": "^6.2.4", - "tslib": "~2.0.1" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0" - } - }, - "node_modules/graphql-tools/node_modules/tslib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", - "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", - "optional": true - }, - "node_modules/graphql-ws": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/graphql-ws/-/graphql-ws-4.9.0.tgz", - "integrity": "sha512-sHkK9+lUm20/BGawNEWNtVAeJzhZeBg21VmvmLoT5NdGVeZWv5PdIhkcayQIAgjSyyQ17WMKmbDijIPG2On+Ag==", - "optional": true, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "graphql": ">=0.11 <=15" - } - }, - "node_modules/growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "engines": { - "node": ">=4.x" - } - }, - "node_modules/gulp-sourcemaps": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/gulp-sourcemaps/-/gulp-sourcemaps-1.12.1.tgz", - "integrity": "sha1-tDfR89mAzyboEYSCNxjOFa5ll7Y=", - "optional": true, - "dependencies": { - "@gulp-sourcemaps/map-sources": "1.X", - "acorn": "4.X", - "convert-source-map": "1.X", - "css": "2.X", - "debug-fabulous": "0.0.X", - "detect-newline": "2.X", - "graceful-fs": "4.X", - "source-map": "~0.6.0", - "strip-bom": "2.X", - "through2": "2.X", - "vinyl": "1.X" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "engines": { - "node": ">=4" - } - }, - "node_modules/has-symbol-support-x": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", - "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", - "engines": { - "node": "*" - } - }, - "node_modules/has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-to-string-tag-x": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", - "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", - "dependencies": { - "has-symbol-support-x": "^1.4.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "optional": true - }, - "node_modules/has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "optional": true, - "dependencies": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-value/node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "optional": true, - "dependencies": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "optional": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "optional": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-values/node_modules/kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "optional": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/hash-base/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==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/hash.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.0" - } - }, - "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==", - "bin": { - "he": "bin/he" - } - }, - "node_modules/header-case": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/header-case/-/header-case-1.0.1.tgz", - "integrity": "sha1-lTWXMZfBRLCWE81l0xfvGZY70C0=", - "dependencies": { - "no-case": "^2.2.0", - "upper-case": "^1.1.3" - } - }, - "node_modules/highlight.js": { - "version": "10.7.3", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", - "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", - "engines": { - "node": "*" - } - }, - "node_modules/highlightjs-solidity": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/highlightjs-solidity/-/highlightjs-solidity-2.0.2.tgz", - "integrity": "sha512-q0aYUKiZ9MPQg41qx/KpXKaCpqql50qTvmwGYyLFfcjt9AE/+C9CwjVIdJZc7EYj6NGgJuFJ4im1gfgrzUU1fQ==" - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "optional": true, - "dependencies": { - "react-is": "^16.7.0" - } - }, - "node_modules/homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "optional": true, - "dependencies": { - "parse-passwd": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" - }, - "node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "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, - "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-basic/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" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/http-basic/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 - }, - "node_modules/http-basic/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": 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/http-basic/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, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" - }, - "node_modules/http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-errors/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "node_modules/http-https": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz", - "integrity": "sha1-L5CN1fHbQGjAWM1ubUzjkskTOJs=" - }, - "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, - "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 - }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" - }, - "node_modules/ice-cap": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/ice-cap/-/ice-cap-0.0.4.tgz", - "integrity": "sha1-im0xq0ysjUtW3k+pRt8zUlYbbhg=", - "dependencies": { - "cheerio": "0.20.0", - "color-logger": "0.0.3" - } - }, - "node_modules/ice-cap/node_modules/cheerio": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.20.0.tgz", - "integrity": "sha1-XHEPK6uVZTJyhCugHG6mGzVF7DU=", - "dependencies": { - "css-select": "~1.2.0", - "dom-serializer": "~0.1.0", - "entities": "~1.1.1", - "htmlparser2": "~3.8.1", - "lodash": "^4.1.0" - }, - "engines": { - "node": ">= 0.6" - }, - "optionalDependencies": { - "jsdom": "^7.0.2" - } - }, - "node_modules/ice-cap/node_modules/color-logger": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/color-logger/-/color-logger-0.0.3.tgz", - "integrity": "sha1-2bIt0dlz4Waxi/MT+fSBu6TfIBg=" - }, - "node_modules/ice-cap/node_modules/css-select": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", - "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", - "dependencies": { - "boolbase": "~1.0.0", - "css-what": "2.1", - "domutils": "1.5.1", - "nth-check": "~1.0.1" - } - }, - "node_modules/ice-cap/node_modules/css-what": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", - "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", - "engines": { - "node": "*" - } - }, - "node_modules/ice-cap/node_modules/dom-serializer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", - "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", - "dependencies": { - "domelementtype": "^1.3.0", - "entities": "^1.1.1" - } - }, - "node_modules/ice-cap/node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - }, - "node_modules/ice-cap/node_modules/domhandler": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", - "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", - "dependencies": { - "domelementtype": "1" - } - }, - "node_modules/ice-cap/node_modules/domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "node_modules/ice-cap/node_modules/entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" - }, - "node_modules/ice-cap/node_modules/htmlparser2": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", - "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", - "dependencies": { - "domelementtype": "1", - "domhandler": "2.3", - "domutils": "1.5", - "entities": "1.0", - "readable-stream": "1.1" - } - }, - "node_modules/ice-cap/node_modules/htmlparser2/node_modules/entities": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", - "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=" - }, - "node_modules/ice-cap/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" - }, - "node_modules/ice-cap/node_modules/nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dependencies": { - "boolbase": "~1.0.0" - } - }, - "node_modules/ice-cap/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/ice-cap/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" - }, - "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==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/idna-uts46-hx": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz", - "integrity": "sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==", - "dependencies": { - "punycode": "2.1.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/idna-uts46-hx/node_modules/punycode": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", - "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", - "engines": { - "node": ">=6" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "optional": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/ignore-walk": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", - "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", - "optional": true, - "dependencies": { - "minimatch": "^3.0.4" - } - }, - "node_modules/immediate": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", - "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==", - "devOptional": true - }, - "node_modules/immutable": { - "version": "3.7.6", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz", - "integrity": "sha1-E7TTyxK++hVIKib+Gy665kAHHks=", - "optional": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/import-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz", - "integrity": "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==", - "optional": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "optional": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "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==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "optional": true - }, - "node_modules/internal-slot": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", - "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", - "dependencies": { - "get-intrinsic": "^1.1.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dependencies": { - "loose-envify": "^1.0.0" - } - }, - "node_modules/invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ip-regex": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", - "integrity": "sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/ipfs-core-types": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/ipfs-core-types/-/ipfs-core-types-0.2.1.tgz", - "integrity": "sha512-q93+93qSybku6woZaajE9mCrHeVoMzNtZ7S5m/zx0+xHRhnoLlg8QNnGGsb5/+uFQt/RiBArsIw/Q61K9Jwkzw==", - "optional": true, - "dependencies": { - "cids": "^1.1.5", - "multiaddr": "^8.0.0", - "peer-id": "^0.14.1" - } - }, - "node_modules/ipfs-core-types/node_modules/cids": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/cids/-/cids-1.1.9.tgz", - "integrity": "sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "multibase": "^4.0.1", - "multicodec": "^3.0.1", - "multihashes": "^4.0.1", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=4.0.0", - "npm": ">=3.0.0" - } - }, - "node_modules/ipfs-core-types/node_modules/multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "@multiformats/base-x": "^4.0.1" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/ipfs-core-types/node_modules/multicodec": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-3.2.1.tgz", - "integrity": "sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - } - }, - "node_modules/ipfs-core-types/node_modules/multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", - "optional": true, - "dependencies": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/ipfs-core-types/node_modules/multihashes/node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==", - "optional": true - }, - "node_modules/ipfs-core-types/node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "optional": true, - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/ipfs-core-types/node_modules/varint": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", - "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", - "optional": true - }, - "node_modules/ipfs-core-utils": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/ipfs-core-utils/-/ipfs-core-utils-0.6.1.tgz", - "integrity": "sha512-UFIklwE3CFcsNIhYFDuz0qB7E2QtdFauRfc76kskgiqhGWcjqqiDeND5zBCrAy0u8UMaDqAbFl02f/mIq1yKXw==", - "optional": true, - "dependencies": { - "any-signal": "^2.0.0", - "blob-to-it": "^1.0.1", - "browser-readablestream-to-it": "^1.0.1", - "cids": "^1.1.5", - "err-code": "^2.0.3", - "ipfs-core-types": "^0.2.1", - "ipfs-utils": "^5.0.0", - "it-all": "^1.0.4", - "it-map": "^1.0.4", - "it-peekable": "^1.0.1", - "multiaddr": "^8.0.0", - "multiaddr-to-uri": "^6.0.0", - "parse-duration": "^0.4.4", - "timeout-abort-controller": "^1.1.1", - "uint8arrays": "^1.1.0" - } - }, - "node_modules/ipfs-core-utils/node_modules/cids": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/cids/-/cids-1.1.9.tgz", - "integrity": "sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "multibase": "^4.0.1", - "multicodec": "^3.0.1", - "multihashes": "^4.0.1", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=4.0.0", - "npm": ">=3.0.0" - } - }, - "node_modules/ipfs-core-utils/node_modules/cids/node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "optional": true, - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/ipfs-core-utils/node_modules/multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "@multiformats/base-x": "^4.0.1" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/ipfs-core-utils/node_modules/multicodec": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-3.2.1.tgz", - "integrity": "sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - } - }, - "node_modules/ipfs-core-utils/node_modules/multicodec/node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "optional": true, - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/ipfs-core-utils/node_modules/multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", - "optional": true, - "dependencies": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/ipfs-core-utils/node_modules/multihashes/node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "optional": true, - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/ipfs-core-utils/node_modules/multihashes/node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==", - "optional": true - }, - "node_modules/ipfs-core-utils/node_modules/varint": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", - "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", - "optional": true - }, - "node_modules/ipfs-http-client": { - "version": "48.2.2", - "resolved": "https://registry.npmjs.org/ipfs-http-client/-/ipfs-http-client-48.2.2.tgz", - "integrity": "sha512-f3ppfWe913SJLvunm0UgqdA1dxVZSGQJPaEVJtqgjxPa5x0fPDiBDdo60g2MgkW1W6bhF9RGlxvHHIE9sv/tdg==", - "optional": true, - "dependencies": { - "any-signal": "^2.0.0", - "bignumber.js": "^9.0.0", - "cids": "^1.1.5", - "debug": "^4.1.1", - "form-data": "^3.0.0", - "ipfs-core-types": "^0.2.1", - "ipfs-core-utils": "^0.6.1", - "ipfs-utils": "^5.0.0", - "ipld-block": "^0.11.0", - "ipld-dag-cbor": "^0.17.0", - "ipld-dag-pb": "^0.20.0", - "ipld-raw": "^6.0.0", - "it-last": "^1.0.4", - "it-map": "^1.0.4", - "it-tar": "^1.2.2", - "it-to-stream": "^0.1.2", - "merge-options": "^2.0.0", - "multiaddr": "^8.0.0", - "multibase": "^3.0.0", - "multicodec": "^2.0.1", - "multihashes": "^3.0.1", - "nanoid": "^3.1.12", - "native-abort-controller": "~0.0.3", - "parse-duration": "^0.4.4", - "stream-to-it": "^0.2.2", - "uint8arrays": "^1.1.0" - }, - "engines": { - "node": ">=10.3.0", - "npm": ">=3.0.0" - } - }, - "node_modules/ipfs-http-client/node_modules/cids": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/cids/-/cids-1.1.9.tgz", - "integrity": "sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "multibase": "^4.0.1", - "multicodec": "^3.0.1", - "multihashes": "^4.0.1", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=4.0.0", - "npm": ">=3.0.0" - } - }, - "node_modules/ipfs-http-client/node_modules/cids/node_modules/multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "@multiformats/base-x": "^4.0.1" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/ipfs-http-client/node_modules/cids/node_modules/multicodec": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-3.2.1.tgz", - "integrity": "sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - } - }, - "node_modules/ipfs-http-client/node_modules/cids/node_modules/multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", - "optional": true, - "dependencies": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/ipfs-http-client/node_modules/cids/node_modules/multihashes/node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==", - "optional": true - }, - "node_modules/ipfs-http-client/node_modules/cids/node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "optional": true, - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/ipfs-http-client/node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", - "optional": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/ipfs-http-client/node_modules/multibase": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-3.1.2.tgz", - "integrity": "sha512-bpklWHs70LO3smJUHOjcnzGceJJvn9ui0Vau6Za0B/GBepaXswmW8Ufea0uD9pROf/qCQ4N4lZ3sf3U+SNf0tw==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "@multiformats/base-x": "^4.0.1", - "web-encoding": "^1.0.6" - }, - "engines": { - "node": ">=10.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/ipfs-http-client/node_modules/multicodec": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-2.1.3.tgz", - "integrity": "sha512-0tOH2Gtio39uO41o+2xl9UhRkCWxU5ZmZSbFCh/OjGzkWJI8e6lkN/s4Mj1YfyWoBod+2+S3W+6wO6nhkwN8pA==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "uint8arrays": "1.1.0", - "varint": "^6.0.0" - } - }, - "node_modules/ipfs-http-client/node_modules/multihashes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-3.1.2.tgz", - "integrity": "sha512-AP4IoV/YzkNrfbQKZE3OMPibrmy350OmCd6cJkwyM8oExaXIlOY4UnOOVSQtAEuq/LR01XfXKCESidzZvSwHCQ==", - "optional": true, - "dependencies": { - "multibase": "^3.1.0", - "uint8arrays": "^2.0.5", - "varint": "^6.0.0" - }, - "engines": { - "node": ">=10.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/ipfs-http-client/node_modules/multihashes/node_modules/uint8arrays": { - "version": "2.1.10", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-2.1.10.tgz", - "integrity": "sha512-Q9/hhJa2836nQfEJSZTmr+pg9+cDJS9XEAp7N2Vg5MzL3bK/mkMVfjscRGYruP9jNda6MAdf4QD/y78gSzkp6A==", - "optional": true, - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/ipfs-http-client/node_modules/nanoid": { - "version": "3.1.25", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz", - "integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==", - "optional": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/ipfs-http-client/node_modules/varint": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", - "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", - "optional": true - }, - "node_modules/ipfs-utils": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ipfs-utils/-/ipfs-utils-5.0.1.tgz", - "integrity": "sha512-28KZPgO4Uf5duT2ORLAYfboUp98iUshDD7yRAfbNxNAR8Dtidfn6o20rZfoXnkri2zKBVIPlJkuCPmPJB+6erg==", - "optional": true, - "dependencies": { - "abort-controller": "^3.0.0", - "any-signal": "^2.1.0", - "buffer": "^6.0.1", - "electron-fetch": "^1.7.2", - "err-code": "^2.0.0", - "fs-extra": "^9.0.1", - "is-electron": "^2.2.0", - "iso-url": "^1.0.0", - "it-glob": "0.0.10", - "it-to-stream": "^0.1.2", - "merge-options": "^2.0.0", - "nanoid": "^3.1.3", - "native-abort-controller": "0.0.3", - "native-fetch": "^2.0.0", - "node-fetch": "^2.6.0", - "stream-to-it": "^0.2.0" - } - }, - "node_modules/ipfs-utils/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "optional": true, - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/ipfs-utils/node_modules/iso-url": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/iso-url/-/iso-url-1.1.5.tgz", - "integrity": "sha512-+3JqoKdBTGmyv9vOkS6b9iHhvK34UajfTibrH/1HOK8TI7K2VsM0qOCd+aJdWKtSOA8g3PqZfcwDmnR0p3klqQ==", - "optional": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/ipfs-utils/node_modules/nanoid": { - "version": "3.1.25", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz", - "integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==", - "optional": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/ipfs-utils/node_modules/native-fetch": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/native-fetch/-/native-fetch-2.0.1.tgz", - "integrity": "sha512-gv4Bea+ga9QdXINurpkEqun3ap3vnB+WYoe4c8ddqUYEH7B2h6iD39RF8uVN7OwmSfMY3RDxkvBnoI4e2/vLXQ==", - "optional": true, - "dependencies": { - "globalthis": "^1.0.1" - }, - "peerDependencies": { - "node-fetch": "*" - } - }, - "node_modules/ipld-block": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/ipld-block/-/ipld-block-0.11.1.tgz", - "integrity": "sha512-sDqqLqD5qh4QzGq6ssxLHUCnH4emCf/8F8IwjQM2cjEEIEHMUj57XhNYgmGbemdYPznUhffxFGEHsruh5+HQRw==", - "optional": true, - "dependencies": { - "cids": "^1.0.0" - }, - "engines": { - "node": ">=6.0.0", - "npm": ">=3.0.0" - } - }, - "node_modules/ipld-block/node_modules/cids": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/cids/-/cids-1.1.9.tgz", - "integrity": "sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "multibase": "^4.0.1", - "multicodec": "^3.0.1", - "multihashes": "^4.0.1", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=4.0.0", - "npm": ">=3.0.0" - } - }, - "node_modules/ipld-block/node_modules/multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "@multiformats/base-x": "^4.0.1" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/ipld-block/node_modules/multicodec": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-3.2.1.tgz", - "integrity": "sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - } - }, - "node_modules/ipld-block/node_modules/multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", - "optional": true, - "dependencies": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/ipld-block/node_modules/multihashes/node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==", - "optional": true - }, - "node_modules/ipld-block/node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "optional": true, - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/ipld-block/node_modules/varint": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", - "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", - "optional": true - }, - "node_modules/ipld-dag-cbor": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/ipld-dag-cbor/-/ipld-dag-cbor-0.17.1.tgz", - "integrity": "sha512-Bakj/cnxQBdscORyf4LRHxQJQfoaY8KWc7PWROQgX+aw5FCzBt8ga0VM/59K+ABOznsqNvyLR/wz/oYImOpXJw==", - "deprecated": "This module has been superseded by @ipld/dag-cbor and multiformats", - "optional": true, - "dependencies": { - "borc": "^2.1.2", - "cids": "^1.0.0", - "is-circular": "^1.0.2", - "multicodec": "^3.0.1", - "multihashing-async": "^2.0.0", - "uint8arrays": "^2.1.3" - }, - "engines": { - "node": ">=6.0.0", - "npm": ">=3.0.0" - } - }, - "node_modules/ipld-dag-cbor/node_modules/cids": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/cids/-/cids-1.1.9.tgz", - "integrity": "sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "multibase": "^4.0.1", - "multicodec": "^3.0.1", - "multihashes": "^4.0.1", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=4.0.0", - "npm": ">=3.0.0" - } - }, - "node_modules/ipld-dag-cbor/node_modules/cids/node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "optional": true, - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/ipld-dag-cbor/node_modules/multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "@multiformats/base-x": "^4.0.1" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/ipld-dag-cbor/node_modules/multicodec": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-3.2.1.tgz", - "integrity": "sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - } - }, - "node_modules/ipld-dag-cbor/node_modules/multicodec/node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "optional": true, - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/ipld-dag-cbor/node_modules/multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", - "optional": true, - "dependencies": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/ipld-dag-cbor/node_modules/multihashes/node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "optional": true, - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/ipld-dag-cbor/node_modules/multihashes/node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==", - "optional": true - }, - "node_modules/ipld-dag-cbor/node_modules/uint8arrays": { - "version": "2.1.10", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-2.1.10.tgz", - "integrity": "sha512-Q9/hhJa2836nQfEJSZTmr+pg9+cDJS9XEAp7N2Vg5MzL3bK/mkMVfjscRGYruP9jNda6MAdf4QD/y78gSzkp6A==", - "optional": true, - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/ipld-dag-cbor/node_modules/varint": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", - "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", - "optional": true - }, - "node_modules/ipld-dag-pb": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/ipld-dag-pb/-/ipld-dag-pb-0.20.0.tgz", - "integrity": "sha512-zfM0EdaolqNjAxIrtpuGKvXxWk5YtH9jKinBuQGTcngOsWFQhyybGCTJHGNGGtRjHNJi2hz5Udy/8pzv4kcKyg==", - "deprecated": "This module has been superseded by @ipld/dag-pb and multiformats", - "optional": true, - "dependencies": { - "cids": "^1.0.0", - "class-is": "^1.1.0", - "multicodec": "^2.0.0", - "multihashing-async": "^2.0.0", - "protons": "^2.0.0", - "reset": "^0.1.0", - "run": "^1.4.0", - "stable": "^0.1.8", - "uint8arrays": "^1.0.0" - }, - "engines": { - "node": ">=6.0.0", - "npm": ">=3.0.0" - } - }, - "node_modules/ipld-dag-pb/node_modules/cids": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/cids/-/cids-1.1.9.tgz", - "integrity": "sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "multibase": "^4.0.1", - "multicodec": "^3.0.1", - "multihashes": "^4.0.1", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=4.0.0", - "npm": ">=3.0.0" - } - }, - "node_modules/ipld-dag-pb/node_modules/cids/node_modules/multicodec": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-3.2.1.tgz", - "integrity": "sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - } - }, - "node_modules/ipld-dag-pb/node_modules/cids/node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "optional": true, - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/ipld-dag-pb/node_modules/multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "@multiformats/base-x": "^4.0.1" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/ipld-dag-pb/node_modules/multicodec": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-2.1.3.tgz", - "integrity": "sha512-0tOH2Gtio39uO41o+2xl9UhRkCWxU5ZmZSbFCh/OjGzkWJI8e6lkN/s4Mj1YfyWoBod+2+S3W+6wO6nhkwN8pA==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "uint8arrays": "1.1.0", - "varint": "^6.0.0" - } - }, - "node_modules/ipld-dag-pb/node_modules/multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", - "optional": true, - "dependencies": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/ipld-dag-pb/node_modules/multihashes/node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "optional": true, - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/ipld-dag-pb/node_modules/multihashes/node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==", - "optional": true - }, - "node_modules/ipld-dag-pb/node_modules/varint": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", - "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", - "optional": true - }, - "node_modules/ipld-raw": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/ipld-raw/-/ipld-raw-6.0.0.tgz", - "integrity": "sha512-UK7fjncAzs59iu/o2kwYtb8jgTtW6B+cNWIiNpAJkfRwqoMk1xD/6i25ktzwe4qO8gQgoR9RxA5ibC23nq8BLg==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "cids": "^1.0.0", - "multicodec": "^2.0.0", - "multihashing-async": "^2.0.0" - } - }, - "node_modules/ipld-raw/node_modules/cids": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/cids/-/cids-1.1.9.tgz", - "integrity": "sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "multibase": "^4.0.1", - "multicodec": "^3.0.1", - "multihashes": "^4.0.1", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=4.0.0", - "npm": ">=3.0.0" - } - }, - "node_modules/ipld-raw/node_modules/cids/node_modules/multicodec": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-3.2.1.tgz", - "integrity": "sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - } - }, - "node_modules/ipld-raw/node_modules/multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "@multiformats/base-x": "^4.0.1" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/ipld-raw/node_modules/multicodec": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-2.1.3.tgz", - "integrity": "sha512-0tOH2Gtio39uO41o+2xl9UhRkCWxU5ZmZSbFCh/OjGzkWJI8e6lkN/s4Mj1YfyWoBod+2+S3W+6wO6nhkwN8pA==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "uint8arrays": "1.1.0", - "varint": "^6.0.0" - } - }, - "node_modules/ipld-raw/node_modules/multicodec/node_modules/multibase": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-3.1.2.tgz", - "integrity": "sha512-bpklWHs70LO3smJUHOjcnzGceJJvn9ui0Vau6Za0B/GBepaXswmW8Ufea0uD9pROf/qCQ4N4lZ3sf3U+SNf0tw==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "@multiformats/base-x": "^4.0.1", - "web-encoding": "^1.0.6" - }, - "engines": { - "node": ">=10.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/ipld-raw/node_modules/multicodec/node_modules/uint8arrays": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-1.1.0.tgz", - "integrity": "sha512-cLdlZ6jnFczsKf5IH1gPHTtcHtPGho5r4CvctohmQjw8K7Q3gFdfIGHxSTdTaCKrL4w09SsPRJTqRS0drYeszA==", - "optional": true, - "dependencies": { - "multibase": "^3.0.0", - "web-encoding": "^1.0.2" - } - }, - "node_modules/ipld-raw/node_modules/multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", - "optional": true, - "dependencies": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/ipld-raw/node_modules/multihashes/node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==", - "optional": true - }, - "node_modules/ipld-raw/node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "optional": true, - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/ipld-raw/node_modules/varint": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", - "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", - "optional": true - }, - "node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "optional": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "node_modules/is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-capitalized": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-capitalized/-/is-capitalized-1.0.0.tgz", - "integrity": "sha1-TIRktNkdPk7rRIid0s2PGwrEwTY=", - "optional": true - }, - "node_modules/is-circular": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-circular/-/is-circular-1.0.2.tgz", - "integrity": "sha512-YttjnrswnUYRVJvxCvu8z+PGMUSzC2JttP0OEXezlAEdp3EXzhf7IZ3j0gRAybJBQupedIZFhY61Tga6E0qASA==", - "optional": true - }, - "node_modules/is-class": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/is-class/-/is-class-0.0.4.tgz", - "integrity": "sha1-4FdFFwW7NOOePjNZjJOpg3KWtzY=", - "optional": true - }, - "node_modules/is-core-module": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz", - "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "optional": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "optional": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-descriptor/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-dotfile": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", - "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-electron": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.2.0.tgz", - "integrity": "sha512-SpMppC2XR3YdxSzczXReBjqs2zGscWQpBIKqwXYBFic0ERaxNVgwLCHwOLZeESfdJQjX0RDvrJ1lBXX2ij+G1Q==", - "optional": true - }, - "node_modules/is-equal-shallow": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", - "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", - "optional": true, - "dependencies": { - "is-primitive": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finite": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", - "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-fn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fn/-/is-fn-1.0.0.tgz", - "integrity": "sha1-lUPV3nvPWwiiLsiiC65uKG1RDYw=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" - }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "optional": true, - "dependencies": { - "is-extglob": "^2.1.0" - }, - "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": "sha1-fY035q135dEnFIkTxXPggtd39VQ=", - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/is-ip": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz", - "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==", - "optional": true, - "dependencies": { - "ip-regex": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-lower-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-lower-case/-/is-lower-case-1.1.3.tgz", - "integrity": "sha1-fhR75HaNxGbbO/shzGCzHmrWk5M=", - "dependencies": { - "lower-case": "^1.1.0" - } - }, - "node_modules/is-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", - "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", - "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", - "optional": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", - "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", - "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "optional": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-plain-object/node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-posix-bracket": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", - "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", - "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-promise": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", - "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", - "optional": true - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-retry-allowed": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", - "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz", - "integrity": "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-abstract": "^1.18.5", - "foreach": "^2.0.5", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - }, - "node_modules/is-upper-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-upper-case/-/is-upper-case-1.1.2.tgz", - "integrity": "sha1-jQsfp+eTOh5YSDYA7H2WYcuvdW8=", - "dependencies": { - "upper-case": "^1.1.0" - } - }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" - }, - "node_modules/is-valid-glob": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-0.3.0.tgz", - "integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "node_modules/iso-constants": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/iso-constants/-/iso-constants-0.1.2.tgz", - "integrity": "sha512-OTCM5ZCQsHBCI4Wdu4tSxvDIkmDHd5EwJDps5mKqnQnWJSKlnwMs3EDZ4n3Fh1tmkWkDlyd2vCDbEYuPbyrUNQ==", - "hasInstallScript": true, - "optional": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/iso-random-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/iso-random-stream/-/iso-random-stream-2.0.0.tgz", - "integrity": "sha512-lGuIu104KfBV9ubYTSaE3GeAr6I69iggXxBHbTBc5u/XKlwlWl0LCytnkIZissaKqvxablwRD9B3ktVnmIUnEg==", - "optional": true, - "dependencies": { - "events": "^3.3.0", - "readable-stream": "^3.4.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/iso-url": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/iso-url/-/iso-url-0.4.7.tgz", - "integrity": "sha512-27fFRDnPAMnHGLq36bWTpKET+eiXct3ENlCcdcMdk+mjXrb2kw3mhBUg1B7ewAC0kVzlOPhADzQgz1SE6Tglog==", - "optional": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "optional": true, - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isomorphic-ws": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", - "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", - "optional": true, - "peerDependencies": { - "ws": "*" - } - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - }, - "node_modules/isurl": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", - "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", - "dependencies": { - "has-to-string-tag-x": "^1.2.0", - "is-object": "^1.0.1" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/it-all": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/it-all/-/it-all-1.0.5.tgz", - "integrity": "sha512-ygD4kA4vp8fi+Y+NBgEKt6W06xSbv6Ub/0V8d1r3uCyJ9Izwa1UspkIOlqY9fOee0Z1w3WRo1+VWyAU4DgtufA==", - "optional": true - }, - "node_modules/it-concat": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/it-concat/-/it-concat-1.0.3.tgz", - "integrity": "sha512-sjeZQ1BWQ9U/W2oI09kZgUyvSWzQahTkOkLIsnEPgyqZFaF9ME5gV6An4nMjlyhXKWQMKEakQU8oRHs2SdmeyA==", - "optional": true, - "dependencies": { - "bl": "^4.0.0" - } - }, - "node_modules/it-drain": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/it-drain/-/it-drain-1.0.4.tgz", - "integrity": "sha512-coB7mcyZ4lWBQKoQGJuqM+P94pvpn2T3KY27vcVWPqeB1WmoysRC76VZnzAqrBWzpWcoEJMjZ+fsMBslxNaWfQ==", - "optional": true - }, - "node_modules/it-glob": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/it-glob/-/it-glob-0.0.10.tgz", - "integrity": "sha512-p1PR15djgPV7pxdLOW9j4WcJdla8+91rJdUU2hU2Jm68vkxpIEXK55VHBeH8Lvqh2vqLtM83t8q4BuJxue6niA==", - "optional": true, - "dependencies": { - "fs-extra": "^9.0.1", - "minimatch": "^3.0.4" - } - }, - "node_modules/it-last": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/it-last/-/it-last-1.0.5.tgz", - "integrity": "sha512-PV/2S4zg5g6dkVuKfgrQfN2rUN4wdTI1FzyAvU+i8RV96syut40pa2s9Dut5X7SkjwA3P0tOhLABLdnOJ0Y/4Q==", - "optional": true - }, - "node_modules/it-map": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/it-map/-/it-map-1.0.5.tgz", - "integrity": "sha512-EElupuWhHVStUgUY+OfTJIS2MZed96lDrAXzJUuqiiqLnIKoBRqtX1ZG2oR0bGDsSppmz83MtzCeKLZ9TVAUxQ==", - "optional": true - }, - "node_modules/it-peekable": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/it-peekable/-/it-peekable-1.0.2.tgz", - "integrity": "sha512-LRPLu94RLm+lxLZbChuc9iCXrKCOu1obWqxfaKhF00yIp30VGkl741b5P60U+rdBxuZD/Gt1bnmakernv7bVFg==", - "optional": true - }, - "node_modules/it-reader": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/it-reader/-/it-reader-2.1.0.tgz", - "integrity": "sha512-hSysqWTO9Tlwc5EGjVf8JYZzw0D2FsxD/g+eNNWrez9zODxWt6QlN6JAMmycK72Mv4jHEKEXoyzUN4FYGmJaZw==", - "optional": true, - "dependencies": { - "bl": "^4.0.0" - } - }, - "node_modules/it-tar": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/it-tar/-/it-tar-1.2.2.tgz", - "integrity": "sha512-M8V4a9I+x/vwXTjqvixcEZbQZHjwDIb8iUQ+D4M2QbhAdNs3WKVSl+45u5/F2XFx6jYMFOGzMVlKNK/uONgNIA==", - "optional": true, - "dependencies": { - "bl": "^4.0.0", - "buffer": "^5.4.3", - "iso-constants": "^0.1.2", - "it-concat": "^1.0.0", - "it-reader": "^2.0.0", - "p-defer": "^3.0.0" - } - }, - "node_modules/it-to-stream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/it-to-stream/-/it-to-stream-0.1.2.tgz", - "integrity": "sha512-DTB5TJRZG3untmZehcaFN0kGWl2bNv7tnJRgQHAO9QEt8jfvVRrebZtnD5NZd4SCj4WVPjl0LSrugNWE/UaZRQ==", - "optional": true, - "dependencies": { - "buffer": "^5.6.0", - "fast-fifo": "^1.0.0", - "get-iterator": "^1.0.2", - "p-defer": "^3.0.0", - "p-fifo": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, - "node_modules/iter-tools": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/iter-tools/-/iter-tools-7.1.3.tgz", - "integrity": "sha512-Pnd3FVHgKnDHrTVjggXLMq5O/P60fho5iL0a0kkdLcofxX8STHw6cgYZ4ZHQS3Zb4Hg/VeqeNUxDs4vlVwUL4A==", - "optional": true, - "dependencies": { - "@babel/runtime": "^7.12.1" - } - }, - "node_modules/iterall": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/iterall/-/iterall-1.3.0.tgz", - "integrity": "sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==", - "optional": true - }, - "node_modules/iterate-iterator": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.1.tgz", - "integrity": "sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw==" - }, - "node_modules/iterate-value": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz", - "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==", - "dependencies": { - "es-get-iterator": "^1.0.2", - "iterate-iterator": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=" - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", - "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsan": { - "version": "3.1.13", - "resolved": "https://registry.npmjs.org/jsan/-/jsan-3.1.13.tgz", - "integrity": "sha512-9kGpCsGHifmw6oJet+y8HaCl14y7qgAsxVdV3pCHDySNR3BfDC30zgkssd7x5LRVAT22dnpbe9JdzzmXZnq9/g==" - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - }, - "node_modules/jsdom": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-7.2.2.tgz", - "integrity": "sha1-QLQCdwwr2iNGkJa+6Rq2deOx/G4=", - "optional": true, - "dependencies": { - "abab": "^1.0.0", - "acorn": "^2.4.0", - "acorn-globals": "^1.0.4", - "cssom": ">= 0.3.0 < 0.4.0", - "cssstyle": ">= 0.2.29 < 0.3.0", - "escodegen": "^1.6.1", - "nwmatcher": ">= 1.3.7 < 2.0.0", - "parse5": "^1.5.1", - "request": "^2.55.0", - "sax": "^1.1.4", - "symbol-tree": ">= 3.1.0 < 4.0.0", - "tough-cookie": "^2.2.0", - "webidl-conversions": "^2.0.0", - "whatwg-url-compat": "~0.6.5", - "xml-name-validator": ">= 2.0.1 < 3.0.0" - } - }, - "node_modules/jsdom/node_modules/acorn": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-2.7.0.tgz", - "integrity": "sha1-q259nYhqrKiwhbwzEreaGYQz8Oc=", - "optional": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/jsdom/node_modules/parse5": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", - "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=", - "optional": true - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "devOptional": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", - "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" - }, - "node_modules/json-loader": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz", - "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==" - }, - "node_modules/json-pointer": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/json-pointer/-/json-pointer-0.6.1.tgz", - "integrity": "sha512-3OvjqKdCBvH41DLpV4iSt6v2XhZXV1bPB4OROuknvUXI7ZQNofieCPkmE26stEJ9zdQuvIxDHCuYhfgxFAAs+Q==", - "dependencies": { - "foreach": "^2.0.4" - } - }, - "node_modules/json-rpc-engine": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/json-rpc-engine/-/json-rpc-engine-5.4.0.tgz", - "integrity": "sha512-rAffKbPoNDjuRnXkecTjnsE3xLLrb00rEkdgalINhaYVYIxDwWtvYBr9UFbhTvPB1B2qUOLoFd/cV6f4Q7mh7g==", - "dev": true, - "dependencies": { - "eth-rpc-errors": "^3.0.0", - "safe-event-emitter": "^1.0.1" - } - }, - "node_modules/json-rpc-random-id": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz", - "integrity": "sha1-uknZat7RRE27jaPSA3SKy7zeyMg=", - "dev": true - }, - "node_modules/json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/json-stable-stringify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", - "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", - "dependencies": { - "jsonify": "~0.0.0" - } - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "optional": true - }, - "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": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - }, - "node_modules/json-text-sequence": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/json-text-sequence/-/json-text-sequence-0.1.1.tgz", - "integrity": "sha1-py8hfcSvxGKf/1/rME3BvVGi89I=", - "optional": true, - "dependencies": { - "delimit-stream": "0.1.0" - } - }, - "node_modules/json-to-ast": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/json-to-ast/-/json-to-ast-2.1.0.tgz", - "integrity": "sha512-W9Lq347r8tA1DfMvAGn9QNcgYm4Wm7Yc+k8e6vezpMnRT+NHbtlxgNBXRVjXe9YM6eTn6+p/MKOlV/aABJcSnQ==", - "optional": true, - "dependencies": { - "code-error-fragment": "0.0.230", - "grapheme-splitter": "^1.0.4" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/json5": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", - "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/jsondown": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/jsondown/-/jsondown-1.0.0.tgz", - "integrity": "sha512-p6XxPaq59aXwcdDQV3ISMA5xk+1z6fJuctcwwSdR9iQgbYOcIrnknNrhcMGG+0FaUfKHGkdDpQNaZrovfBoyOw==", - "optional": true, - "dependencies": { - "memdown": "1.4.1", - "mkdirp": "0.5.1" - }, - "peerDependencies": { - "abstract-leveldown": "*" - } - }, - "node_modules/jsondown/node_modules/minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "optional": true - }, - "node_modules/jsondown/node_modules/mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", - "optional": true, - "dependencies": { - "minimist": "0.0.8" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", - "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", - "engines": { - "node": "*" - } - }, - "node_modules/jsonpointer": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.1.0.tgz", - "integrity": "sha512-CXcRvMyTlnR53xMcKnuMzfCA5i/nfblTnnr74CZb6C4vG39eu6w51t7nKmU5MfLfbTgGItliNyjO/ciNPDqClg==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "node_modules/keccak": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.2.tgz", - "integrity": "sha512-PyKKjkH53wDMLGrvmRGSNWgmSxZOUqbnXwKL9tmgbFYA1iAYqW21kfR7mZXV0MlESiefxQQE9X9fTa3X+2MPDQ==", - "hasInstallScript": true, - "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/keypair": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/keypair/-/keypair-1.0.3.tgz", - "integrity": "sha512-0wjZ2z/SfZZq01+3/8jYLd8aEShSa+aat1zyPGQY3IuKoEAp6DJGvu2zt6snELrQU9jbCkIlCyNOD7RdQbHhkQ==", - "optional": true - }, - "node_modules/keypather": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/keypather/-/keypather-1.10.2.tgz", - "integrity": "sha1-4ESWMtSz5RbyHMAUznxWRP3c5hQ=", - "optional": true, - "dependencies": { - "101": "^1.0.0" - } - }, - "node_modules/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dependencies": { - "json-buffer": "3.0.0" - } - }, - "node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/klaw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", - "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", - "optionalDependencies": { - "graceful-fs": "^4.1.9" - } - }, - "node_modules/lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lazy-debug-legacy": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/lazy-debug-legacy/-/lazy-debug-legacy-0.0.1.tgz", - "integrity": "sha1-U3cWwHduTPeePtG2IfdljCkRsbE=", - "optional": true, - "peerDependencies": { - "debug": "*" - } - }, - "node_modules/lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", - "optional": true, - "dependencies": { - "readable-stream": "^2.0.5" - }, - "engines": { - "node": ">= 0.6.3" - } - }, - "node_modules/lazystream/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==", - "optional": true - }, - "node_modules/lazystream/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "optional": 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/lazystream/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==", - "optional": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dependencies": { - "invert-kv": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/leb128": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/leb128/-/leb128-0.0.5.tgz", - "integrity": "sha512-elbNtfmu3GndZbesVF6+iQAfVjOXW9bM/aax9WwMlABZW+oK9sbAZEXoewaPHmL34sxa8kVwWsru8cNE/yn2gg==", - "optional": true, - "dependencies": { - "bn.js": "^5.0.0", - "buffer-pipe": "0.0.3" - } - }, - "node_modules/level": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/level/-/level-5.0.1.tgz", - "integrity": "sha512-wcak5OQeA4rURGacqS62R/xNHjCYnJSQDBOlm4KNUGJVE9bWv2B04TclqReYejN+oD65PzD4FsqeWoI5wNC5Lg==", - "hasInstallScript": true, - "optional": true, - "dependencies": { - "level-js": "^4.0.0", - "level-packager": "^5.0.0", - "leveldown": "^5.0.0", - "opencollective-postinstall": "^2.0.0" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/level-codec": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-9.0.1.tgz", - "integrity": "sha512-ajFP0kJ+nyq4i6kptSM+mAvJKLOg1X5FiFPtLG9M5gCEZyBmgDi3FkDrvlMkEzrUn1cWxtvVmrvoS4ASyO/q+Q==", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/level-concat-iterator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz", - "integrity": "sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/level-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-2.0.1.tgz", - "integrity": "sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==", - "optional": true, - "dependencies": { - "errno": "~0.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/level-iterator-stream": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz", - "integrity": "sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q==", - "optional": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.4.0", - "xtend": "^4.0.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/level-js": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/level-js/-/level-js-4.0.2.tgz", - "integrity": "sha512-PeGjZsyMG4O89KHiez1zoMJxStnkM+oBIqgACjoo5PJqFiSUUm3GNod/KcbqN5ktyZa8jkG7I1T0P2u6HN9lIg==", - "optional": true, - "dependencies": { - "abstract-leveldown": "~6.0.1", - "immediate": "~3.2.3", - "inherits": "^2.0.3", - "ltgt": "^2.1.2", - "typedarray-to-buffer": "~3.1.5" - } - }, - "node_modules/level-js/node_modules/abstract-leveldown": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.0.3.tgz", - "integrity": "sha512-jzewKKpZbaYUa6HTThnrl+GrJhzjEAeuc7hTVpZdzg7kupXZFoqQDFwyOwLNbmJKJlmzw8yiipMPkDiuKkT06Q==", - "optional": true, - "dependencies": { - "level-concat-iterator": "~2.0.0", - "xtend": "~4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/level-js/node_modules/immediate": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.2.3.tgz", - "integrity": "sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw=", - "optional": true - }, - "node_modules/level-packager": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/level-packager/-/level-packager-5.1.1.tgz", - "integrity": "sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ==", - "optional": true, - "dependencies": { - "encoding-down": "^6.3.0", - "levelup": "^4.3.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/level-packager/node_modules/levelup": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/levelup/-/levelup-4.4.0.tgz", - "integrity": "sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ==", - "optional": true, - "dependencies": { - "deferred-leveldown": "~5.3.0", - "level-errors": "~2.0.0", - "level-iterator-stream": "~4.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/level-supports": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz", - "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", - "optional": true, - "dependencies": { - "xtend": "^4.0.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/level-write-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/level-write-stream/-/level-write-stream-1.0.0.tgz", - "integrity": "sha1-P3+7Z5pVE3wP6zA97nZuEu4Twdw=", - "optional": true, - "dependencies": { - "end-stream": "~0.1.0" - } - }, - "node_modules/level-ws": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-0.0.0.tgz", - "integrity": "sha1-Ny5RIXeSSgBCSwtDrvK7QkltIos=", - "dev": true, - "dependencies": { - "readable-stream": "~1.0.15", - "xtend": "~2.1.1" - } - }, - "node_modules/level-ws/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "node_modules/level-ws/node_modules/object-keys": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", - "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=", - "dev": true - }, - "node_modules/level-ws/node_modules/readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/level-ws/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "node_modules/level-ws/node_modules/xtend": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", - "integrity": "sha1-bv7MKk2tjmlixJAbM3znuoe10os=", - "dev": true, - "dependencies": { - "object-keys": "~0.4.0" - }, - "engines": { - "node": ">=0.4" - } - }, - "node_modules/leveldown": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/leveldown/-/leveldown-5.0.2.tgz", - "integrity": "sha512-Ib6ygFYBleS8x2gh3C1AkVsdrUShqXpe6jSTnZ6sRycEXKhqVf+xOSkhgSnjidpPzyv0d95LJVFrYQ4NuXAqHA==", - "hasInstallScript": true, - "optional": true, - "dependencies": { - "abstract-leveldown": "~6.0.0", - "fast-future": "~1.0.2", - "napi-macros": "~1.8.1", - "node-gyp-build": "~3.8.0" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/leveldown/node_modules/abstract-leveldown": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.0.3.tgz", - "integrity": "sha512-jzewKKpZbaYUa6HTThnrl+GrJhzjEAeuc7hTVpZdzg7kupXZFoqQDFwyOwLNbmJKJlmzw8yiipMPkDiuKkT06Q==", - "optional": true, - "dependencies": { - "level-concat-iterator": "~2.0.0", - "xtend": "~4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/leveldown/node_modules/node-gyp-build": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-3.8.0.tgz", - "integrity": "sha512-bYbpIHyRqZ7sVWXxGpz8QIRug5JZc/hzZH4GbdT9HTZi6WmKCZ8GLvP8OZ9TTiIBvwPFKgtGrlWQSXDAvYdsPw==", - "optional": true, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/levelup": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/levelup/-/levelup-4.0.2.tgz", - "integrity": "sha512-cx9PmLENwbGA3svWBEbeO2HazpOSOYSXH4VA+ahVpYyurvD+SDSfURl29VBY2qgyk+Vfy2dJd71SBRckj/EZVA==", - "optional": true, - "dependencies": { - "deferred-leveldown": "~5.0.0", - "level-errors": "~2.0.0", - "level-iterator-stream": "~4.0.0", - "xtend": "~4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/levelup/node_modules/abstract-leveldown": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.0.3.tgz", - "integrity": "sha512-jzewKKpZbaYUa6HTThnrl+GrJhzjEAeuc7hTVpZdzg7kupXZFoqQDFwyOwLNbmJKJlmzw8yiipMPkDiuKkT06Q==", - "optional": true, - "dependencies": { - "level-concat-iterator": "~2.0.0", - "xtend": "~4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/levelup/node_modules/deferred-leveldown": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-5.0.1.tgz", - "integrity": "sha512-BXohsvTedWOLkj2n/TY+yqVlrCWa2Zs8LSxh3uCAgFOru7/pjxKyZAexGa1j83BaKloER4PqUyQ9rGPJLt9bqA==", - "optional": true, - "dependencies": { - "abstract-leveldown": "~6.0.0", - "inherits": "^2.0.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "optional": true, - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/libp2p-crypto": { - "version": "0.19.7", - "resolved": "https://registry.npmjs.org/libp2p-crypto/-/libp2p-crypto-0.19.7.tgz", - "integrity": "sha512-Qb5o/3WFKF2j6mYSt4UBPyi2kbKl3jYV0podBJoJCw70DlpM5Xc+oh3fFY9ToSunu8aSQQ5GY8nutjXgX/uGRA==", - "optional": true, - "dependencies": { - "err-code": "^3.0.1", - "is-typedarray": "^1.0.0", - "iso-random-stream": "^2.0.0", - "keypair": "^1.0.1", - "multiformats": "^9.4.5", - "node-forge": "^0.10.0", - "pem-jwk": "^2.0.0", - "protobufjs": "^6.11.2", - "secp256k1": "^4.0.0", - "uint8arrays": "^3.0.0", - "ursa-optional": "^0.10.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/libp2p-crypto/node_modules/err-code": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz", - "integrity": "sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==", - "optional": true - }, - "node_modules/libp2p-crypto/node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "optional": true, - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/linked-list": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/linked-list/-/linked-list-0.1.0.tgz", - "integrity": "sha1-eYsP+X0bkqT9CEgPVa6k6dSdN78=" - }, - "node_modules/load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/load-json-file/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/loader-utils/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", - "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" - }, - "node_modules/lodash._reinterpolate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", - "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", - "optional": true - }, - "node_modules/lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=" - }, - "node_modules/lodash.assignin": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz", - "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=", - "optional": true - }, - "node_modules/lodash.assigninwith": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assigninwith/-/lodash.assigninwith-4.2.0.tgz", - "integrity": "sha1-rwLJhDKshtk9ppW0voAUAZcXNq8=", - "optional": true - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=" - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, - "node_modules/lodash.escaperegexp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", - "integrity": "sha1-ZHYsSGGAglGKw99Mz11YhtriA0c=" - }, - "node_modules/lodash.flatmap": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz", - "integrity": "sha1-74y/QI9uSCaGYzRTBcaswLd4cC4=", - "dev": true - }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=" - }, - "node_modules/lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=", - "optional": true - }, - "node_modules/lodash.keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-4.2.0.tgz", - "integrity": "sha1-oIYCrBLk+4P5H8H7ejYKTZujUgU=", - "optional": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - }, - "node_modules/lodash.omit": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", - "integrity": "sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA=", - "optional": true - }, - "node_modules/lodash.partition": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.partition/-/lodash.partition-4.6.0.tgz", - "integrity": "sha1-o45GtzRp4EILDaEhLmbUFL42S6Q=" - }, - "node_modules/lodash.pick": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", - "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=", - "optional": true - }, - "node_modules/lodash.rest": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/lodash.rest/-/lodash.rest-4.0.5.tgz", - "integrity": "sha1-lU73UEkmIDjJbR/Jiyj9r58Hcqo=", - "optional": true - }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", - "optional": true - }, - "node_modules/lodash.sum": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/lodash.sum/-/lodash.sum-4.0.2.tgz", - "integrity": "sha1-rZDjl5ZdgD1PH/eqWy0Bl/O0Y3s=" - }, - "node_modules/lodash.template": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.2.4.tgz", - "integrity": "sha1-0FPBno50442WW/T7SV2A8Qnn96Q=", - "optional": true, - "dependencies": { - "lodash._reinterpolate": "~3.0.0", - "lodash.assigninwith": "^4.0.0", - "lodash.keys": "^4.0.0", - "lodash.rest": "^4.0.0", - "lodash.templatesettings": "^4.0.0", - "lodash.tostring": "^4.0.0" - } - }, - "node_modules/lodash.templatesettings": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", - "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", - "optional": true, - "dependencies": { - "lodash._reinterpolate": "^3.0.0" - } - }, - "node_modules/lodash.tostring": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/lodash.tostring/-/lodash.tostring-4.1.4.tgz", - "integrity": "sha1-Vgwn0fjq3eA8LM4Zj+9cAx2CmPs=", - "optional": true - }, - "node_modules/lodash.without": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.without/-/lodash.without-4.4.0.tgz", - "integrity": "sha1-PNRXSgC2e643OpS3SHcmQFB7eqw=", - "optional": true - }, - "node_modules/lodash.xor": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.xor/-/lodash.xor-4.5.0.tgz", - "integrity": "sha1-TUjtfpgJWwYyWCunFNP/iuj7HbY=", - "optional": true - }, - "node_modules/lodash.zipwith": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.zipwith/-/lodash.zipwith-4.2.0.tgz", - "integrity": "sha1-r6zwP9LzhK8p4mPDxr2juA4/Uf0=" - }, - "node_modules/log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "optional": true, - "dependencies": { - "chalk": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/loglevel": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", - "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", - "optional": true, - "engines": { - "node": ">= 0.6.0" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" - } - }, - "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", - "optional": true - }, - "node_modules/longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lower-case": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", - "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=" - }, - "node_modules/lower-case-first": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/lower-case-first/-/lower-case-first-1.0.2.tgz", - "integrity": "sha1-5dp8JvKacHO+AtUrrJmA5ZIq36E=", - "dependencies": { - "lower-case": "^1.1.2" - } - }, - "node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/lru-cache/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - }, - "node_modules/ltgt": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", - "integrity": "sha1-81ypHEk/e3PaDgdJUwTxezH4fuU=", - "devOptional": true - }, - "node_modules/make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "optional": true, - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/map-stream": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.0.6.tgz", - "integrity": "sha1-0u9OuBGihkTHqJiZhcacL91JaCc=", - "optional": true - }, - "node_modules/map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "optional": true, - "dependencies": { - "object-visit": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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 - }, - "node_modules/marked": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.19.tgz", - "integrity": "sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg==", - "bin": { - "marked": "bin/marked" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/math-random": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", - "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", - "optional": true - }, - "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==", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mem": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mem/-/mem-1.1.0.tgz", - "integrity": "sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y=", - "dependencies": { - "mimic-fn": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/memdown": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz", - "integrity": "sha1-tOThkhdGZP+65BNhqlAPMRnv4hU=", - "devOptional": true, - "dependencies": { - "abstract-leveldown": "~2.7.1", - "functional-red-black-tree": "^1.0.1", - "immediate": "^3.2.3", - "inherits": "~2.0.1", - "ltgt": "~2.2.0", - "safe-buffer": "~5.1.1" - } - }, - "node_modules/memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dependencies": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "node_modules/memory-fs/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==" - }, - "node_modules/memory-fs/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "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/memory-fs/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==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "node_modules/merge-options": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-2.0.0.tgz", - "integrity": "sha512-S7xYIeWHl2ZUKF7SDeBhGg6rfv5bKxVBdk95s/I7wVF8d+hjLSztJ/B271cnUiF6CAFduEQ5Zn3HYwAjT16DlQ==", - "optional": true, - "dependencies": { - "is-plain-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/merge-options/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==", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/merge-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", - "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", - "optional": true, - "dependencies": { - "readable-stream": "^2.0.1" - } - }, - "node_modules/merge-stream/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==", - "optional": true - }, - "node_modules/merge-stream/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "optional": 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/merge-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==", - "optional": true, - "dependencies": { - "safe-buffer": "~5.1.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==", - "optional": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/merkle-patricia-tree": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz", - "integrity": "sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g==", - "dev": true, - "dependencies": { - "async": "^1.4.2", - "ethereumjs-util": "^5.0.0", - "level-ws": "0.0.0", - "levelup": "^1.2.1", - "memdown": "^1.0.0", - "readable-stream": "^2.0.0", - "rlp": "^2.0.0", - "semaphore": ">=1.0.1" - } - }, - "node_modules/merkle-patricia-tree/node_modules/abstract-leveldown": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.6.3.tgz", - "integrity": "sha512-2++wDf/DYqkPR3o5tbfdhF96EfMApo1GpPfzOsR/ZYXdkSmELlvOOEAl9iKkRsktMPHdGjO4rtkBpf2I7TiTeA==", - "dev": true, - "dependencies": { - "xtend": "~4.0.0" - } - }, - "node_modules/merkle-patricia-tree/node_modules/async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "node_modules/merkle-patricia-tree/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "node_modules/merkle-patricia-tree/node_modules/deferred-leveldown": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-1.2.2.tgz", - "integrity": "sha512-uukrWD2bguRtXilKt6cAWKyoXrTSMo5m7crUdLfWQmu8kIm88w3QZoUL+6nhpfKVmhHANER6Re3sKoNoZ3IKMA==", - "dev": true, - "dependencies": { - "abstract-leveldown": "~2.6.0" - } - }, - "node_modules/merkle-patricia-tree/node_modules/ethereumjs-util": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", - "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", - "dev": true, - "dependencies": { - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "^0.1.3", - "rlp": "^2.0.0", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/merkle-patricia-tree/node_modules/level-codec": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-7.0.1.tgz", - "integrity": "sha512-Ua/R9B9r3RasXdRmOtd+t9TCOEIIlts+TN/7XTT2unhDaL6sJn83S3rUyljbr6lVtw49N3/yA0HHjpV6Kzb2aQ==", - "dev": true - }, - "node_modules/merkle-patricia-tree/node_modules/level-errors": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-1.0.5.tgz", - "integrity": "sha512-/cLUpQduF6bNrWuAC4pwtUKA5t669pCsCi2XbmojG2tFeOr9j6ShtdDCtFFQO1DRt+EVZhx9gPzP9G2bUaG4ig==", - "dev": true, - "dependencies": { - "errno": "~0.1.1" - } - }, - "node_modules/merkle-patricia-tree/node_modules/level-iterator-stream": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-1.3.1.tgz", - "integrity": "sha1-5Dt4sagUPm+pek9IXrjqUwNS8u0=", - "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "level-errors": "^1.0.3", - "readable-stream": "^1.0.33", - "xtend": "^4.0.0" - } - }, - "node_modules/merkle-patricia-tree/node_modules/level-iterator-stream/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "node_modules/merkle-patricia-tree/node_modules/level-iterator-stream/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/merkle-patricia-tree/node_modules/level-iterator-stream/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - }, - "node_modules/merkle-patricia-tree/node_modules/levelup": { - "version": "1.3.9", - "resolved": "https://registry.npmjs.org/levelup/-/levelup-1.3.9.tgz", - "integrity": "sha512-VVGHfKIlmw8w1XqpGOAGwq6sZm2WwWLmlDcULkKWQXEA5EopA8OBNJ2Ck2v6bdk8HeEZSbCSEgzXadyQFm76sQ==", - "dev": true, - "dependencies": { - "deferred-leveldown": "~1.2.1", - "level-codec": "~7.0.0", - "level-errors": "~1.0.3", - "level-iterator-stream": "~1.3.0", - "prr": "~1.0.1", - "semver": "~5.4.1", - "xtend": "~4.0.0" - } - }, - "node_modules/merkle-patricia-tree/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 - }, - "node_modules/merkle-patricia-tree/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": 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/merkle-patricia-tree/node_modules/semver": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", - "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/merkle-patricia-tree/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, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/meros": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/meros/-/meros-1.1.4.tgz", - "integrity": "sha512-E9ZXfK9iQfG9s73ars9qvvvbSIkJZF5yOo9j4tcwM5tN8mUKfj/EKN5PzOr3ZH0y5wL7dLAHw3RVEfpQV9Q7VQ==", - "optional": true, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "@types/node": ">=12" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/micromatch": { - "version": "2.3.11", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", - "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", - "optional": true, - "dependencies": { - "arr-diff": "^2.0.0", - "array-unique": "^0.2.1", - "braces": "^1.8.2", - "expand-brackets": "^0.1.4", - "extglob": "^0.3.1", - "filename-regex": "^2.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.1", - "kind-of": "^3.0.2", - "normalize-path": "^2.0.1", - "object.omit": "^2.0.0", - "parse-glob": "^3.0.4", - "regex-cache": "^0.4.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch/node_modules/is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/micromatch/node_modules/is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "optional": true, - "dependencies": { - "is-extglob": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.49.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", - "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.32", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", - "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", - "dependencies": { - "mime-db": "1.49.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", - "dependencies": { - "dom-walk": "^0.1.0" - } - }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "engines": { - "node": ">=4" - } - }, - "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==" - }, - "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": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" - }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - }, - "node_modules/minipass": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", - "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", - "dependencies": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "node_modules/minizlib": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", - "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", - "dependencies": { - "minipass": "^2.9.0" - } - }, - "node_modules/mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "optional": true, - "dependencies": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mixin-deep/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "optional": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mkdirp-promise": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz", - "integrity": "sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE=", - "deprecated": "This package is broken and no longer maintained. 'mkdirp' itself supports promises now, please switch to that.", - "dependencies": { - "mkdirp": "*" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mocha": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.1.2.tgz", - "integrity": "sha512-I8FRAcuACNMLQn3lS4qeWLxXqLvGf6r2CaLstDpZmMUUSmvW6Cnm1AuHxgbc7ctZVRcfwspCRbDHymPsi3dkJw==", - "dependencies": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.4.2", - "debug": "4.1.1", - "diff": "4.0.2", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.1.6", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "3.14.0", - "log-symbols": "4.0.0", - "minimatch": "3.0.4", - "ms": "2.1.2", - "object.assign": "4.1.0", - "promise.allsettled": "1.0.2", - "serialize-javascript": "4.0.0", - "strip-json-comments": "3.0.1", - "supports-color": "7.1.0", - "which": "2.0.2", - "wide-align": "1.1.3", - "workerpool": "6.0.0", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.1" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" - }, - "engines": { - "node": ">= 10.12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "node_modules/mocha/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==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/mocha/node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/mocha/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "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/mocha/node_modules/chokidar": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.2.tgz", - "integrity": "sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==", - "dependencies": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.4.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.1.2" - } - }, - "node_modules/mocha/node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "node_modules/mocha/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==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/mocha/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==" - }, - "node_modules/mocha/node_modules/debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/mocha/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "node_modules/mocha/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==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/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==", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "deprecated": "\"Please update to latest v2.3 or v2.2\"", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/mocha/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==", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/mocha/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "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/mocha/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==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/mocha/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/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": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "engines": { - "node": ">=4" - } - }, - "node_modules/mocha/node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mocha/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==", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/log-symbols": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", - "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", - "dependencies": { - "chalk": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/mocha/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==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/mocha/node_modules/object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dependencies": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/mocha/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==", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/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==", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/mocha/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==", - "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/readdirp": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", - "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/mocha/node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - }, - "node_modules/mocha/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/mocha/node_modules/strip-json-comments": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", - "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/mocha/node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/mocha/node_modules/wrap-ansi/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==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mocha/node_modules/wrap-ansi/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==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/mocha/node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - }, - "node_modules/mocha/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" - }, - "node_modules/mocha/node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - } - }, - "node_modules/mocha/node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "node_modules/mocha/node_modules/yargs/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/mocha/node_modules/yargs/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/mocha/node_modules/yargs/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mocha/node_modules/yargs/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/mocha/node_modules/yargs/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "engines": { - "node": ">=4" - } - }, - "node_modules/mock-fs": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.14.0.tgz", - "integrity": "sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==" - }, - "node_modules/module": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/module/-/module-1.2.5.tgz", - "integrity": "sha1-tQPrBs3BNHP1aBhCaXTN5+xZvxU=", - "optional": true, - "dependencies": { - "chalk": "1.1.3", - "concat-stream": "1.5.1", - "lodash.template": "4.2.4", - "map-stream": "0.0.6", - "tildify": "1.2.0", - "vinyl-fs": "2.4.3", - "yargs": "4.6.0" - }, - "bin": { - "module": "dist/cli.js" - } - }, - "node_modules/module/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/module/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/module/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "optional": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/module/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "optional": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/module/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "optional": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/multiaddr": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/multiaddr/-/multiaddr-8.1.2.tgz", - "integrity": "sha512-r13IzW8+Sv9zab9Gt8RPMIN2WkptIPq99EpAzg4IbJ/zTELhiEwXWr9bAmEatSCI4j/LSA6ESJzvz95JZ+ZYXQ==", - "optional": true, - "dependencies": { - "cids": "^1.0.0", - "class-is": "^1.1.0", - "dns-over-http-resolver": "^1.0.0", - "err-code": "^2.0.3", - "is-ip": "^3.1.0", - "multibase": "^3.0.0", - "uint8arrays": "^1.1.0", - "varint": "^5.0.0" - } - }, - "node_modules/multiaddr-to-uri": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/multiaddr-to-uri/-/multiaddr-to-uri-6.0.0.tgz", - "integrity": "sha512-OjpkVHOXEmIKMO8WChzzQ7aZQcSQX8squxmvtDbRpy7/QNmJ3Z7jv6qyD74C28QtaeNie8O8ngW2AkeiMmKP7A==", - "optional": true, - "dependencies": { - "multiaddr": "^8.0.0" - } - }, - "node_modules/multiaddr/node_modules/cids": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/cids/-/cids-1.1.9.tgz", - "integrity": "sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "multibase": "^4.0.1", - "multicodec": "^3.0.1", - "multihashes": "^4.0.1", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=4.0.0", - "npm": ">=3.0.0" - } - }, - "node_modules/multiaddr/node_modules/cids/node_modules/multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "@multiformats/base-x": "^4.0.1" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/multiaddr/node_modules/cids/node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "optional": true, - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/multiaddr/node_modules/multibase": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-3.1.2.tgz", - "integrity": "sha512-bpklWHs70LO3smJUHOjcnzGceJJvn9ui0Vau6Za0B/GBepaXswmW8Ufea0uD9pROf/qCQ4N4lZ3sf3U+SNf0tw==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "@multiformats/base-x": "^4.0.1", - "web-encoding": "^1.0.6" - }, - "engines": { - "node": ">=10.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/multiaddr/node_modules/multicodec": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-3.2.1.tgz", - "integrity": "sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - } - }, - "node_modules/multiaddr/node_modules/multicodec/node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "optional": true, - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/multiaddr/node_modules/multicodec/node_modules/varint": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", - "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", - "optional": true - }, - "node_modules/multiaddr/node_modules/multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", - "optional": true, - "dependencies": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/multiaddr/node_modules/multihashes/node_modules/multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "@multiformats/base-x": "^4.0.1" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/multiaddr/node_modules/multihashes/node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "optional": true, - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/multibase": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.6.1.tgz", - "integrity": "sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "base-x": "^3.0.8", - "buffer": "^5.5.0" - } - }, - "node_modules/multicodec": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.5.7.tgz", - "integrity": "sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "varint": "^5.0.0" - } - }, - "node_modules/multiformats": { - "version": "9.4.7", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.4.7.tgz", - "integrity": "sha512-fZbcdf7LnvokPAZYkv4TLXe7PAg9sQ5qLXcwrAmZOloEb2+5FtFiAY+l3/9wsu4oTJXTV3JSggFQQ2dJLS01vA==", - "optional": true - }, - "node_modules/multihashes": { - "version": "0.4.21", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.4.21.tgz", - "integrity": "sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==", - "dependencies": { - "buffer": "^5.5.0", - "multibase": "^0.7.0", - "varint": "^5.0.0" - } - }, - "node_modules/multihashes/node_modules/multibase": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.7.0.tgz", - "integrity": "sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==", - "deprecated": "This module has been superseded by the multiformats module", - "dependencies": { - "base-x": "^3.0.8", - "buffer": "^5.5.0" - } - }, - "node_modules/multihashing-async": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/multihashing-async/-/multihashing-async-2.1.4.tgz", - "integrity": "sha512-sB1MiQXPSBTNRVSJc2zM157PXgDtud2nMFUEIvBrsq5Wv96sUclMRK/ecjoP1T/W61UJBqt4tCTwMkUpt2Gbzg==", - "optional": true, - "dependencies": { - "blakejs": "^1.1.0", - "err-code": "^3.0.0", - "js-sha3": "^0.8.0", - "multihashes": "^4.0.1", - "murmurhash3js-revisited": "^3.0.0", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/multihashing-async/node_modules/err-code": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz", - "integrity": "sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==", - "optional": true - }, - "node_modules/multihashing-async/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==", - "optional": true - }, - "node_modules/multihashing-async/node_modules/multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "@multiformats/base-x": "^4.0.1" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/multihashing-async/node_modules/multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", - "optional": true, - "dependencies": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/multihashing-async/node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "optional": true, - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/murmurhash3js-revisited": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz", - "integrity": "sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g==", - "optional": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/nan": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", - "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", - "devOptional": true - }, - "node_modules/nano-base32": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/nano-base32/-/nano-base32-1.0.1.tgz", - "integrity": "sha1-ulSMh578+5DaHE2eCX20pGySVe8=" - }, - "node_modules/nano-json-stream-parser": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz", - "integrity": "sha1-DMj20OK2IrR5xA1JnEbWS3Vcb18=" - }, - "node_modules/nanocolors": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.1.12.tgz", - "integrity": "sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ==", - "devOptional": true - }, - "node_modules/nanoid": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-2.1.11.tgz", - "integrity": "sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA==" - }, - "node_modules/nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "optional": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "optional": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "optional": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/nanomatch/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==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/napi-macros": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-1.8.2.tgz", - "integrity": "sha512-Tr0DNY4RzTaBG2W2m3l7ZtFuJChTH6VZhXVhkGGjF/4cZTt+i8GcM9ozD+30Lmr4mDoZ5Xx34t2o4GJqYWDGcg==", - "optional": true - }, - "node_modules/native-abort-controller": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/native-abort-controller/-/native-abort-controller-0.0.3.tgz", - "integrity": "sha512-YIxU5nWqSHG1Xbu3eOu3pdFRD882ivQpIcu6AiPVe2oSVoRbfYW63DVkZm3g1gHiMtZSvZzF6THSzTGEBYl8YA==", - "optional": true, - "dependencies": { - "globalthis": "^1.0.1" - }, - "peerDependencies": { - "abort-controller": "*" - } - }, - "node_modules/native-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/native-fetch/-/native-fetch-3.0.0.tgz", - "integrity": "sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw==", - "optional": true, - "peerDependencies": { - "node-fetch": "*" - } - }, - "node_modules/needle": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", - "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==", - "optional": true, - "dependencies": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" - }, - "engines": { - "node": ">= 4.4.x" - } - }, - "node_modules/needle/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "optional": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/needle/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==", - "optional": true - }, - "node_modules/negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", - "engines": { - "node": ">= 0.6" - } - }, - "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==" - }, - "node_modules/neodoc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/neodoc/-/neodoc-2.0.2.tgz", - "integrity": "sha512-NAppJ0YecKWdhSXFYCHbo6RutiX8vOt/Jo3l46mUg6pQlpJNaqc5cGxdrW2jITQm5JIYySbFVPDl3RrREXNyPw==", - "optional": true, - "dependencies": { - "ansi-regex": "^2.0.0" - } - }, - "node_modules/neodoc/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=" - }, - "node_modules/no-case": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", - "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", - "dependencies": { - "lower-case": "^1.1.1" - } - }, - "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==" - }, - "node_modules/node-environment-flags": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", - "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", - "dev": true, - "dependencies": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" - } - }, - "node_modules/node-fetch": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.2.tgz", - "integrity": "sha512-aLoxToI6RfZ+0NOjmWAgn9+LEd30YCkJKFSyWacNZdEKTit/ZMcKjGkTRo8uWEsnIb/hfKecNPEbln02PdWbcA==", - "optional": true, - "engines": { - "node": "4.x || >=6.0.0" - } - }, - "node_modules/node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", - "optional": true, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/node-gyp-build": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.3.0.tgz", - "integrity": "sha512-iWjXZvmboq0ja1pUGULQBexmxq8CV4xBhX7VDOTbL7ZR4FOowwY/VOtRxBN/yKxmdGoIp4j5ysNT4u3S2pDQ3Q==", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", - "optional": true - }, - "node_modules/node-interval-tree": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/node-interval-tree/-/node-interval-tree-1.3.3.tgz", - "integrity": "sha512-K9vk96HdTK5fEipJwxSvIIqwTqr4e3HRJeJrNxBSeVMNSC/JWARRaX7etOLOuTmrRMeOI/K5TCJu3aWIwZiNTw==", - "dependencies": { - "shallowequal": "^1.0.2" - }, - "engines": { - "node": ">= 7.6.0" - } - }, - "node_modules/node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dependencies": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - } - }, - "node_modules/node-libs-browser/node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "node_modules/node-libs-browser/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==" - }, - "node_modules/node-libs-browser/node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - }, - "node_modules/node-libs-browser/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "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/node-libs-browser/node_modules/readable-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==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/node-libs-browser/node_modules/util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dependencies": { - "inherits": "2.0.3" - } - }, - "node_modules/node-libs-browser/node_modules/util/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "node_modules/node-pre-gyp": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz", - "integrity": "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==", - "deprecated": "Please upgrade to @mapbox/node-pre-gyp: the non-scoped node-pre-gyp package is deprecated and only the @mapbox scoped package will recieve updates in the future", - "optional": true, - "dependencies": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - }, - "bin": { - "node-pre-gyp": "bin/node-pre-gyp" - } - }, - "node_modules/node-pre-gyp/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "optional": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/node-releases": { - "version": "1.1.76", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.76.tgz", - "integrity": "sha512-9/IECtNr8dXNmPWmFXepT0/7o5eolGesHUa3mtr0KlgnCvnZxwh2qensKL42JJY2vQKC3nIBXetFAqR+PW1CmA==", - "devOptional": true - }, - "node_modules/nofilter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-1.0.4.tgz", - "integrity": "sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/noop-fn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/noop-fn/-/noop-fn-1.0.0.tgz", - "integrity": "sha1-XzPUfxPSFQ35PgywNmmemC94/78=", - "optional": true - }, - "node_modules/nopt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", - "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", - "optional": true, - "dependencies": { - "abbrev": "1", - "osenv": "^0.1.4" - }, - "bin": { - "nopt": "bin/nopt.js" - } - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "optional": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", - "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm-bundled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", - "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", - "optional": true, - "dependencies": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "node_modules/npm-normalize-package-bin": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", - "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", - "optional": true - }, - "node_modules/npm-packlist": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", - "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", - "optional": true, - "dependencies": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "optional": true, - "dependencies": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "node_modules/nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/nullthrows": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", - "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", - "optional": true - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "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": "sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA=", - "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": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" - }, - "node_modules/nwmatcher": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.4.tgz", - "integrity": "sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==", - "optional": true - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "engines": { - "node": "*" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "optional": true, - "dependencies": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-copy/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "optional": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", - "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object-path": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.7.tgz", - "integrity": "sha512-T4evaK9VfGGQskXBDILcn6F90ZD+WO3OwRFFQ2rmZdUH4vQeDBpiolTpVlPY2yj5xSepyILTjDyM6UvbbdHMZw==", - "optional": true, - "engines": { - "node": ">= 10.12.0" - } - }, - "node_modules/object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "optional": true, - "dependencies": { - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-visit/node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", - "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", - "devOptional": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.18.0-next.2" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.omit": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", - "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", - "optional": true, - "dependencies": { - "for-own": "^0.1.4", - "is-extendable": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "optional": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object.pick/node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/oboe": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.5.tgz", - "integrity": "sha1-VVQoTFQ6ImbXo48X4HOCH73jk80=", - "dependencies": { - "http-https": "^1.0.0" - } - }, - "node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "optional": true, - "dependencies": { - "mimic-fn": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/opencollective-postinstall": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", - "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==", - "optional": true, - "bin": { - "opencollective-postinstall": "index.js" - } - }, - "node_modules/optimism": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.16.1.tgz", - "integrity": "sha512-64i+Uw3otrndfq5kaoGNoY7pvOhSsjFEN4bdEFh80MWVk/dbgJfMv7VFDeCT8LxNAlEVhQmdVEbfE7X2nWNIIg==", - "optional": true, - "dependencies": { - "@wry/context": "^0.6.0", - "@wry/trie": "^0.3.0" - } - }, - "node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "optional": 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/ora": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", - "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", - "optional": true, - "dependencies": { - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-spinners": "^2.0.0", - "log-symbols": "^2.2.0", - "strip-ansi": "^5.2.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/ordered-read-streams": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz", - "integrity": "sha1-cTfmmzKYuzQiR6G77jiByA4v14s=", - "optional": true, - "dependencies": { - "is-stream": "^1.0.1", - "readable-stream": "^2.0.1" - } - }, - "node_modules/ordered-read-streams/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==", - "optional": true - }, - "node_modules/ordered-read-streams/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "optional": 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/ordered-read-streams/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==", - "optional": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/original-require": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/original-require/-/original-require-1.0.1.tgz", - "integrity": "sha1-DxMEcVhM0zURxew4yNWSE/msXiA=" - }, - "node_modules/os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" - }, - "node_modules/os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dependencies": { - "lcid": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "devOptional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "optional": true, - "dependencies": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "node_modules/p-cancelable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", - "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/p-defer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-3.0.0.tgz", - "integrity": "sha512-ugZxsxmtTln604yeYd29EGrNhazN2lywetzpKhfmQjW/VJmhpDmWbiX+h0zL8V91R0UXkhb3KtPmyq9PZw3aYw==", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-fifo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-fifo/-/p-fifo-1.0.0.tgz", - "integrity": "sha512-IjoCxXW48tqdtDFz6fqo5q1UfFVjjVZe8TC1QRflvNUJtNfCUhxOUw6MOVZhDPjqhSzc26xKdugsO17gmzd5+A==", - "optional": true, - "dependencies": { - "fast-fifo": "^1.0.0", - "p-defer": "^3.0.0" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "engines": { - "node": ">=4" - } - }, - "node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", - "dependencies": { - "p-limit": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-timeout": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", - "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", - "dependencies": { - "p-finally": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", - "engines": { - "node": ">=4" - } - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, - "node_modules/param-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", - "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", - "dependencies": { - "no-case": "^2.2.0" - } - }, - "node_modules/paramap-it": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/paramap-it/-/paramap-it-0.1.1.tgz", - "integrity": "sha512-3uZmCAN3xCw7Am/4ikGzjjR59aNMJVXGSU7CjG2Z6DfOAdhnLdCOd0S0m1sTkN4ov9QhlE3/jkzyu953hq0uwQ==", - "optional": true, - "dependencies": { - "event-iterator": "^1.0.0" - } - }, - "node_modules/parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "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": "sha1-juqz5U+laSD+Fro493+iGqzC104=", - "dev": true - }, - "node_modules/parse-duration": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/parse-duration/-/parse-duration-0.4.4.tgz", - "integrity": "sha512-KbAJuYGUhZkB9gotDiKLnZ7Z3VTacK3fgwmDdB6ZVDtJbMBT6MfLga0WJaYpPDu0mzqT0NgHtHDt5PY4l0nidg==", - "optional": true - }, - "node_modules/parse-glob": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", - "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", - "optional": true, - "dependencies": { - "glob-base": "^0.3.0", - "is-dotfile": "^1.0.0", - "is-extglob": "^1.0.0", - "is-glob": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parse-glob/node_modules/is-extglob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", - "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parse-glob/node_modules/is-glob": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", - "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", - "optional": true, - "dependencies": { - "is-extglob": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parse-headers": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.4.tgz", - "integrity": "sha512-psZ9iZoCNFLrgRjZ1d8mn0h9WRqJwFxM9q3x7iUjN/YT2OksthDJ5TiPCu2F38kS4zutqfW+YdVVkBZZx3/1aw==" - }, - "node_modules/parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dependencies": { - "error-ex": "^1.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dependencies": { - "parse5": "^6.0.1" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/pascal-case": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-2.0.1.tgz", - "integrity": "sha1-LVeNNFX2YNpl7KGO+VtODekSdh4=", - "dependencies": { - "camel-case": "^3.0.0", - "upper-case-first": "^1.1.0" - } - }, - "node_modules/pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" - }, - "node_modules/path-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/path-case/-/path-case-2.1.1.tgz", - "integrity": "sha1-lLgDfDctP+KQbkZbtF4l0ibo7qU=", - "dependencies": { - "no-case": "^2.2.0" - } - }, - "node_modules/path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "optional": true - }, - "node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "engines": { - "node": ">=4" - } - }, - "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": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "engines": { - "node": ">=4" - } - }, - "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==" - }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "node_modules/path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dependencies": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-type/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/peer-id": { - "version": "0.14.8", - "resolved": "https://registry.npmjs.org/peer-id/-/peer-id-0.14.8.tgz", - "integrity": "sha512-GpuLpob/9FrEFvyZrKKsISEkaBYsON2u0WtiawLHj1ii6ewkoeRiSDFLyIefYhw0jGvQoeoZS05jaT52X7Bvig==", - "optional": true, - "dependencies": { - "cids": "^1.1.5", - "class-is": "^1.1.0", - "libp2p-crypto": "^0.19.0", - "minimist": "^1.2.5", - "multihashes": "^4.0.2", - "protobufjs": "^6.10.2", - "uint8arrays": "^2.0.5" - }, - "bin": { - "peer-id": "src/bin.js" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/peer-id/node_modules/cids": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/cids/-/cids-1.1.9.tgz", - "integrity": "sha512-l11hWRfugIcbGuTZwAM5PwpjPPjyb6UZOGwlHSnOBV5o07XhQ4gNpBN67FbODvpjyHtd+0Xs6KNvUcGBiDRsdg==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "multibase": "^4.0.1", - "multicodec": "^3.0.1", - "multihashes": "^4.0.1", - "uint8arrays": "^3.0.0" - }, - "engines": { - "node": ">=4.0.0", - "npm": ">=3.0.0" - } - }, - "node_modules/peer-id/node_modules/cids/node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "optional": true, - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/peer-id/node_modules/multibase": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-4.0.6.tgz", - "integrity": "sha512-x23pDe5+svdLz/k5JPGCVdfn7Q5mZVMBETiC+ORfO+sor9Sgs0smJzAjfTbM5tckeCqnaUuMYoz+k3RXMmJClQ==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "@multiformats/base-x": "^4.0.1" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/peer-id/node_modules/multicodec": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-3.2.1.tgz", - "integrity": "sha512-+expTPftro8VAW8kfvcuNNNBgb9gPeNYV9dn+z1kJRWF2vih+/S79f2RVeIwmrJBUJ6NT9IUPWnZDQvegEh5pw==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - } - }, - "node_modules/peer-id/node_modules/multicodec/node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "optional": true, - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/peer-id/node_modules/multihashes": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-4.0.3.tgz", - "integrity": "sha512-0AhMH7Iu95XjDLxIeuCOOE4t9+vQZsACyKZ9Fxw2pcsRmlX4iCn1mby0hS0bb+nQOVpdQYWPpnyusw4da5RPhA==", - "optional": true, - "dependencies": { - "multibase": "^4.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.2" - }, - "engines": { - "node": ">=12.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/peer-id/node_modules/multihashes/node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "optional": true, - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/peer-id/node_modules/multihashes/node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==", - "optional": true - }, - "node_modules/peer-id/node_modules/uint8arrays": { - "version": "2.1.10", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-2.1.10.tgz", - "integrity": "sha512-Q9/hhJa2836nQfEJSZTmr+pg9+cDJS9XEAp7N2Vg5MzL3bK/mkMVfjscRGYruP9jNda6MAdf4QD/y78gSzkp6A==", - "optional": true, - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/peer-id/node_modules/varint": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz", - "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==", - "optional": true - }, - "node_modules/pem-jwk": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pem-jwk/-/pem-jwk-2.0.0.tgz", - "integrity": "sha512-rFxu7rVoHgQ5H9YsP50dDWf0rHjreVA2z0yPiWr5WdH/UHb29hKtF7h6l8vNd1cbYR1t0QL+JKhW55a2ZV4KtA==", - "optional": true, - "dependencies": { - "asn1.js": "^5.0.1" - }, - "bin": { - "pem-jwk": "bin/pem-jwk.js" - }, - "engines": { - "node": ">=5.10.0" - } - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - }, - "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "devOptional": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pkg-conf": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-1.1.3.tgz", - "integrity": "sha1-N45W1v0T6Iv7b0ol33qD+qvduls=", - "optional": true, - "dependencies": { - "find-up": "^1.0.0", - "load-json-file": "^1.1.0", - "object-assign": "^4.0.1", - "symbol": "^0.2.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pkg-conf/node_modules/find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "optional": true, - "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pkg-conf/node_modules/path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "optional": true, - "dependencies": { - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", - "optional": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pouchdb": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/pouchdb/-/pouchdb-7.1.1.tgz", - "integrity": "sha512-8bXWclixNJZqokvxGHRsG19zehSJiaZaz4dVYlhXhhUctz7gMcNTElHjPBzBdZlKKvt9aFDndmXN1VVE53Co8g==", - "optional": true, - "dependencies": { - "argsarray": "0.0.1", - "buffer-from": "1.1.0", - "clone-buffer": "1.0.0", - "double-ended-queue": "2.1.0-0", - "fetch-cookie": "0.7.0", - "immediate": "3.0.6", - "inherits": "2.0.3", - "level": "5.0.1", - "level-codec": "9.0.1", - "level-write-stream": "1.0.0", - "leveldown": "5.0.2", - "levelup": "4.0.2", - "ltgt": "2.2.1", - "node-fetch": "2.4.1", - "readable-stream": "1.0.33", - "spark-md5": "3.0.0", - "through2": "3.0.1", - "uuid": "3.2.1", - "vuvuzela": "1.0.3" - } - }, - "node_modules/pouchdb-abstract-mapreduce": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/pouchdb-abstract-mapreduce/-/pouchdb-abstract-mapreduce-7.2.2.tgz", - "integrity": "sha512-7HWN/2yV2JkwMnGnlp84lGvFtnm0Q55NiBUdbBcaT810+clCGKvhssBCrXnmwShD1SXTwT83aszsgiSfW+SnBA==", - "optional": true, - "dependencies": { - "pouchdb-binary-utils": "7.2.2", - "pouchdb-collate": "7.2.2", - "pouchdb-collections": "7.2.2", - "pouchdb-errors": "7.2.2", - "pouchdb-fetch": "7.2.2", - "pouchdb-mapreduce-utils": "7.2.2", - "pouchdb-md5": "7.2.2", - "pouchdb-utils": "7.2.2" - } - }, - "node_modules/pouchdb-adapter-leveldb-core": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/pouchdb-adapter-leveldb-core/-/pouchdb-adapter-leveldb-core-7.2.2.tgz", - "integrity": "sha512-K9UGf1Ivwe87mjrMqN+1D07tO/DfU7ariVDrGffuOjvl+3BcvUF25IWrxsBObd4iPOYCH7NVQWRpojhBgxULtQ==", - "optional": true, - "dependencies": { - "argsarray": "0.0.1", - "buffer-from": "1.1.1", - "double-ended-queue": "2.1.0-0", - "levelup": "4.4.0", - "pouchdb-adapter-utils": "7.2.2", - "pouchdb-binary-utils": "7.2.2", - "pouchdb-collections": "7.2.2", - "pouchdb-errors": "7.2.2", - "pouchdb-json": "7.2.2", - "pouchdb-md5": "7.2.2", - "pouchdb-merge": "7.2.2", - "pouchdb-utils": "7.2.2", - "sublevel-pouchdb": "7.2.2", - "through2": "3.0.2" - } - }, - "node_modules/pouchdb-adapter-leveldb-core/node_modules/buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "optional": true - }, - "node_modules/pouchdb-adapter-leveldb-core/node_modules/levelup": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/levelup/-/levelup-4.4.0.tgz", - "integrity": "sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ==", - "optional": true, - "dependencies": { - "deferred-leveldown": "~5.3.0", - "level-errors": "~2.0.0", - "level-iterator-stream": "~4.0.0", - "level-supports": "~1.0.0", - "xtend": "~4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pouchdb-adapter-leveldb-core/node_modules/through2": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", - "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", - "optional": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" - } - }, - "node_modules/pouchdb-adapter-memory": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/pouchdb-adapter-memory/-/pouchdb-adapter-memory-7.2.2.tgz", - "integrity": "sha512-9o+zdItPEq7rIrxdkUxgsLNaZkDJAGEqqoYgeYdrHidOCZnlhxhX3g7/R/HcpDKC513iEPqJWDJQSfeT6nVKkw==", - "optional": true, - "dependencies": { - "memdown": "1.4.1", - "pouchdb-adapter-leveldb-core": "7.2.2", - "pouchdb-utils": "7.2.2" - } - }, - "node_modules/pouchdb-adapter-node-websql": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-adapter-node-websql/-/pouchdb-adapter-node-websql-7.0.0.tgz", - "integrity": "sha512-fNaOMO8bvMrRTSfmH4RSLSpgnKahRcCA7Z0jg732PwRbGvvMdGbreZwvKPPD1fg2tm2ZwwiXWK2G3+oXyoqZYw==", - "optional": true, - "dependencies": { - "pouchdb-adapter-websql-core": "7.0.0", - "pouchdb-utils": "7.0.0", - "websql": "1.0.0" - } - }, - "node_modules/pouchdb-adapter-node-websql/node_modules/buffer-from": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", - "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==", - "optional": true - }, - "node_modules/pouchdb-adapter-node-websql/node_modules/immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", - "optional": true - }, - "node_modules/pouchdb-adapter-node-websql/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "optional": true - }, - "node_modules/pouchdb-adapter-node-websql/node_modules/pouchdb-binary-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-7.0.0.tgz", - "integrity": "sha512-yUktdOPIPvOVouCjJN3uop+bCcpdPwePrLm9eUAZNgEYnUFu0njdx7Q0WRsZ7UJ6l75HinL5ZHk4bnvEt86FLw==", - "optional": true, - "dependencies": { - "buffer-from": "1.1.0" - } - }, - "node_modules/pouchdb-adapter-node-websql/node_modules/pouchdb-collections": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-collections/-/pouchdb-collections-7.0.0.tgz", - "integrity": "sha512-DaoUr/vU24Q3gM6ghj0va9j/oBanPwkbhkvnqSyC3Dm5dgf5pculNxueLF9PKMo3ycApoWzHMh6N2N8KJbDU2Q==", - "optional": true - }, - "node_modules/pouchdb-adapter-node-websql/node_modules/pouchdb-errors": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-errors/-/pouchdb-errors-7.0.0.tgz", - "integrity": "sha512-dTusY8nnTw4HIztCrNl7AoGgwvS1bVf/3/97hDaGc4ytn72V9/4dK8kTqlimi3UpaurohYRnqac0SGXYP8vgXA==", - "optional": true, - "dependencies": { - "inherits": "2.0.3" - } - }, - "node_modules/pouchdb-adapter-node-websql/node_modules/pouchdb-md5": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-7.0.0.tgz", - "integrity": "sha512-yaSJKhLA3QlgloKUQeb2hLdT3KmUmPfoYdryfwHZuPTpXIRKTnMQTR9qCIRUszc0ruBpDe53DRslCgNUhAyTNQ==", - "optional": true, - "dependencies": { - "pouchdb-binary-utils": "7.0.0", - "spark-md5": "3.0.0" - } - }, - "node_modules/pouchdb-adapter-node-websql/node_modules/pouchdb-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-utils/-/pouchdb-utils-7.0.0.tgz", - "integrity": "sha512-1bnoX1KdZYHv9wicDIFdO0PLiVIMzNDUBUZ/yOJZ+6LW6niQCB8aCv09ZztmKfSQcU5nnN3fe656tScBgP6dOQ==", - "optional": true, - "dependencies": { - "argsarray": "0.0.1", - "clone-buffer": "1.0.0", - "immediate": "3.0.6", - "inherits": "2.0.3", - "pouchdb-collections": "7.0.0", - "pouchdb-errors": "7.0.0", - "pouchdb-md5": "7.0.0", - "uuid": "3.2.1" - } - }, - "node_modules/pouchdb-adapter-node-websql/node_modules/uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "optional": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/pouchdb-adapter-utils": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/pouchdb-adapter-utils/-/pouchdb-adapter-utils-7.2.2.tgz", - "integrity": "sha512-2CzZkTyTyHZkr3ePiWFMTiD5+56lnembMjaTl8ohwegM0+hYhRyJux0biAZafVxgIL4gnCUC4w2xf6WVztzKdg==", - "optional": true, - "dependencies": { - "pouchdb-binary-utils": "7.2.2", - "pouchdb-collections": "7.2.2", - "pouchdb-errors": "7.2.2", - "pouchdb-md5": "7.2.2", - "pouchdb-merge": "7.2.2", - "pouchdb-utils": "7.2.2" - } - }, - "node_modules/pouchdb-adapter-websql-core": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-adapter-websql-core/-/pouchdb-adapter-websql-core-7.0.0.tgz", - "integrity": "sha512-NyMaH0bl20SdJdOCzd+fwXo8JZ15a48/MAwMcIbXzsRHE4DjFNlRcWAcjUP6uN4Ezc+Gx+r2tkBBMf71mIz1Aw==", - "optional": true, - "dependencies": { - "pouchdb-adapter-utils": "7.0.0", - "pouchdb-binary-utils": "7.0.0", - "pouchdb-collections": "7.0.0", - "pouchdb-errors": "7.0.0", - "pouchdb-json": "7.0.0", - "pouchdb-merge": "7.0.0", - "pouchdb-utils": "7.0.0" - } - }, - "node_modules/pouchdb-adapter-websql-core/node_modules/buffer-from": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", - "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==", - "optional": true - }, - "node_modules/pouchdb-adapter-websql-core/node_modules/immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", - "optional": true - }, - "node_modules/pouchdb-adapter-websql-core/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "optional": true - }, - "node_modules/pouchdb-adapter-websql-core/node_modules/pouchdb-adapter-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-adapter-utils/-/pouchdb-adapter-utils-7.0.0.tgz", - "integrity": "sha512-UWKPC6jkz6mHUzZefrU7P5X8ZGvBC8LSNZ7BIp0hWvJE6c20cnpDwedTVDpZORcCbVJpDmFOHBYnOqEIblPtbA==", - "optional": true, - "dependencies": { - "pouchdb-binary-utils": "7.0.0", - "pouchdb-collections": "7.0.0", - "pouchdb-errors": "7.0.0", - "pouchdb-md5": "7.0.0", - "pouchdb-merge": "7.0.0", - "pouchdb-utils": "7.0.0" - } - }, - "node_modules/pouchdb-adapter-websql-core/node_modules/pouchdb-binary-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-7.0.0.tgz", - "integrity": "sha512-yUktdOPIPvOVouCjJN3uop+bCcpdPwePrLm9eUAZNgEYnUFu0njdx7Q0WRsZ7UJ6l75HinL5ZHk4bnvEt86FLw==", - "optional": true, - "dependencies": { - "buffer-from": "1.1.0" - } - }, - "node_modules/pouchdb-adapter-websql-core/node_modules/pouchdb-collections": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-collections/-/pouchdb-collections-7.0.0.tgz", - "integrity": "sha512-DaoUr/vU24Q3gM6ghj0va9j/oBanPwkbhkvnqSyC3Dm5dgf5pculNxueLF9PKMo3ycApoWzHMh6N2N8KJbDU2Q==", - "optional": true - }, - "node_modules/pouchdb-adapter-websql-core/node_modules/pouchdb-errors": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-errors/-/pouchdb-errors-7.0.0.tgz", - "integrity": "sha512-dTusY8nnTw4HIztCrNl7AoGgwvS1bVf/3/97hDaGc4ytn72V9/4dK8kTqlimi3UpaurohYRnqac0SGXYP8vgXA==", - "optional": true, - "dependencies": { - "inherits": "2.0.3" - } - }, - "node_modules/pouchdb-adapter-websql-core/node_modules/pouchdb-json": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-json/-/pouchdb-json-7.0.0.tgz", - "integrity": "sha512-w0bNRu/7VmmCrFWMYAm62n30wvJJUT2SokyzeTyj3hRohj4GFwTRg1mSZ+iAmxgRKOFE8nzZstLG/WAB4Ymjew==", - "optional": true, - "dependencies": { - "vuvuzela": "1.0.3" - } - }, - "node_modules/pouchdb-adapter-websql-core/node_modules/pouchdb-md5": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-7.0.0.tgz", - "integrity": "sha512-yaSJKhLA3QlgloKUQeb2hLdT3KmUmPfoYdryfwHZuPTpXIRKTnMQTR9qCIRUszc0ruBpDe53DRslCgNUhAyTNQ==", - "optional": true, - "dependencies": { - "pouchdb-binary-utils": "7.0.0", - "spark-md5": "3.0.0" - } - }, - "node_modules/pouchdb-adapter-websql-core/node_modules/pouchdb-merge": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-merge/-/pouchdb-merge-7.0.0.tgz", - "integrity": "sha512-tci5u6NpznQhGcPv4ho1h0miky9rs+ds/T9zQ9meQeDZbUojXNaX1Jxsb0uYEQQ+HMqdcQs3Akdl0/u0mgwPGg==", - "optional": true - }, - "node_modules/pouchdb-adapter-websql-core/node_modules/pouchdb-utils": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pouchdb-utils/-/pouchdb-utils-7.0.0.tgz", - "integrity": "sha512-1bnoX1KdZYHv9wicDIFdO0PLiVIMzNDUBUZ/yOJZ+6LW6niQCB8aCv09ZztmKfSQcU5nnN3fe656tScBgP6dOQ==", - "optional": true, - "dependencies": { - "argsarray": "0.0.1", - "clone-buffer": "1.0.0", - "immediate": "3.0.6", - "inherits": "2.0.3", - "pouchdb-collections": "7.0.0", - "pouchdb-errors": "7.0.0", - "pouchdb-md5": "7.0.0", - "uuid": "3.2.1" - } - }, - "node_modules/pouchdb-adapter-websql-core/node_modules/uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "optional": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/pouchdb-binary-utils": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/pouchdb-binary-utils/-/pouchdb-binary-utils-7.2.2.tgz", - "integrity": "sha512-shacxlmyHbUrNfE6FGYpfyAJx7Q0m91lDdEAaPoKZM3SzAmbtB1i+OaDNtYFztXjJl16yeudkDb3xOeokVL3Qw==", - "optional": true, - "dependencies": { - "buffer-from": "1.1.1" - } - }, - "node_modules/pouchdb-binary-utils/node_modules/buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "optional": true - }, - "node_modules/pouchdb-collate": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/pouchdb-collate/-/pouchdb-collate-7.2.2.tgz", - "integrity": "sha512-/SMY9GGasslknivWlCVwXMRMnQ8myKHs4WryQ5535nq1Wj/ehpqWloMwxEQGvZE1Sda3LOm7/5HwLTcB8Our+w==", - "optional": true - }, - "node_modules/pouchdb-collections": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/pouchdb-collections/-/pouchdb-collections-7.2.2.tgz", - "integrity": "sha512-6O9zyAYlp3UdtfneiMYuOCWdUCQNo2bgdjvNsMSacQX+3g8WvIoFQCYJjZZCpTttQGb+MHeRMr8m2U95lhJTew==", - "optional": true - }, - "node_modules/pouchdb-debug": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/pouchdb-debug/-/pouchdb-debug-7.2.1.tgz", - "integrity": "sha512-eP3ht/AKavLF2RjTzBM6S9gaI2/apcW6xvaKRQhEdOfiANqerFuksFqHCal3aikVQuDO+cB/cw+a4RyJn/glBw==", - "optional": true, - "dependencies": { - "debug": "3.1.0" - } - }, - "node_modules/pouchdb-debug/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "optional": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/pouchdb-errors": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/pouchdb-errors/-/pouchdb-errors-7.2.2.tgz", - "integrity": "sha512-6GQsiWc+7uPfgEHeavG+7wuzH3JZW29Dnrvz8eVbDFE50kVFxNDVm3EkYHskvo5isG7/IkOx7PV7RPTA3keG3g==", - "optional": true, - "dependencies": { - "inherits": "2.0.4" - } - }, - "node_modules/pouchdb-fetch": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/pouchdb-fetch/-/pouchdb-fetch-7.2.2.tgz", - "integrity": "sha512-lUHmaG6U3zjdMkh8Vob9GvEiRGwJfXKE02aZfjiVQgew+9SLkuOxNw3y2q4d1B6mBd273y1k2Lm0IAziRNxQnA==", - "optional": true, - "dependencies": { - "abort-controller": "3.0.0", - "fetch-cookie": "0.10.1", - "node-fetch": "2.6.0" - } - }, - "node_modules/pouchdb-fetch/node_modules/fetch-cookie": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/fetch-cookie/-/fetch-cookie-0.10.1.tgz", - "integrity": "sha512-beB+VEd4cNeVG1PY+ee74+PkuCQnik78pgLi5Ah/7qdUfov8IctU0vLUbBT8/10Ma5GMBeI4wtxhGrEfKNYs2g==", - "optional": true, - "dependencies": { - "tough-cookie": "^2.3.3 || ^3.0.1 || ^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pouchdb-fetch/node_modules/node-fetch": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", - "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==", - "optional": true, - "engines": { - "node": "4.x || >=6.0.0" - } - }, - "node_modules/pouchdb-find": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/pouchdb-find/-/pouchdb-find-7.2.2.tgz", - "integrity": "sha512-BmFeFVQ0kHmDehvJxNZl9OmIztCjPlZlVSdpijuFbk/Fi1EFPU1BAv3kLC+6DhZuOqU/BCoaUBY9sn66pPY2ag==", - "optional": true, - "dependencies": { - "pouchdb-abstract-mapreduce": "7.2.2", - "pouchdb-collate": "7.2.2", - "pouchdb-errors": "7.2.2", - "pouchdb-fetch": "7.2.2", - "pouchdb-md5": "7.2.2", - "pouchdb-selector-core": "7.2.2", - "pouchdb-utils": "7.2.2" - } - }, - "node_modules/pouchdb-json": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/pouchdb-json/-/pouchdb-json-7.2.2.tgz", - "integrity": "sha512-3b2S2ynN+aoB7aCNyDZc/4c0IAdx/ir3nsHB+/RrKE9cM3QkQYbnnE3r/RvOD1Xvr6ji/KOCBie+Pz/6sxoaug==", - "optional": true, - "dependencies": { - "vuvuzela": "1.0.3" - } - }, - "node_modules/pouchdb-mapreduce-utils": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/pouchdb-mapreduce-utils/-/pouchdb-mapreduce-utils-7.2.2.tgz", - "integrity": "sha512-rAllb73hIkU8rU2LJNbzlcj91KuulpwQu804/F6xF3fhZKC/4JQMClahk+N/+VATkpmLxp1zWmvmgdlwVU4HtQ==", - "optional": true, - "dependencies": { - "argsarray": "0.0.1", - "inherits": "2.0.4", - "pouchdb-collections": "7.2.2", - "pouchdb-utils": "7.2.2" - } - }, - "node_modules/pouchdb-md5": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/pouchdb-md5/-/pouchdb-md5-7.2.2.tgz", - "integrity": "sha512-c/RvLp2oSh8PLAWU5vFBnp6ejJABIdKqboZwRRUrWcfGDf+oyX8RgmJFlYlzMMOh4XQLUT1IoaDV8cwlsuryZw==", - "optional": true, - "dependencies": { - "pouchdb-binary-utils": "7.2.2", - "spark-md5": "3.0.1" - } - }, - "node_modules/pouchdb-md5/node_modules/spark-md5": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.1.tgz", - "integrity": "sha512-0tF3AGSD1ppQeuffsLDIOWlKUd3lS92tFxcsrh5Pe3ZphhnoK+oXIBTzOAThZCiuINZLvpiLH/1VS1/ANEJVig==", - "optional": true - }, - "node_modules/pouchdb-merge": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/pouchdb-merge/-/pouchdb-merge-7.2.2.tgz", - "integrity": "sha512-6yzKJfjIchBaS7Tusuk8280WJdESzFfQ0sb4jeMUNnrqs4Cx3b0DIEOYTRRD9EJDM+je7D3AZZ4AT0tFw8gb4A==", - "optional": true - }, - "node_modules/pouchdb-selector-core": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/pouchdb-selector-core/-/pouchdb-selector-core-7.2.2.tgz", - "integrity": "sha512-XYKCNv9oiNmSXV5+CgR9pkEkTFqxQGWplnVhO3W9P154H08lU0ZoNH02+uf+NjZ2kjse7Q1fxV4r401LEcGMMg==", - "optional": true, - "dependencies": { - "pouchdb-collate": "7.2.2", - "pouchdb-utils": "7.2.2" - } - }, - "node_modules/pouchdb-utils": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/pouchdb-utils/-/pouchdb-utils-7.2.2.tgz", - "integrity": "sha512-XmeM5ioB4KCfyB2MGZXu1Bb2xkElNwF1qG+zVFbQsKQij0zvepdOUfGuWvLRHxTOmt4muIuSOmWZObZa3NOgzQ==", - "optional": true, - "dependencies": { - "argsarray": "0.0.1", - "clone-buffer": "1.0.0", - "immediate": "3.3.0", - "inherits": "2.0.4", - "pouchdb-collections": "7.2.2", - "pouchdb-errors": "7.2.2", - "pouchdb-md5": "7.2.2", - "uuid": "8.1.0" - } - }, - "node_modules/pouchdb-utils/node_modules/uuid": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.1.0.tgz", - "integrity": "sha512-CI18flHDznR0lq54xBycOVmphdCYnQLKn8abKn7PXUiKUGdEd+/l9LWNJmugXel4hXq7S+RMNl34ecyC9TntWg==", - "optional": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/pouchdb/node_modules/buffer-from": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.0.tgz", - "integrity": "sha512-c5mRlguI/Pe2dSZmpER62rSCu0ryKmWddzRYsuXc50U2/g8jMOulc31VZMa4mYx31U5xsmSOpDCgH88Vl9cDGQ==", - "optional": true - }, - "node_modules/pouchdb/node_modules/immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", - "optional": true - }, - "node_modules/pouchdb/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "optional": true - }, - "node_modules/pouchdb/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "optional": true - }, - "node_modules/pouchdb/node_modules/node-fetch": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.4.1.tgz", - "integrity": "sha512-P9UbpFK87NyqBZzUuDBDz4f6Yiys8xm8j7ACDbi6usvFm6KItklQUKjeoqTrYS/S1k6I8oaOC2YLLDr/gg26Mw==", - "optional": true, - "engines": { - "node": "4.x || >=6.0.0" - } - }, - "node_modules/pouchdb/node_modules/readable-stream": { - "version": "1.0.33", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz", - "integrity": "sha1-OjYN1mwbHX/UcFOJhg7aHQ9hEmw=", - "optional": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/pouchdb/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==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "optional": true - }, - "node_modules/pouchdb/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "optional": true - }, - "node_modules/pouchdb/node_modules/through2": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", - "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", - "optional": true, - "dependencies": { - "readable-stream": "2 || 3" - } - }, - "node_modules/pouchdb/node_modules/through2/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "optional": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/pouchdb/node_modules/through2/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==", - "optional": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/pouchdb/node_modules/uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "optional": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/precond": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", - "integrity": "sha1-qpWRvKokkj8eD0hJ0kD0fvwQdaw=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "optional": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prepend-http": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", - "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", - "engines": { - "node": ">=4" - } - }, - "node_modules/preserve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", - "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/prettier": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.4.0.tgz", - "integrity": "sha512-DsEPLY1dE5HF3BxCRBmD4uYZ+5DCbvatnolqTqcxEgKVZnL2kUfyu7b8pPQ5+hTBkdhU9SLUmK0/pHb07RE4WQ==", - "optional": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/prettier-plugin-solidity": { - "version": "1.0.0-beta.18", - "resolved": "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.0.0-beta.18.tgz", - "integrity": "sha512-ezWdsG/jIeClmYBzg8V9Voy8jujt+VxWF8OS3Vld+C3c+3cPVib8D9l8ahTod7O5Df1anK9zo+WiiS5wb1mLmg==", - "optional": true, - "dependencies": { - "@solidity-parser/parser": "^0.13.2", - "emoji-regex": "^9.2.2", - "escape-string-regexp": "^4.0.0", - "semver": "^7.3.5", - "solidity-comments-extractor": "^0.0.7", - "string-width": "^4.2.2" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "prettier": "^2.3.0" - } - }, - "node_modules/prettier-plugin-solidity/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==", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/prettier-plugin-solidity/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==", - "optional": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/prettier-plugin-solidity/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==", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/prettier-plugin-solidity/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "optional": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/prettier-plugin-solidity/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "optional": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/prettier-plugin-solidity/node_modules/string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "optional": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/prettier-plugin-solidity/node_modules/string-width/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==", - "optional": true - }, - "node_modules/prettier-plugin-solidity/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "optional": true, - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/prettier-plugin-solidity/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "optional": true - }, - "node_modules/printj": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", - "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==", - "bin": { - "printj": "bin/printj.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", - "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", - "optional": true - }, - "node_modules/promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "optional": true, - "dependencies": { - "asap": "~2.0.3" - } - }, - "node_modules/promise-to-callback": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/promise-to-callback/-/promise-to-callback-1.0.0.tgz", - "integrity": "sha1-XSp0kBC/tn2WNZj805YHRqaP7vc=", - "dev": true, - "dependencies": { - "is-fn": "^1.0.0", - "set-immediate-shim": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/promise.allsettled": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.2.tgz", - "integrity": "sha512-UpcYW5S1RaNKT6pd+s9jp9K9rlQge1UXKskec0j6Mmuq7UJCvlS2J2/s/yuPN8ehftf9HXMxWlKiPbGGUzpoRg==", - "dependencies": { - "array.prototype.map": "^1.0.1", - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1", - "function-bind": "^1.1.1", - "iterate-value": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/prop-types": { - "version": "15.7.2", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", - "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", - "optional": true, - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.8.1" - } - }, - "node_modules/protobufjs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.2.tgz", - "integrity": "sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw==", - "hasInstallScript": true, - "optional": true, - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.1", - "@types/node": ">=13.7.0", - "long": "^4.0.0" - }, - "bin": { - "pbjs": "bin/pbjs", - "pbts": "bin/pbts" - } - }, - "node_modules/protobufjs/node_modules/@types/node": { - "version": "16.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", - "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==", - "optional": true - }, - "node_modules/protocol-buffers-schema": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz", - "integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==", - "optional": true - }, - "node_modules/protons": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/protons/-/protons-2.0.3.tgz", - "integrity": "sha512-j6JikP/H7gNybNinZhAHMN07Vjr1i4lVupg598l4I9gSTjJqOvKnwjzYX2PzvBTSVf2eZ2nWv4vG+mtW8L6tpA==", - "optional": true, - "dependencies": { - "protocol-buffers-schema": "^3.3.1", - "signed-varint": "^2.0.1", - "uint8arrays": "^3.0.0", - "varint": "^5.0.0" - } - }, - "node_modules/protons/node_modules/uint8arrays": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", - "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", - "optional": true, - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=" - }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - }, - "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" - }, - "node_modules/public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/pure-rand": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-5.0.0.tgz", - "integrity": "sha512-lD2/y78q+7HqBx2SaT6OT4UcwtvXNRfEpzYEzl0EQ+9gZq2Qi3fa0HDnYPeqQwhlHJFBUhT7AO3mLU3+8bynHA==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/fast-check" - } - }, - "node_modules/qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/query-string": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", - "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", - "dependencies": { - "decode-uri-component": "^0.2.0", - "object-assign": "^4.1.0", - "strict-uri-encode": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "engines": { - "node": ">=0.4.x" - } - }, - "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==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "optional": true - }, - "node_modules/randomatic": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", - "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", - "optional": true, - "dependencies": { - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "math-random": "^1.0.1" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/randomatic/node_modules/is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/randomatic/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==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "dependencies": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "optional": true, - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "optional": true - }, - "node_modules/read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dependencies": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dependencies": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dependencies": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dependencies": { - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "optional": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/receptacle": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/receptacle/-/receptacle-1.3.2.tgz", - "integrity": "sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A==", - "optional": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/receptacle/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==", - "optional": true - }, - "node_modules/redux": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/redux/-/redux-3.7.2.tgz", - "integrity": "sha512-pNqnf9q1hI5HHZRBkj3bAngGZW/JMCmexDlOxw4XagXY2o1327nHH54LoTjiPJ0gizoqPDRqWyX/00g0hD6w+A==", - "dependencies": { - "lodash": "^4.2.1", - "lodash-es": "^4.2.1", - "loose-envify": "^1.1.0", - "symbol-observable": "^1.0.3" - } - }, - "node_modules/redux-devtools-core": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/redux-devtools-core/-/redux-devtools-core-0.2.1.tgz", - "integrity": "sha512-RAGOxtUFdr/1USAvxrWd+Gq/Euzgw7quCZlO5TgFpDfG7rB5tMhZUrNyBjpzgzL2yMk0eHnPYIGm7NkIfRzHxQ==", - "deprecated": "Package moved to @redux-devtools/app.", - "dependencies": { - "get-params": "^0.1.2", - "jsan": "^3.1.13", - "lodash": "^4.17.11", - "nanoid": "^2.0.0", - "remotedev-serialize": "^0.1.8" - } - }, - "node_modules/redux-devtools-instrument": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/redux-devtools-instrument/-/redux-devtools-instrument-1.10.0.tgz", - "integrity": "sha512-X8JRBCzX2ADSMp+iiV7YQ8uoTNyEm0VPFPd4T854coz6lvRiBrFSqAr9YAS2n8Kzxx8CJQotR0QF9wsMM+3DvA==", - "deprecated": "Package moved to @redux-devtools/instrument.", - "dependencies": { - "lodash": "^4.17.19", - "symbol-observable": "^1.2.0" - }, - "peerDependencies": { - "redux": "^3.4.0 || ^4.0.0" - } - }, - "node_modules/redux-saga": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/redux-saga/-/redux-saga-1.0.0.tgz", - "integrity": "sha512-GvJWs/SzMvEQgeaw6sRMXnS2FghlvEGsHiEtTLpJqc/FHF3I5EE/B+Hq5lyHZ8LSoT2r/X/46uWvkdCnK9WgHA==", - "dependencies": { - "@redux-saga/core": "^1.0.0" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" - }, - "node_modules/regex-cache": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", - "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", - "optional": true, - "dependencies": { - "is-equal-shallow": "^0.1.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "optional": true, - "dependencies": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regex-not/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "optional": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/regex-not/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "optional": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/relay-compiler": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/relay-compiler/-/relay-compiler-11.0.2.tgz", - "integrity": "sha512-nDVAURT1YncxSiDOKa39OiERkAr0DUcPmlHlg+C8zD+EiDo2Sgczf2R6cDsN4UcDvucYtkLlDLFErPwgLs8WzA==", - "optional": true, - "dependencies": { - "@babel/core": "^7.0.0", - "@babel/generator": "^7.5.0", - "@babel/parser": "^7.0.0", - "@babel/runtime": "^7.0.0", - "@babel/traverse": "^7.0.0", - "@babel/types": "^7.0.0", - "babel-preset-fbjs": "^3.3.0", - "chalk": "^4.0.0", - "fb-watchman": "^2.0.0", - "fbjs": "^3.0.0", - "glob": "^7.1.1", - "immutable": "~3.7.6", - "invariant": "^2.2.4", - "nullthrows": "^1.1.1", - "relay-runtime": "11.0.2", - "signedsource": "^1.0.0", - "yargs": "^15.3.1" - }, - "bin": { - "relay-compiler": "bin/relay-compiler" - }, - "peerDependencies": { - "graphql": "^15.0.0" - } - }, - "node_modules/relay-compiler/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==", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/relay-compiler/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==", - "optional": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/relay-compiler/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/relay-compiler/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "optional": true, - "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/relay-compiler/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "optional": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/relay-compiler/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==", - "optional": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/relay-compiler/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==", - "optional": true - }, - "node_modules/relay-compiler/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==", - "optional": true - }, - "node_modules/relay-compiler/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "optional": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/relay-compiler/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==", - "optional": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/relay-compiler/node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "optional": 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/relay-compiler/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==", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/relay-compiler/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==", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/relay-compiler/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "optional": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/relay-compiler/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "optional": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/relay-compiler/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "optional": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/relay-compiler/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/relay-compiler/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==", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/relay-compiler/node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "optional": true - }, - "node_modules/relay-compiler/node_modules/string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "optional": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/relay-compiler/node_modules/strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "optional": true, - "dependencies": { - "ansi-regex": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/relay-compiler/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==", - "optional": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/relay-compiler/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "optional": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/relay-compiler/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "optional": true - }, - "node_modules/relay-compiler/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "optional": true, - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/relay-compiler/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "optional": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/relay-runtime": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/relay-runtime/-/relay-runtime-11.0.2.tgz", - "integrity": "sha512-xxZkIRnL8kNE1cxmwDXX8P+wSeWLR+0ACFyAiAhvfWWAyjXb+bhjJ2FSsRGlNYfkqaTNEuDqpnodQV1/fF7Idw==", - "optional": true, - "dependencies": { - "@babel/runtime": "^7.0.0", - "fbjs": "^3.0.0", - "invariant": "^2.2.4" - } - }, - "node_modules/remote-redux-devtools": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/remote-redux-devtools/-/remote-redux-devtools-0.5.16.tgz", - "integrity": "sha512-xZ2D1VRIWzat5nsvcraT6fKEX9Cfi+HbQBCwzNnUAM8Uicm/anOc60XGalcaDPrVmLug7nhDl2nimEa3bL3K9w==", - "dependencies": { - "jsan": "^3.1.13", - "querystring": "^0.2.0", - "redux-devtools-core": "^0.2.1", - "redux-devtools-instrument": "^1.9.4", - "rn-host-detect": "^1.1.5", - "socketcluster-client": "^14.2.1" - } - }, - "node_modules/remotedev-serialize": { - "version": "0.1.9", - "resolved": "https://registry.npmjs.org/remotedev-serialize/-/remotedev-serialize-0.1.9.tgz", - "integrity": "sha512-5tFdZg9mSaAWTv6xmQ7HtHjKMLSFQFExEZOtJe10PLsv1wb7cy7kYHtBvTYRro27/3fRGEcQBRNKSaixOpb69w==", - "deprecated": "Package moved to @redux-devtools/serialize.", - "dependencies": { - "jsan": "^3.1.13" - } - }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "optional": true - }, - "node_modules/repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/repeating": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", - "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", - "dependencies": { - "is-finite": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/replace-ext": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz", - "integrity": "sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ=", - "optional": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/req-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/req-cwd/-/req-cwd-2.0.0.tgz", - "integrity": "sha1-1AgrTURZgDZkD7c93qAe1T20nrw=", - "dev": 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": "sha1-10GI5H+TeW9Kpx327jWuaJ8+DnA=", - "dev": true, - "dependencies": { - "resolve-from": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/req-from/node_modules/resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", - "dev": true, - "dependencies": { - "lodash": "^4.17.19" - }, - "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "request": "^2.34" - } - }, - "node_modules/request-promise-native": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", - "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", - "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", - "dev": true, - "dependencies": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - }, - "engines": { - "node": ">=0.12.0" - }, - "peerDependencies": { - "request": "^2.34" - } - }, - "node_modules/request/node_modules/qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/request/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", - "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" - }, - "node_modules/reselect": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-4.0.0.tgz", - "integrity": "sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA==" - }, - "node_modules/reselect-tree": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/reselect-tree/-/reselect-tree-1.3.4.tgz", - "integrity": "sha512-1OgNq1IStyJFqIqOoD3k3Ge4SsYCMP9W88VQOfvgyLniVKLfvbYO1Vrl92SyEK5021MkoBX6tWb381VxTDyPBQ==", - "dependencies": { - "debug": "^3.1.0", - "esdoc": "^1.0.4", - "json-pointer": "^0.6.0", - "reselect": "^4.0.0", - "source-map-support": "^0.5.3" - } - }, - "node_modules/reselect-tree/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/reselect-tree/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==" - }, - "node_modules/reset": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/reset/-/reset-0.1.0.tgz", - "integrity": "sha1-n8cxQXGZWubLC35YsGznUir0uvs=", - "optional": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "optional": true, - "dependencies": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "deprecated": "https://github.com/lydell/resolve-url#deprecated", - "optional": true - }, - "node_modules/responselike": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", - "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", - "dependencies": { - "lowercase-keys": "^1.0.0" - } - }, - "node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "optional": true, - "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "optional": true, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/retimer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/retimer/-/retimer-2.0.0.tgz", - "integrity": "sha512-KLXY85WkEq2V2bKex/LOO1ViXVn2KGYe4PYysAdYdjmraYIUsVkXu8O4am+8+5UbaaGl1qho4aqAAPHNQ4GSbg==", - "optional": true - }, - "node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "optional": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "optional": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "dependencies": { - "align-text": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/rimraf/node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "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/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/ripemd160-min": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/ripemd160-min/-/ripemd160-min-0.0.6.tgz", - "integrity": "sha512-+GcJgQivhs6S9qvLogusiTcS9kQUfgR75whKuy5jIhuiOfQuJ8fjqxV6EGD5duH1Y/FawFUMtMhyeq3Fbnib8A==", - "engines": { - "node": ">=8" - } - }, - "node_modules/rlp": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.6.tgz", - "integrity": "sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg==", - "dependencies": { - "bn.js": "^4.11.1" - }, - "bin": { - "rlp": "bin/rlp" - } - }, - "node_modules/rlp/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/rn-host-detect": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/rn-host-detect/-/rn-host-detect-1.2.0.tgz", - "integrity": "sha512-btNg5kzHcjZZ7t7mvvV/4wNJ9e3MPgrWivkRgWURzXL0JJ0pwWlU4zrbmdlz3HHzHOxhBhHB4D+/dbMFfu4/4A==" - }, - "node_modules/rpc-websockets": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-5.3.1.tgz", - "integrity": "sha512-rIxEl1BbXRlIA9ON7EmY/2GUM7RLMy8zrUPTiLPFiYnYOz0I3PXfCmDDrge5vt4pW4oIcAXBDvgZuJ1jlY5+VA==", - "optional": true, - "dependencies": { - "@babel/runtime": "^7.8.7", - "assert-args": "^1.2.1", - "babel-runtime": "^6.26.0", - "circular-json": "^0.5.9", - "eventemitter3": "^3.1.2", - "uuid": "^3.4.0", - "ws": "^5.2.2" - }, - "funding": { - "type": "paypal", - "url": "https://paypal.me/kozjak" - } - }, - "node_modules/rpc-websockets/node_modules/eventemitter3": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", - "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", - "optional": true - }, - "node_modules/rpc-websockets/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "optional": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/rpc-websockets/node_modules/ws": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz", - "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==", - "optional": true, - "dependencies": { - "async-limiter": "~1.0.0" - } - }, - "node_modules/run": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/run/-/run-1.4.0.tgz", - "integrity": "sha1-4X2ekEOrL+F3dsspnhI3848LT/o=", - "optional": true, - "dependencies": { - "minimatch": "*" - }, - "bin": { - "runjs": "cli.js" - }, - "engines": { - "node": ">=v0.9.0" - } - }, - "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==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "optional": true, - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/rustbn.js": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", - "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==", - "dev": true - }, - "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "optional": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/rxjs/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "optional": true - }, - "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==" - }, - "node_modules/safe-event-emitter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-event-emitter/-/safe-event-emitter-1.0.1.tgz", - "integrity": "sha512-e1wFe99A91XYYxoQbcq2ZJUWurxEyP8vfz7A7vuUe1s95q8r5ebraVaA1BukYJcpM6V16ugWoD9vngi8Ccu5fg==", - "deprecated": "Renamed to @metamask/safe-event-emitter", - "dev": true, - "dependencies": { - "events": "^3.0.0" - } - }, - "node_modules/safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "optional": true, - "dependencies": { - "ret": "~0.1.10" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "optional": true - }, - "node_modules/sc-channel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/sc-channel/-/sc-channel-1.2.0.tgz", - "integrity": "sha512-M3gdq8PlKg0zWJSisWqAsMmTVxYRTpVRqw4CWAdKBgAfVKumFcTjoCV0hYu7lgUXccCtCD8Wk9VkkE+IXCxmZA==", - "dependencies": { - "component-emitter": "1.2.1" - } - }, - "node_modules/sc-channel/node_modules/component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" - }, - "node_modules/sc-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/sc-errors/-/sc-errors-2.0.1.tgz", - "integrity": "sha512-JoVhq3Ud+3Ujv2SIG7W0XtjRHsrNgl6iXuHHsh0s+Kdt5NwI6N2EGAZD4iteitdDv68ENBkpjtSvN597/wxPSQ==" - }, - "node_modules/sc-formatter": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/sc-formatter/-/sc-formatter-3.0.2.tgz", - "integrity": "sha512-9PbqYBpCq+OoEeRQ3QfFIGE6qwjjBcd2j7UjgDlhnZbtSnuGgHdcRklPKYGuYFH82V/dwd+AIpu8XvA1zqTd+A==" - }, - "node_modules/scrypt-async": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/scrypt-async/-/scrypt-async-2.0.1.tgz", - "integrity": "sha512-wHR032jldwZNy7Tzrfu7RccOgGf8r5hyDMSP2uV6DpLiBUsR8JsDcx/in73o2UGVVrH5ivRFdNsFPcjtl3LErQ==", - "optional": true - }, - "node_modules/scrypt-js": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz", - "integrity": "sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw==" - }, - "node_modules/secp256k1": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.2.tgz", - "integrity": "sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg==", - "hasInstallScript": true, - "dependencies": { - "elliptic": "^6.5.2", - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/seedrandom": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", - "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==", - "optional": true - }, - "node_modules/semaphore": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semaphore/-/semaphore-1.1.0.tgz", - "integrity": "sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "dependencies": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/send/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/send/node_modules/debug/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/send/node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - }, - "node_modules/sentence-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-2.1.1.tgz", - "integrity": "sha1-H24t2jnBaL+S0T+G1KkYkz9mftQ=", - "dependencies": { - "no-case": "^2.2.0", - "upper-case-first": "^1.1.2" - } - }, - "node_modules/serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "dependencies": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/servify": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz", - "integrity": "sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==", - "dependencies": { - "body-parser": "^1.16.0", - "cors": "^2.8.1", - "express": "^4.14.0", - "request": "^2.79.0", - "xhr": "^2.3.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - }, - "node_modules/set-immediate-shim": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", - "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "optional": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/setimmediate": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", - "integrity": "sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48=" - }, - "node_modules/setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/sha1": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz", - "integrity": "sha1-rdqnqTFo85PxnrKxUJFhjicA+Eg=", - "dev": true, - "dependencies": { - "charenc": ">= 0.0.1", - "crypt": ">= 0.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/sha3": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/sha3/-/sha3-2.1.4.tgz", - "integrity": "sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg==", - "dependencies": { - "buffer": "6.0.3" - } - }, - "node_modules/sha3/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/shallowequal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", - "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" - }, - "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" - }, - "node_modules/signed-varint": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/signed-varint/-/signed-varint-2.0.1.tgz", - "integrity": "sha1-UKmYnafJjCxh2tEZvJdHDvhSgSk=", - "optional": true, - "dependencies": { - "varint": "~5.0.0" - } - }, - "node_modules/signedsource": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/signedsource/-/signedsource-1.0.0.tgz", - "integrity": "sha1-HdrOSYF5j5O9gzlzgD2A1S6TrWo=", - "optional": true - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/simple-get": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz", - "integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==", - "dependencies": { - "decompress-response": "^3.3.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/snake-case": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-2.1.0.tgz", - "integrity": "sha1-Qb2xtz8w7GagTU4srRt2OH1NbZ8=", - "dependencies": { - "no-case": "^2.2.0" - } - }, - "node_modules/snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "optional": true, - "dependencies": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "optional": true, - "dependencies": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "optional": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "optional": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "optional": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "optional": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-node/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==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "optional": true, - "dependencies": { - "kind-of": "^3.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "optional": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/snapdragon/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "optional": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/snapdragon/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/socketcluster-client": { - "version": "14.3.2", - "resolved": "https://registry.npmjs.org/socketcluster-client/-/socketcluster-client-14.3.2.tgz", - "integrity": "sha512-xDtgW7Ss0ARlfhx53bJ5GY5THDdEOeJnT+/C9Rmrj/vnZr54xeiQfrCZJbcglwe732nK3V+uZq87IvrRl7Hn4g==", - "dependencies": { - "buffer": "^5.2.1", - "clone": "2.1.1", - "component-emitter": "1.2.1", - "linked-list": "0.1.0", - "querystring": "0.2.0", - "sc-channel": "^1.2.0", - "sc-errors": "^2.0.1", - "sc-formatter": "^3.0.1", - "uuid": "3.2.1", - "ws": "^7.5.0" - } - }, - "node_modules/socketcluster-client/node_modules/clone": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.1.tgz", - "integrity": "sha1-0hfR6WERjjrJpLi7oyhVU79kfNs=", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/socketcluster-client/node_modules/component-emitter": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=" - }, - "node_modules/socketcluster-client/node_modules/uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/socketcluster-client/node_modules/ws": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", - "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", - "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/solc": { - "version": "0.4.26", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.4.26.tgz", - "integrity": "sha512-o+c6FpkiHd+HPjmjEVpQgH7fqZ14tJpXhho+/bQXlXbliLIS/xjXb42Vxh+qQY1WCSTMQ0+a5vR9vi0MfhU6mA==", - "dependencies": { - "fs-extra": "^0.30.0", - "memorystream": "^0.3.1", - "require-from-string": "^1.1.0", - "semver": "^5.3.0", - "yargs": "^4.7.1" - }, - "bin": { - "solcjs": "solcjs" - } - }, - "node_modules/solc-0.8": { - "name": "solc", - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.8.9.tgz", - "integrity": "sha512-dD8tQgGCrdWQPpbDTbQF048S3JAcpytOax2r5qPgQluKJPCRFT6c/fec0ZkbrRwRSeYT/qiKz0OKBDOinnGeWw==", - "dev": true, - "dependencies": { - "command-exists": "^1.2.8", - "commander": "^8.1.0", - "follow-redirects": "^1.12.1", - "fs-extra": "^0.30.0", - "js-sha3": "0.8.0", - "memorystream": "^0.3.1", - "require-from-string": "^2.0.0", - "semver": "^5.5.0", - "tmp": "0.0.33" - } - }, - "node_modules/solc-0.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, - "engines": { - "node": ">= 12" - } - }, - "node_modules/solc-0.8/node_modules/fs-extra": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0", - "path-is-absolute": "^1.0.0", - "rimraf": "^2.2.8" - } - }, - "node_modules/solc-0.8/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 - }, - "node_modules/solc-0.8/node_modules/jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/solc-0.8/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, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/solc/node_modules/fs-extra": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0", - "path-is-absolute": "^1.0.0", - "rimraf": "^2.2.8" - } - }, - "node_modules/solc/node_modules/jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/solc/node_modules/which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" - }, - "node_modules/solc/node_modules/yargs": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", - "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", - "dependencies": { - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "lodash.assign": "^4.0.3", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.1", - "which-module": "^1.0.0", - "window-size": "^0.2.0", - "y18n": "^3.2.1", - "yargs-parser": "^2.4.1" - } - }, - "node_modules/solidity-comments-extractor": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/solidity-comments-extractor/-/solidity-comments-extractor-0.0.7.tgz", - "integrity": "sha512-wciNMLg/Irp8OKGrh3S2tfvZiZ0NEyILfcRCXCD4mp7SgK/i9gzLfhY2hY7VMCQJ3kH9UB9BzNdibIVMchzyYw==", - "optional": true - }, - "node_modules/solidity-docgen": { - "name": "solc", - "version": "0.8.9", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.8.9.tgz", - "integrity": "sha512-dD8tQgGCrdWQPpbDTbQF048S3JAcpytOax2r5qPgQluKJPCRFT6c/fec0ZkbrRwRSeYT/qiKz0OKBDOinnGeWw==", - "dev": true, - "dependencies": { - "command-exists": "^1.2.8", - "commander": "^8.1.0", - "follow-redirects": "^1.12.1", - "fs-extra": "^0.30.0", - "js-sha3": "0.8.0", - "memorystream": "^0.3.1", - "require-from-string": "^2.0.0", - "semver": "^5.5.0", - "tmp": "0.0.33" - } - }, - "node_modules/solidity-docgen/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/solidity-docgen/node_modules/fs-extra": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", - "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0", - "klaw": "^1.0.0", - "path-is-absolute": "^1.0.0", - "rimraf": "^2.2.8" - } - }, - "node_modules/solidity-docgen/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 - }, - "node_modules/solidity-docgen/node_modules/jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/solidity-docgen/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, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==" - }, - "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==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "optional": true, - "dependencies": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.20", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.20.tgz", - "integrity": "sha512-n1lZZ8Ve4ksRqizaBQgxXDgKwttHDhyfQjA6YZZn8+AroHbsIz+JjwxQDxbp+7y5OYCI8t1Yk7etjD9CRd2hIw==", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "optional": true - }, - "node_modules/spark-md5": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spark-md5/-/spark-md5-3.0.0.tgz", - "integrity": "sha1-NyIifFTi+vJLHcbZM8wUTm9xv+8=", - "optional": true - }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz", - "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==" - }, - "node_modules/spinnies": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/spinnies/-/spinnies-0.5.1.tgz", - "integrity": "sha512-WpjSXv9NQz0nU3yCT9TFEOfpFrXADY9C5fG6eAJqixLhvTX1jP3w92Y8IE5oafIe42nlF9otjhllnXN/QCaB3A==", - "optional": true, - "dependencies": { - "chalk": "^2.4.2", - "cli-cursor": "^3.0.0", - "strip-ansi": "^5.2.0" - } - }, - "node_modules/spinnies/node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "optional": true, - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/spinnies/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/spinnies/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "optional": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/spinnies/node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "optional": true, - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "optional": true, - "dependencies": { - "extend-shallow": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/split-string/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "optional": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/split-string/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "optional": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "node_modules/sqlite3": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-4.2.0.tgz", - "integrity": "sha512-roEOz41hxui2Q7uYnWsjMOTry6TcNUNmp8audCx18gF10P2NknwdpF+E+HKvz/F2NvPKGGBF4NGc+ZPQ+AABwg==", - "hasInstallScript": true, - "optional": true, - "dependencies": { - "nan": "^2.12.1", - "node-pre-gyp": "^0.11.0" - } - }, - "node_modules/sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "optional": true - }, - "node_modules/static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "optional": true, - "dependencies": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/static-extend/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "optional": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stoppable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", - "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", - "optional": true, - "engines": { - "node": ">=4", - "npm": ">=6" - } - }, - "node_modules/stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dependencies": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "node_modules/stream-browserify/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==" - }, - "node_modules/stream-browserify/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "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/stream-browserify/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==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dependencies": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "node_modules/stream-http/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==" - }, - "node_modules/stream-http/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "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/stream-http/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==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "optional": true - }, - "node_modules/stream-to-it": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/stream-to-it/-/stream-to-it-0.2.4.tgz", - "integrity": "sha512-4vEbkSs83OahpmBybNJXlJd7d6/RxzkkSdT3I0mnGt79Xd2Kk+e1JqbvAvsQfCeKj3aKb0QIWkyK3/n0j506vQ==", - "optional": true, - "dependencies": { - "get-iterator": "^1.0.2" - } - }, - "node_modules/streamsearch": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", - "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=", - "optional": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/strict-uri-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", - "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string_decoder/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==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dependencies": { - "is-utf8": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-bom-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-bom-stream/-/strip-bom-stream-1.0.0.tgz", - "integrity": "sha1-5xRDmFd9Uaa+0PoZlPoF9D/ZiO4=", - "optional": true, - "dependencies": { - "first-chunk-stream": "^1.0.0", - "strip-bom": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "engines": { - "node": ">=0.10.0" - } - }, - "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": "sha1-DF8VX+8RUTczd96du1iNoFUA428=", - "dependencies": { - "is-hex-prefixed": "1.0.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/strip-indent": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", - "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "devOptional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sublevel-pouchdb": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/sublevel-pouchdb/-/sublevel-pouchdb-7.2.2.tgz", - "integrity": "sha512-y5uYgwKDgXVyPZceTDGWsSFAhpSddY29l9PJbXqMJLfREdPmQTY8InpatohlEfCXX7s1LGcrfYAhxPFZaJOLnQ==", - "optional": true, - "dependencies": { - "inherits": "2.0.4", - "level-codec": "9.0.2", - "ltgt": "2.2.1", - "readable-stream": "1.1.14" - } - }, - "node_modules/sublevel-pouchdb/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "optional": true - }, - "node_modules/sublevel-pouchdb/node_modules/level-codec": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-9.0.2.tgz", - "integrity": "sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ==", - "optional": true, - "dependencies": { - "buffer": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/sublevel-pouchdb/node_modules/readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "optional": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/sublevel-pouchdb/node_modules/string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "optional": true - }, - "node_modules/subscriptions-transport-ws": { - "version": "0.9.19", - "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.19.tgz", - "integrity": "sha512-dxdemxFFB0ppCLg10FTtRqH/31FNRL1y1BQv8209MK5I4CwALb7iihQg+7p65lFcIl8MHatINWBLOqpgU4Kyyw==", - "optional": true, - "dependencies": { - "backo2": "^1.0.2", - "eventemitter3": "^3.1.0", - "iterall": "^1.2.1", - "symbol-observable": "^1.0.4", - "ws": "^5.2.0 || ^6.0.0 || ^7.0.0" - }, - "peerDependencies": { - "graphql": ">=0.10.0" - } - }, - "node_modules/subscriptions-transport-ws/node_modules/eventemitter3": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", - "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", - "optional": true - }, - "node_modules/subscriptions-transport-ws/node_modules/ws": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", - "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", - "optional": true, - "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/super-split": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/super-split/-/super-split-1.1.0.tgz", - "integrity": "sha512-I4bA5mgcb6Fw5UJ+EkpzqXfiuvVGS/7MuND+oBxNFmxu3ugLNrdIatzBLfhFRMVMLxgSsRy+TjIktgkF9RFSNQ==" - }, - "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==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/swap-case": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/swap-case/-/swap-case-1.1.2.tgz", - "integrity": "sha1-w5IDpFhzhfrTyFCgvRvK+ggZdOM=", - "dependencies": { - "lower-case": "^1.1.1", - "upper-case": "^1.1.1" - } - }, - "node_modules/swarm-js": { - "version": "0.1.40", - "resolved": "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.40.tgz", - "integrity": "sha512-yqiOCEoA4/IShXkY3WKwP5PvZhmoOOD8clsKA7EEcRILMkTEYHCQ21HDCAcVpmIxZq4LyZvWeRJ6quIyHk1caA==", - "dependencies": { - "bluebird": "^3.5.0", - "buffer": "^5.0.5", - "eth-lib": "^0.1.26", - "fs-extra": "^4.0.2", - "got": "^7.1.0", - "mime-types": "^2.1.16", - "mkdirp-promise": "^5.0.1", - "mock-fs": "^4.1.0", - "setimmediate": "^1.0.5", - "tar": "^4.0.2", - "xhr-request": "^1.0.1" - } - }, - "node_modules/swarm-js/node_modules/fs-extra": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", - "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "node_modules/swarm-js/node_modules/get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=", - "engines": { - "node": ">=4" - } - }, - "node_modules/swarm-js/node_modules/got": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", - "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", - "dependencies": { - "decompress-response": "^3.2.0", - "duplexer3": "^0.1.4", - "get-stream": "^3.0.0", - "is-plain-obj": "^1.1.0", - "is-retry-allowed": "^1.0.0", - "is-stream": "^1.0.0", - "isurl": "^1.0.0-alpha5", - "lowercase-keys": "^1.0.0", - "p-cancelable": "^0.3.0", - "p-timeout": "^1.1.1", - "safe-buffer": "^5.0.1", - "timed-out": "^4.0.0", - "url-parse-lax": "^1.0.0", - "url-to-options": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/swarm-js/node_modules/p-cancelable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", - "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/swarm-js/node_modules/prepend-http": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", - "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/swarm-js/node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" - }, - "node_modules/swarm-js/node_modules/url-parse-lax": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", - "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", - "dependencies": { - "prepend-http": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/symbol": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/symbol/-/symbol-0.2.3.tgz", - "integrity": "sha1-O5hzuKkB5Hxu/iFSajrDcu8ou8c=", - "optional": true - }, - "node_modules/symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "optional": true - }, - "node_modules/sync-fetch": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/sync-fetch/-/sync-fetch-0.3.0.tgz", - "integrity": "sha512-dJp4qg+x4JwSEW1HibAuMi0IIrBI3wuQr2GimmqB7OXR50wmwzfdusG+p39R9w3R6aFtZ2mzvxvWKQ3Bd/vx3g==", - "optional": true, - "dependencies": { - "buffer": "^5.7.0", - "node-fetch": "^2.6.1" - }, - "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, - "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, - "dependencies": { - "get-port": "^3.1.0" - } - }, - "node_modules/taffydb": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.7.3.tgz", - "integrity": "sha1-KtNxaWKUmPylvIQkMJbTzeDsOjQ=" - }, - "node_modules/tapable": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.9.tgz", - "integrity": "sha512-2wsvQ+4GwBvLPLWsNfLCDYGsW6xb7aeC6utq2Qh0PFwgEy7K7dsma9Jsmb2zSQj7GvYAyUGSntLtsv++GmgL1A==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tar": { - "version": "4.4.19", - "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", - "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", - "dependencies": { - "chownr": "^1.1.4", - "fs-minipass": "^1.2.7", - "minipass": "^2.9.0", - "minizlib": "^1.3.3", - "mkdirp": "^0.5.5", - "safe-buffer": "^5.2.1", - "yallist": "^3.1.1" - }, - "engines": { - "node": ">=4.5" - } - }, - "node_modules/tar/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/tar/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==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/testrpc": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/testrpc/-/testrpc-0.0.1.tgz", - "integrity": "sha512-afH1hO+SQ/VPlmaLUFj2636QMeDvPCeQMc/9RBMW0IfjNe9gFD9Ra3ShqYkB7py0do1ZcCna/9acHyzTJ+GcNA==", - "deprecated": "testrpc has been renamed to ganache-cli, please use this package from now on." - }, - "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, - "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 - }, - "node_modules/then-request/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" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/then-request/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 - }, - "node_modules/then-request/node_modules/promise": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz", - "integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==", - "dev": true, - "dependencies": { - "asap": "~2.0.6" - } - }, - "node_modules/then-request/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": 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/then-request/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, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "optional": true, - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/through2-filter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-2.0.0.tgz", - "integrity": "sha1-YLxVoNrLdghdsfna6Zq0P4PWIuw=", - "optional": true, - "dependencies": { - "through2": "~2.0.0", - "xtend": "~4.0.0" - } - }, - "node_modules/through2/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==", - "optional": true - }, - "node_modules/through2/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "optional": 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/through2/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==", - "optional": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/tildify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/tildify/-/tildify-1.2.0.tgz", - "integrity": "sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo=", - "optional": true, - "dependencies": { - "os-homedir": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/timed-out": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", - "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/timeout-abort-controller": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/timeout-abort-controller/-/timeout-abort-controller-1.1.1.tgz", - "integrity": "sha512-BsF9i3NAJag6T0ZEjki9j654zoafI2X6ayuNd6Tp8+Ul6Tr5s4jo973qFeiWrRSweqvskC+AHDKUmIW4b7pdhQ==", - "optional": true, - "dependencies": { - "abort-controller": "^3.0.0", - "retimer": "^2.0.0" - } - }, - "node_modules/timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "dependencies": { - "setimmediate": "^1.0.4" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/tiny-queue": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tiny-queue/-/tiny-queue-0.2.1.tgz", - "integrity": "sha1-JaZ/LG4lOyypQZd7XvdELvl6YEY=", - "optional": true - }, - "node_modules/tiny-secp256k1": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/tiny-secp256k1/-/tiny-secp256k1-1.1.6.tgz", - "integrity": "sha512-FmqJZGduTyvsr2cF3375fqGHUovSwDi/QytexX1Se4BPuPZpTE5Ftp5fg+EFSuEf3lhZqgCRjEG3ydUQ/aNiwA==", - "hasInstallScript": true, - "optional": true, - "dependencies": { - "bindings": "^1.3.0", - "bn.js": "^4.11.8", - "create-hmac": "^1.1.7", - "elliptic": "^6.4.0", - "nan": "^2.13.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/tiny-secp256k1/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "optional": true - }, - "node_modules/title-case": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/title-case/-/title-case-2.1.1.tgz", - "integrity": "sha1-PhJyFtpY0rxb7PE3q5Ha46fNj6o=", - "dependencies": { - "no-case": "^2.2.0", - "upper-case": "^1.0.3" - } - }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/to-absolute-glob": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-0.1.1.tgz", - "integrity": "sha1-HN+kcqnvUMI57maZm2YsoOs5k38=", - "optional": true, - "dependencies": { - "extend-shallow": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" - }, - "node_modules/to-data-view": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/to-data-view/-/to-data-view-1.1.0.tgz", - "integrity": "sha512-1eAdufMg6mwgmlojAx3QeMnzB/BTVp7Tbndi3U7ftcT2zCZadjxkkmLmd97zmaxWi+sgGcgWrokmpEoy0Dn0vQ==", - "optional": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "devOptional": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-json-schema": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/to-json-schema/-/to-json-schema-0.2.5.tgz", - "integrity": "sha512-jP1ievOee8pec3tV9ncxLSS48Bnw7DIybgy112rhMCEhf3K4uyVNZZHr03iQQBzbV5v5Hos+dlZRRyk6YSMNDw==", - "optional": true, - "dependencies": { - "lodash.isequal": "^4.5.0", - "lodash.keys": "^4.2.0", - "lodash.merge": "^4.6.2", - "lodash.omit": "^4.5.0", - "lodash.without": "^4.4.0", - "lodash.xor": "^4.5.0" - } - }, - "node_modules/to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "optional": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-readable-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", - "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", - "engines": { - "node": ">=6" - } - }, - "node_modules/to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "optional": true, - "dependencies": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/to-regex-range/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==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/to-regex/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "optional": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "optional": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "optional": true - }, - "node_modules/trim-right": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", - "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/truffle": { - "version": "5.4.10", - "resolved": "https://registry.npmjs.org/truffle/-/truffle-5.4.10.tgz", - "integrity": "sha512-i2EOTmsIkirSdqPGj9FAgVxy45bD5py1WOCMeeGz8I39L9lM/zP1A3NzihWplSL5nYv9A/fM9NY/N/CnVkIAnQ==", - "hasInstallScript": true, - "dependencies": { - "@truffle/db-loader": "^0.0.9", - "@truffle/debugger": "^9.1.15", - "app-module-path": "^2.2.0", - "mocha": "8.1.2", - "original-require": "^1.0.1" - }, - "bin": { - "truffle": "build/cli.bundled.js" - }, - "optionalDependencies": { - "@truffle/db": "^0.5.30", - "@truffle/preserve-fs": "^0.2.4", - "@truffle/preserve-to-buckets": "^0.2.4", - "@truffle/preserve-to-filecoin": "^0.2.4", - "@truffle/preserve-to-ipfs": "^0.2.4" - } - }, - "node_modules/truffle-plugin-verify": { - "version": "0.5.18", - "resolved": "https://registry.npmjs.org/truffle-plugin-verify/-/truffle-plugin-verify-0.5.18.tgz", - "integrity": "sha512-yqozlnupddTyabpUETwPZkaNSZWOtfeijy7qaDYlWGOmxfWdI3TYjRsKJVqdLf22BPpE1VK4081RLXXfNbISGg==", - "dev": true, - "dependencies": { - "axios": "^0.21.1", - "cli-logger": "^0.5.40", - "delay": "^5.0.0", - "querystring": "^0.2.1" - } - }, - "node_modules/truffle-plugin-verify/node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dev": true, - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, - "node_modules/truffle-plugin-verify/node_modules/querystring": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", - "integrity": "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/ts-invariant": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", - "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", - "optional": true, - "dependencies": { - "tslib": "^1.9.3" - } - }, - "node_modules/ts-invariant/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "optional": true - }, - "node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - }, - "node_modules/tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - }, - "node_modules/tweetnacl-util": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", - "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", - "devOptional": true - }, - "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" - }, - "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "optional": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", - "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", - "optional": true, - "engines": { - "node": "*" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "devOptional": true - }, - "node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "node_modules/typeforce": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/typeforce/-/typeforce-1.18.0.tgz", - "integrity": "sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==", - "optional": true - }, - "node_modules/typescript-compare": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/typescript-compare/-/typescript-compare-0.0.2.tgz", - "integrity": "sha512-8ja4j7pMHkfLJQO2/8tut7ub+J3Lw2S3061eJLFQcvs3tsmJKp8KG5NtpLn7KcY2w08edF74BSVN7qJS0U6oHA==", - "dependencies": { - "typescript-logic": "^0.0.0" - } - }, - "node_modules/typescript-logic": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/typescript-logic/-/typescript-logic-0.0.0.tgz", - "integrity": "sha512-zXFars5LUkI3zP492ls0VskH3TtdeHCqu0i7/duGt60i5IGPIpAHE/DWo5FqJ6EjQ15YKXrt+AETjv60Dat34Q==" - }, - "node_modules/typescript-tuple": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/typescript-tuple/-/typescript-tuple-2.2.1.tgz", - "integrity": "sha512-Zcr0lbt8z5ZdEzERHAMAniTiIKerFCMgd7yjq1fPnDJ43et/k9twIFQMUYff9k5oXcsQ0WpvFcgzK2ZKASoW6Q==", - "dependencies": { - "typescript-compare": "^0.0.2" - } - }, - "node_modules/ua-parser-js": { - "version": "0.7.28", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz", - "integrity": "sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - } - ], - "optional": true, - "engines": { - "node": "*" - } - }, - "node_modules/uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "dependencies": { - "source-map": "~0.5.1", - "yargs": "~3.10.0" - }, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - }, - "optionalDependencies": { - "uglify-to-browserify": "~1.0.0" - } - }, - "node_modules/uglify-js/node_modules/camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/uglify-js/node_modules/cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "dependencies": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - } - }, - "node_modules/uglify-js/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/uglify-js/node_modules/window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/uglify-js/node_modules/yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "dependencies": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } - }, - "node_modules/uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "optional": true - }, - "node_modules/uglifyjs-webpack-plugin": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz", - "integrity": "sha1-uVH0q7a9YX5m9j64kUmOORdj4wk=", - "hasInstallScript": true, - "dependencies": { - "source-map": "^0.5.6", - "uglify-js": "^2.8.29", - "webpack-sources": "^1.0.1" - }, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - }, - "peerDependencies": { - "webpack": "^1.9 || ^2 || ^2.1.0-beta || ^2.2.0-rc || ^3.0.0" - } - }, - "node_modules/uglifyjs-webpack-plugin/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/uint8arrays": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-1.1.0.tgz", - "integrity": "sha512-cLdlZ6jnFczsKf5IH1gPHTtcHtPGho5r4CvctohmQjw8K7Q3gFdfIGHxSTdTaCKrL4w09SsPRJTqRS0drYeszA==", - "optional": true, - "dependencies": { - "multibase": "^3.0.0", - "web-encoding": "^1.0.2" - } - }, - "node_modules/uint8arrays/node_modules/multibase": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-3.1.2.tgz", - "integrity": "sha512-bpklWHs70LO3smJUHOjcnzGceJJvn9ui0Vau6Za0B/GBepaXswmW8Ufea0uD9pROf/qCQ4N4lZ3sf3U+SNf0tw==", - "deprecated": "This module has been superseded by the multiformats module", - "optional": true, - "dependencies": { - "@multiformats/base-x": "^4.0.1", - "web-encoding": "^1.0.6" - }, - "engines": { - "node": ">=10.0.0", - "npm": ">=6.0.0" - } - }, - "node_modules/ultron": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" - }, - "node_modules/unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", - "dependencies": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/underscore": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", - "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==", - "optional": true - }, - "node_modules/union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "optional": true, - "dependencies": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unique-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", - "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", - "optional": true, - "dependencies": { - "json-stable-stringify-without-jsonify": "^1.0.1", - "through2-filter": "^3.0.0" - } - }, - "node_modules/unique-stream/node_modules/through2-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", - "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", - "optional": true, - "dependencies": { - "through2": "~2.0.0", - "xtend": "~4.0.0" - } - }, - "node_modules/unique-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", - "optional": true, - "dependencies": { - "crypto-random-string": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "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==", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unixify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unixify/-/unixify-1.0.0.tgz", - "integrity": "sha1-OmQcjC/7zk2mg6XHDwOkYpQMIJA=", - "optional": true, - "dependencies": { - "normalize-path": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unorm": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/unorm/-/unorm-1.6.0.tgz", - "integrity": "sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA==", - "optional": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "optional": true, - "dependencies": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "optional": true, - "dependencies": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "optional": true, - "dependencies": { - "isarray": "1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unset-value/node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "optional": true, - "engines": { - "node": ">=4", - "yarn": "*" - } - }, - "node_modules/upper-case": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", - "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=" - }, - "node_modules/upper-case-first": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-1.1.2.tgz", - "integrity": "sha1-XXm+3P8UQZUY/S7bCgUHybaFkRU=", - "dependencies": { - "upper-case": "^1.1.1" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "deprecated": "Please see https://github.com/lydell/urix#deprecated", - "optional": true - }, - "node_modules/url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "node_modules/url-parse-lax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", - "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", - "dependencies": { - "prepend-http": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/url-set-query": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz", - "integrity": "sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk=" - }, - "node_modules/url-to-options": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", - "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=", - "engines": { - "node": ">= 4" - } - }, - "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" - }, - "node_modules/ursa-optional": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/ursa-optional/-/ursa-optional-0.10.2.tgz", - "integrity": "sha512-TKdwuLboBn7M34RcvVTuQyhvrA8gYKapuVdm0nBP0mnBc7oECOfUQZrY91cefL3/nm64ZyrejSRrhTVdX7NG/A==", - "hasInstallScript": true, - "optional": true, - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.14.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/utf-8-validate": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.5.tgz", - "integrity": "sha512-+pnxRYsS/axEpkrrEpzYfNZGXp0IjC/9RIxwM5gntY4Koi8SHmUGSfxfWqxZdRxrtaoVstuOzUp/rbs3JSPELQ==", - "hasInstallScript": true, - "dependencies": { - "node-gyp-build": "^4.2.0" - } - }, - "node_modules/utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", - "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" - }, - "node_modules/util": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", - "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "safe-buffer": "^5.1.2", - "which-typed-array": "^1.1.2" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, - "node_modules/util.promisify": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.1.1.tgz", - "integrity": "sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw==", - "optional": true, - "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "for-each": "^0.3.3", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", - "integrity": "sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w=", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details." - }, - "node_modules/vali-date": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz", - "integrity": "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/valid-url": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz", - "integrity": "sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA=", - "optional": true - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/value-or-promise": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.10.tgz", - "integrity": "sha512-1OwTzvcfXkAfabk60UVr5NdjtjJ0Fg0T5+B1bhxtrOEwSH2fe8y4DnLgoksfCyd8yZCOQQHB0qLMQnwgCjbXLQ==", - "optional": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==" - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/vinyl": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-1.2.0.tgz", - "integrity": "sha1-XIgDbPVl5d8FVYv8kR+GVt8hiIQ=", - "optional": true, - "dependencies": { - "clone": "^1.0.0", - "clone-stats": "^0.0.1", - "replace-ext": "0.0.1" - }, - "engines": { - "node": ">= 0.9" - } - }, - "node_modules/vinyl-fs": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-2.4.3.tgz", - "integrity": "sha1-PZflYuv91LZpId6nBia4S96dLQc=", - "optional": true, - "dependencies": { - "duplexify": "^3.2.0", - "glob-stream": "^5.3.2", - "graceful-fs": "^4.0.0", - "gulp-sourcemaps": "^1.5.2", - "is-valid-glob": "^0.3.0", - "lazystream": "^1.0.0", - "lodash.isequal": "^4.0.0", - "merge-stream": "^1.0.0", - "mkdirp": "^0.5.0", - "object-assign": "^4.0.0", - "readable-stream": "^2.0.4", - "strip-bom": "^2.0.0", - "strip-bom-stream": "^1.0.0", - "through2": "^2.0.0", - "through2-filter": "^2.0.0", - "vali-date": "^1.0.0", - "vinyl": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/vinyl-fs/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "optional": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/vinyl-fs/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==", - "optional": true - }, - "node_modules/vinyl-fs/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "optional": 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/vinyl-fs/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==", - "optional": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" - }, - "node_modules/vuvuzela": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/vuvuzela/-/vuvuzela-1.0.3.tgz", - "integrity": "sha1-O+FF5YJxxzylUnndhR8SpoIRSws=", - "optional": true - }, - "node_modules/watchpack": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", - "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", - "dependencies": { - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0" - }, - "optionalDependencies": { - "chokidar": "^3.4.1", - "watchpack-chokidar2": "^2.0.1" - } - }, - "node_modules/watchpack-chokidar2": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", - "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", - "optional": true, - "dependencies": { - "chokidar": "^2.1.8" - } - }, - "node_modules/watchpack-chokidar2/node_modules/anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "optional": true, - "dependencies": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "node_modules/watchpack-chokidar2/node_modules/anymatch/node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "optional": true, - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "optional": true, - "dependencies": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/braces/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "optional": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "deprecated": "Chokidar 2 will break on node v14+. Upgrade to chokidar 3 with 15x less dependencies.", - "optional": true, - "dependencies": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "optionalDependencies": { - "fsevents": "^1.2.7" - } - }, - "node_modules/watchpack-chokidar2/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "optional": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "optional": true, - "dependencies": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/expand-brackets/node_modules/define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "optional": true, - "dependencies": { - "is-descriptor": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/expand-brackets/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "optional": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/expand-brackets/node_modules/is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "optional": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "optional": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/expand-brackets/node_modules/is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "optional": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "optional": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/expand-brackets/node_modules/is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "optional": true, - "dependencies": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/expand-brackets/node_modules/kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "optional": true, - "dependencies": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/extend-shallow/node_modules/is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "optional": true, - "dependencies": { - "is-plain-object": "^2.0.4" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "optional": true, - "dependencies": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/extglob/node_modules/define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "optional": true, - "dependencies": { - "is-descriptor": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/extglob/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "optional": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "optional": true, - "dependencies": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/fill-range/node_modules/extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "optional": true, - "dependencies": { - "is-extendable": "^0.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "deprecated": "fsevents 1 will break on node v14+ and could be using insecure binaries. Upgrade to fsevents 2.", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "dependencies": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - }, - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "optional": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "optional": true, - "dependencies": { - "binary-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "optional": true, - "dependencies": { - "kind-of": "^6.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "optional": true, - "dependencies": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "optional": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "optional": true, - "dependencies": { - "kind-of": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/is-number/node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "optional": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/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==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "optional": true, - "dependencies": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/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==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack-chokidar2/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==", - "optional": true - }, - "node_modules/watchpack-chokidar2/node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "optional": 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/watchpack-chokidar2/node_modules/readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "optional": true, - "dependencies": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/watchpack-chokidar2/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==", - "optional": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/watchpack-chokidar2/node_modules/to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "optional": true, - "dependencies": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "optional": true, - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/web-encoding": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.1.5.tgz", - "integrity": "sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==", - "optional": true, - "dependencies": { - "util": "^0.12.3" - }, - "optionalDependencies": { - "@zxing/text-encoding": "0.9.0" - } - }, - "node_modules/web3": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.5.3.tgz", - "integrity": "sha512-eyBg/1K44flfv0hPjXfKvNwcUfIVDI4NX48qHQe6wd7C8nPSdbWqo9vLy6ksZIt9NLa90HjI8HsGYgnMSUxn6w==", - "hasInstallScript": true, - "dependencies": { - "web3-bzz": "1.5.3", - "web3-core": "1.5.3", - "web3-eth": "1.5.3", - "web3-eth-personal": "1.5.3", - "web3-net": "1.5.3", - "web3-shh": "1.5.3", - "web3-utils": "1.5.3" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-bzz": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.5.2.tgz", - "integrity": "sha512-W/sPCdA+XQ9duUYKHAwf/g69cbbV8gTCRsa1MpZwU7spXECiyJ2EvD/QzAZ+UpJk3GELXFF/fUByeZ3VRQKF2g==", - "hasInstallScript": true, - "dependencies": { - "@types/node": "^12.12.6", - "got": "9.6.0", - "swarm-js": "^0.1.40" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.5.2.tgz", - "integrity": "sha512-sebMpQbg3kbh3vHUbHrlKGKOxDWqjgt8KatmTBsTAWj/HwWYVDzeX+2Q84+swNYsm2DrTBVFlqTErFUwPBvyaA==", - "dependencies": { - "@types/bn.js": "^4.11.5", - "@types/node": "^12.12.6", - "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.5.2", - "web3-core-method": "1.5.2", - "web3-core-requestmanager": "1.5.2", - "web3-utils": "1.5.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-helpers": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.5.2.tgz", - "integrity": "sha512-U7LJoeUdQ3aY9t5gU7t/1XpcApsWm+4AcW5qKl/44ZxD44w0Dmsq1c5zJm3GuLr/a9MwQfXK4lpmvxVQWHHQRg==", - "dependencies": { - "web3-eth-iban": "1.5.2", - "web3-utils": "1.5.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-method": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.5.2.tgz", - "integrity": "sha512-/mC5t9UjjJoQmJJqO5nWK41YHo+tMzFaT7Tp7jDCQsBkinE68KsUJkt0jzygpheW84Zra0DVp6q19gf96+cugg==", - "dependencies": { - "@ethereumjs/common": "^2.4.0", - "@ethersproject/transactions": "^5.0.0-beta.135", - "web3-core-helpers": "1.5.2", - "web3-core-promievent": "1.5.2", - "web3-core-subscriptions": "1.5.2", - "web3-utils": "1.5.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-promievent": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.5.2.tgz", - "integrity": "sha512-5DacbJXe98ozSor7JlkTNCy6G8945VunRRkPxMk98rUrg60ECVEM/vuefk1atACzjQsKx6tmLZuHxbJQ64TQeQ==", - "dependencies": { - "eventemitter3": "4.0.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-requestmanager": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.5.2.tgz", - "integrity": "sha512-oRVW9OrAsXN2JIZt68OEg1Mb1A9a/L3JAGMv15zLEFEnJEGw0KQsGK1ET2kvZBzvpFd5G0EVkYCnx7WDe4HSNw==", - "dependencies": { - "util": "^0.12.0", - "web3-core-helpers": "1.5.2", - "web3-providers-http": "1.5.2", - "web3-providers-ipc": "1.5.2", - "web3-providers-ws": "1.5.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-core-subscriptions": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.5.2.tgz", - "integrity": "sha512-hapI4rKFk22yurtIv0BYvkraHsM7epA4iI8Np+HuH6P9DD0zj/llaps6TXLM9HyacLBRwmOLZmr+pHBsPopUnQ==", - "dependencies": { - "eventemitter3": "4.0.4", - "web3-core-helpers": "1.5.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.5.2.tgz", - "integrity": "sha512-DwWQ6TCOUqvYyo7T20S7HpQDPveNHNqOn2Q2F3E8ZFyEjmqT4XsGiwvm08kB/VgQ4e/ANyq/i8PPFSYMT8JKHg==", - "dependencies": { - "web3-core": "1.5.2", - "web3-core-helpers": "1.5.2", - "web3-core-method": "1.5.2", - "web3-core-subscriptions": "1.5.2", - "web3-eth-abi": "1.5.2", - "web3-eth-accounts": "1.5.2", - "web3-eth-contract": "1.5.2", - "web3-eth-ens": "1.5.2", - "web3-eth-iban": "1.5.2", - "web3-eth-personal": "1.5.2", - "web3-net": "1.5.2", - "web3-utils": "1.5.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-abi": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.5.2.tgz", - "integrity": "sha512-P3bJbDR5wib4kWGfVeBKBVi27T+AiHy4EJxYM6SMNbpm3DboLDdisu9YBd6INMs8rzxgnprBbGmmyn4jKIDKAA==", - "dependencies": { - "@ethersproject/abi": "5.0.7", - "web3-utils": "1.5.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-accounts": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.5.2.tgz", - "integrity": "sha512-F8mtzxgEhxfLc66vPi0Gqd6mpscvvk7Ua575bsJ1p9J2X/VtuKgDgpWcU4e4LKeROQ+ouCpAG9//0j9jQuij3A==", - "dependencies": { - "@ethereumjs/common": "^2.3.0", - "@ethereumjs/tx": "^3.2.1", - "crypto-browserify": "3.12.0", - "eth-lib": "0.2.8", - "ethereumjs-util": "^7.0.10", - "scrypt-js": "^3.0.1", - "uuid": "3.3.2", - "web3-core": "1.5.2", - "web3-core-helpers": "1.5.2", - "web3-core-method": "1.5.2", - "web3-utils": "1.5.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-accounts/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/web3-eth-accounts/node_modules/eth-lib": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", - "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", - "dependencies": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "xhr-request-promise": "^0.1.2" - } - }, - "node_modules/web3-eth-accounts/node_modules/scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" - }, - "node_modules/web3-eth-accounts/node_modules/uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/web3-eth-contract": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.5.2.tgz", - "integrity": "sha512-4B8X/IPFxZCTmtENpdWXtyw5fskf2muyc3Jm5brBQRb4H3lVh1/ZyQy7vOIkdphyaXu4m8hBLHzeyKkd37mOUg==", - "dependencies": { - "@types/bn.js": "^4.11.5", - "web3-core": "1.5.2", - "web3-core-helpers": "1.5.2", - "web3-core-method": "1.5.2", - "web3-core-promievent": "1.5.2", - "web3-core-subscriptions": "1.5.2", - "web3-eth-abi": "1.5.2", - "web3-utils": "1.5.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-ens": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.5.2.tgz", - "integrity": "sha512-/UrLL42ZOCYge+BpFBdzG8ICugaRS4f6X7PxJKO+zAt+TwNgBpjuWfW/ZYNcuqJun/ZyfcTuj03TXqA1RlNhZQ==", - "dependencies": { - "content-hash": "^2.5.2", - "eth-ens-namehash": "2.0.8", - "web3-core": "1.5.2", - "web3-core-helpers": "1.5.2", - "web3-core-promievent": "1.5.2", - "web3-eth-abi": "1.5.2", - "web3-eth-contract": "1.5.2", - "web3-utils": "1.5.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-iban": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.5.2.tgz", - "integrity": "sha512-C04YDXuSG/aDwOHSX+HySBGb0KraiAVt+/l1Mw7y/fCUrKC/K0yYzMYqY/uYOcvLtepBPsC4ZfUYWUBZ2PO8Vg==", - "dependencies": { - "bn.js": "^4.11.9", - "web3-utils": "1.5.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-eth-iban/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/web3-eth-personal": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.5.2.tgz", - "integrity": "sha512-nH5N2GiVC0C5XeMEKU16PeFP3Hb3hkPvlR6Tf9WQ+pE+jw1c8eaXBO1CJQLr15ikhUF3s94ICyHcfjzkDsmRbA==", - "dependencies": { - "@types/node": "^12.12.6", - "web3-core": "1.5.2", - "web3-core-helpers": "1.5.2", - "web3-core-method": "1.5.2", - "web3-net": "1.5.2", - "web3-utils": "1.5.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-net": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.5.2.tgz", - "integrity": "sha512-VEc9c+jfoERhbJIxnx0VPlQDot8Lm4JW/tOWFU+ekHgIiu2zFKj5YxhURIth7RAbsaRsqCb79aE+M0eI8maxVQ==", - "dependencies": { - "web3-core": "1.5.2", - "web3-core-method": "1.5.2", - "web3-utils": "1.5.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-providers-http": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.5.2.tgz", - "integrity": "sha512-dUNFJc9IMYDLZnkoQX3H4ZjvHjGO6VRVCqrBrdh84wPX/0da9dOA7DwIWnG0Gv3n9ybWwu5JHQxK4MNQ444lyA==", - "dependencies": { - "web3-core-helpers": "1.5.2", - "xhr2-cookies": "1.1.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-providers-ipc": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.5.2.tgz", - "integrity": "sha512-SJC4Sivt4g9LHKlRy7cs1jkJgp7bjrQeUndE6BKs0zNALKguxu6QYnzbmuHCTFW85GfMDjhvi24jyyZHMnBNXQ==", - "dependencies": { - "oboe": "2.1.5", - "web3-core-helpers": "1.5.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-providers-ws": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.5.2.tgz", - "integrity": "sha512-xy9RGlyO8MbJDuKv2vAMDkg+en+OvXG0CGTCM2BTl6l1vIdHpCa+6A/9KV2rK8aU9OBZ7/Pf+Y19517kHVl9RA==", - "dependencies": { - "eventemitter3": "4.0.4", - "web3-core-helpers": "1.5.2", - "websocket": "^1.0.32" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-shh": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.5.2.tgz", - "integrity": "sha512-wOxOcYt4Sa0AHAI8gG7RulCwVuVjSRS/M/AbFsea3XfJdN6sU13/syY7OdZNjNYuKjYTzxKYrd3dU/K2iqffVw==", - "hasInstallScript": true, - "dependencies": { - "web3-core": "1.5.2", - "web3-core-method": "1.5.2", - "web3-core-subscriptions": "1.5.2", - "web3-net": "1.5.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3-utils": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.5.2.tgz", - "integrity": "sha512-quTtTeQJHYSxAwIBOCGEcQtqdVcFWX6mCFNoqnp+mRbq+Hxbs8CGgO/6oqfBx4OvxIOfCpgJWYVHswRXnbEu9Q==", - "dependencies": { - "bn.js": "^4.11.9", - "eth-lib": "0.2.8", - "ethereum-bloom-filters": "^1.0.6", - "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/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/web3-utils/node_modules/eth-lib": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", - "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", - "dependencies": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "xhr-request-promise": "^0.1.2" - } - }, - "node_modules/web3/node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - }, - "node_modules/web3/node_modules/eth-lib": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", - "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", - "dependencies": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "xhr-request-promise": "^0.1.2" - } - }, - "node_modules/web3/node_modules/scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" - }, - "node_modules/web3/node_modules/uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/web3/node_modules/web3-bzz": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.5.3.tgz", - "integrity": "sha512-SlIkAqG0eS6cBS9Q2eBOTI1XFzqh83RqGJWnyrNZMDxUwsTVHL+zNnaPShVPvrWQA1Ub5b0bx1Kc5+qJVxsTJg==", - "hasInstallScript": true, - "dependencies": { - "@types/node": "^12.12.6", - "got": "9.6.0", - "swarm-js": "^0.1.40" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3/node_modules/web3-core": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.5.3.tgz", - "integrity": "sha512-ACTbu8COCu+0eUNmd9pG7Q9EVsNkAg2w3Y7SqhDr+zjTgbSHZV01jXKlapm9z+G3AN/BziV3zGwudClJ4u4xXQ==", - "dependencies": { - "@types/bn.js": "^4.11.5", - "@types/node": "^12.12.6", - "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.5.3", - "web3-core-method": "1.5.3", - "web3-core-requestmanager": "1.5.3", - "web3-utils": "1.5.3" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3/node_modules/web3-core-helpers": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.5.3.tgz", - "integrity": "sha512-Ip1IjB3S8vN7Kf1PPjK41U5gskmMk6IJQlxIVuS8/1U7n/o0jC8krqtpRwiMfAgYyw3TXwBFtxSRTvJtnLyXZw==", - "dependencies": { - "web3-eth-iban": "1.5.3", - "web3-utils": "1.5.3" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3/node_modules/web3-core-method": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.5.3.tgz", - "integrity": "sha512-8wJrwQ2qD9ibWieF9oHXwrJsUGrv3XAtEkNeyvyNMpktNTIjxJ2jaFGQUuLiyUrMubD18XXgLk4JS6PJU4Loeg==", - "dependencies": { - "@ethereumjs/common": "^2.4.0", - "@ethersproject/transactions": "^5.0.0-beta.135", - "web3-core-helpers": "1.5.3", - "web3-core-promievent": "1.5.3", - "web3-core-subscriptions": "1.5.3", - "web3-utils": "1.5.3" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3/node_modules/web3-core-promievent": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.5.3.tgz", - "integrity": "sha512-CFfgqvk3Vk6PIAxtLLuX+pOMozxkKCY+/GdGr7weMh033mDXEPvwyVjoSRO1PqIKj668/hMGQsVoIgbyxkJ9Mg==", - "dependencies": { - "eventemitter3": "4.0.4" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3/node_modules/web3-core-requestmanager": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.5.3.tgz", - "integrity": "sha512-9k/Bze2rs8ONix5IZR+hYdMNQv+ark2Ek2kVcrFgWO+LdLgZui/rn8FikPunjE+ub7x7pJaKCgVRbYFXjo3ZWg==", - "dependencies": { - "util": "^0.12.0", - "web3-core-helpers": "1.5.3", - "web3-providers-http": "1.5.3", - "web3-providers-ipc": "1.5.3", - "web3-providers-ws": "1.5.3" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3/node_modules/web3-core-subscriptions": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.5.3.tgz", - "integrity": "sha512-L2m9vG1iRN6thvmv/HQwO2YLhOQlmZU8dpLG6GSo9FBN14Uch868Swk0dYVr3rFSYjZ/GETevSXU+O+vhCummA==", - "dependencies": { - "eventemitter3": "4.0.4", - "web3-core-helpers": "1.5.3" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3/node_modules/web3-eth": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.5.3.tgz", - "integrity": "sha512-saFurA1L23Bd7MEf7cBli6/jRdMhD4X/NaMiO2mdMMCXlPujoudlIJf+VWpRWJpsbDFdu7XJ2WHkmBYT5R3p1Q==", - "dependencies": { - "web3-core": "1.5.3", - "web3-core-helpers": "1.5.3", - "web3-core-method": "1.5.3", - "web3-core-subscriptions": "1.5.3", - "web3-eth-abi": "1.5.3", - "web3-eth-accounts": "1.5.3", - "web3-eth-contract": "1.5.3", - "web3-eth-ens": "1.5.3", - "web3-eth-iban": "1.5.3", - "web3-eth-personal": "1.5.3", - "web3-net": "1.5.3", - "web3-utils": "1.5.3" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3/node_modules/web3-eth-abi": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.5.3.tgz", - "integrity": "sha512-i/qhuFsoNrnV130CSRYX/z4SlCfSQ4mHntti5yTmmQpt70xZKYZ57BsU0R29ueSQ9/P+aQrL2t2rqkQkAloUxg==", - "dependencies": { - "@ethersproject/abi": "5.0.7", - "web3-utils": "1.5.3" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3/node_modules/web3-eth-accounts": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.5.3.tgz", - "integrity": "sha512-pdGhXgeBaEJENMvRT6W9cmji3Zz/46ugFSvmnLLw79qi5EH7XJhKISNVb41eWCrs4am5GhI67GLx5d2s2a72iw==", - "dependencies": { - "@ethereumjs/common": "^2.3.0", - "@ethereumjs/tx": "^3.2.1", - "crypto-browserify": "3.12.0", - "eth-lib": "0.2.8", - "ethereumjs-util": "^7.0.10", - "scrypt-js": "^3.0.1", - "uuid": "3.3.2", - "web3-core": "1.5.3", - "web3-core-helpers": "1.5.3", - "web3-core-method": "1.5.3", - "web3-utils": "1.5.3" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3/node_modules/web3-eth-contract": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.5.3.tgz", - "integrity": "sha512-Gdlt1L6cdHe83k7SdV6xhqCytVtOZkjD0kY/15x441AuuJ4JLubCHuqu69k2Dr3tWifHYVys/vG8QE/W16syGg==", - "dependencies": { - "@types/bn.js": "^4.11.5", - "web3-core": "1.5.3", - "web3-core-helpers": "1.5.3", - "web3-core-method": "1.5.3", - "web3-core-promievent": "1.5.3", - "web3-core-subscriptions": "1.5.3", - "web3-eth-abi": "1.5.3", - "web3-utils": "1.5.3" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3/node_modules/web3-eth-ens": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.5.3.tgz", - "integrity": "sha512-QmGFFtTGElg0E+3xfCIFhiUF+1imFi9eg/cdsRMUZU4F1+MZCC/ee+IAelYLfNTGsEslCqfAusliKOT9DdGGnw==", - "dependencies": { - "content-hash": "^2.5.2", - "eth-ens-namehash": "2.0.8", - "web3-core": "1.5.3", - "web3-core-helpers": "1.5.3", - "web3-core-promievent": "1.5.3", - "web3-eth-abi": "1.5.3", - "web3-eth-contract": "1.5.3", - "web3-utils": "1.5.3" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3/node_modules/web3-eth-iban": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.5.3.tgz", - "integrity": "sha512-vMzmGqolYZvRHwP9P4Nf6G8uYM5aTLlQu2a34vz78p0KlDC+eV1th3+90Qeaupa28EG7OO0IT1F0BejiIauOPw==", - "dependencies": { - "bn.js": "^4.11.9", - "web3-utils": "1.5.3" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3/node_modules/web3-eth-personal": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.5.3.tgz", - "integrity": "sha512-JzibJafR7ak/Icas8uvos3BmUNrZw1vShuNR5Cxjo+vteOC8XMqz1Vr7RH65B4bmlfb3bm9xLxetUHO894+Sew==", - "dependencies": { - "@types/node": "^12.12.6", - "web3-core": "1.5.3", - "web3-core-helpers": "1.5.3", - "web3-core-method": "1.5.3", - "web3-net": "1.5.3", - "web3-utils": "1.5.3" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3/node_modules/web3-net": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.5.3.tgz", - "integrity": "sha512-0W/xHIPvgVXPSdLu0iZYnpcrgNnhzHMC888uMlGP5+qMCt8VuflUZHy7tYXae9Mzsg1kxaJAS5lHVNyeNw4CoQ==", - "dependencies": { - "web3-core": "1.5.3", - "web3-core-method": "1.5.3", - "web3-utils": "1.5.3" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3/node_modules/web3-providers-http": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.5.3.tgz", - "integrity": "sha512-5DpUyWGHtDAr2RYmBu34Fu+4gJuBAuNx2POeiJIooUtJ+Mu6pIx4XkONWH6V+Ez87tZAVAsFOkJRTYuzMr3rPw==", - "dependencies": { - "web3-core-helpers": "1.5.3", - "xhr2-cookies": "1.1.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3/node_modules/web3-providers-ipc": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.5.3.tgz", - "integrity": "sha512-JmeAptugVpmXI39LGxUSAymx0NOFdgpuI1hGQfIhbEAcd4sv7fhfd5D+ZU4oLHbRI8IFr4qfGU0uhR8BXhDzlg==", - "dependencies": { - "oboe": "2.1.5", - "web3-core-helpers": "1.5.3" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3/node_modules/web3-providers-ws": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.5.3.tgz", - "integrity": "sha512-6DhTw4Q7nm5CFYEUHOJM0gAb3xFx+9gWpVveg3YxJ/ybR1BUvEWo3bLgIJJtX56cYX0WyY6DS35a7f0LOI1kVg==", - "dependencies": { - "eventemitter3": "4.0.4", - "web3-core-helpers": "1.5.3", - "websocket": "^1.0.32" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3/node_modules/web3-shh": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.5.3.tgz", - "integrity": "sha512-COfEXfsqoV/BkcsNLRxQqnWc1Teb8/9GxdGag5GtPC5gQC/vsN+7hYVJUwNxY9LtJPKYTij2DHHnx6UkITng+Q==", - "hasInstallScript": true, - "dependencies": { - "web3-core": "1.5.3", - "web3-core-method": "1.5.3", - "web3-core-subscriptions": "1.5.3", - "web3-net": "1.5.3" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/web3/node_modules/web3-utils": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.5.3.tgz", - "integrity": "sha512-56nRgA+Ad9SEyCv39g36rTcr5fpsd4L9LgV3FK0aB66nAMazLAA6Qz4lH5XrUKPDyBIPGJIR+kJsyRtwcu2q1Q==", - "dependencies": { - "bn.js": "^4.11.9", - "eth-lib": "0.2.8", - "ethereum-bloom-filters": "^1.0.6", - "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/webidl-conversions": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-2.0.1.tgz", - "integrity": "sha1-O/glj30xjHRDw28uFpQCoaZwNQY=", - "optional": true - }, - "node_modules/webpack": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.12.0.tgz", - "integrity": "sha512-Sw7MdIIOv/nkzPzee4o0EdvCuPmxT98+vVpIvwtcwcF1Q4SDSNp92vwcKc4REe7NItH9f1S4ra9FuQ7yuYZ8bQ==", - "dependencies": { - "acorn": "^5.0.0", - "acorn-dynamic-import": "^2.0.0", - "ajv": "^6.1.0", - "ajv-keywords": "^3.1.0", - "async": "^2.1.2", - "enhanced-resolve": "^3.4.0", - "escope": "^3.6.0", - "interpret": "^1.0.0", - "json-loader": "^0.5.4", - "json5": "^0.5.1", - "loader-runner": "^2.3.0", - "loader-utils": "^1.1.0", - "memory-fs": "~0.4.1", - "mkdirp": "~0.5.0", - "node-libs-browser": "^2.0.0", - "source-map": "^0.5.3", - "supports-color": "^4.2.1", - "tapable": "^0.2.7", - "uglifyjs-webpack-plugin": "^0.4.6", - "watchpack": "^1.4.0", - "webpack-sources": "^1.0.1", - "yargs": "^8.0.2" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=4.3.0 <5.0.0 || >=5.10" - } - }, - "node_modules/webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dependencies": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "node_modules/webpack/node_modules/acorn": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", - "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/webpack/node_modules/ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", - "engines": { - "node": ">=4" - } - }, - "node_modules/webpack/node_modules/camelcase": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", - "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", - "engines": { - "node": ">=4" - } - }, - "node_modules/webpack/node_modules/has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/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": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "engines": { - "node": ">=4" - } - }, - "node_modules/webpack/node_modules/load-json-file": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", - "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/webpack/node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/webpack/node_modules/os-locale": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-2.1.0.tgz", - "integrity": "sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA==", - "dependencies": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/webpack/node_modules/path-type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", - "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", - "dependencies": { - "pify": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/webpack/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/read-pkg": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", - "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", - "dependencies": { - "load-json-file": "^2.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/webpack/node_modules/read-pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", - "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", - "dependencies": { - "find-up": "^2.0.0", - "read-pkg": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/webpack/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/webpack/node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/webpack/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/webpack/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "engines": { - "node": ">=4" - } - }, - "node_modules/webpack/node_modules/supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", - "dependencies": { - "has-flag": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/webpack/node_modules/yargs": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-8.0.2.tgz", - "integrity": "sha1-YpmpBVsc78lp/355wdkY3Osiw2A=", - "dependencies": { - "camelcase": "^4.1.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", - "read-pkg-up": "^2.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^7.0.0" - } - }, - "node_modules/webpack/node_modules/yargs-parser": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-7.0.0.tgz", - "integrity": "sha1-jQrELxbqVd69MyyvTEA4s+P139k=", - "dependencies": { - "camelcase": "^4.1.0" - } - }, - "node_modules/websocket": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", - "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", - "dependencies": { - "bufferutil": "^4.0.1", - "debug": "^2.2.0", - "es5-ext": "^0.10.50", - "typedarray-to-buffer": "^3.1.5", - "utf-8-validate": "^5.0.2", - "yaeti": "^0.0.6" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/websocket/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/websql": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/websql/-/websql-1.0.0.tgz", - "integrity": "sha512-7iZ+u28Ljw5hCnMiq0BCOeSYf0vCFQe/ORY0HgscTiKjQed8WqugpBUggJ2NTnB9fahn1kEnPRX2jf8Px5PhJw==", - "optional": true, - "dependencies": { - "argsarray": "^0.0.1", - "immediate": "^3.2.2", - "noop-fn": "^1.0.0", - "sqlite3": "^4.0.0", - "tiny-queue": "^0.2.1" - } - }, - "node_modules/whatwg-fetch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", - "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==", - "dev": true - }, - "node_modules/whatwg-url-compat": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/whatwg-url-compat/-/whatwg-url-compat-0.6.5.tgz", - "integrity": "sha1-AImBEa9om7CXVBzVpFymyHmERb8=", - "optional": true, - "dependencies": { - "tr46": "~0.0.1" - } - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" - }, - "node_modules/which-typed-array": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz", - "integrity": "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-abstract": "^1.18.5", - "foreach": "^2.0.5", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dependencies": { - "string-width": "^1.0.2 || 2" - } - }, - "node_modules/wif": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/wif/-/wif-2.0.6.tgz", - "integrity": "sha1-CNP1IFbGZnkplyb63g1DKudLRwQ=", - "optional": true, - "dependencies": { - "bs58check": "<3.0.0" - } - }, - "node_modules/window-size": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", - "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=", - "bin": { - "window-size": "cli.js" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/workerpool": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.0.0.tgz", - "integrity": "sha512-fU2OcNA/GVAJLLyKUoHkAgIhKb0JoCpSjLC/G2vYKxUjVmQwGbRVeoPJ1a8U4pnVofz4AQV5Y/NEw8oKqxEBtA==" - }, - "node_modules/wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "dependencies": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "node_modules/write-file-atomic": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", - "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", - "optional": true, - "dependencies": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, - "node_modules/write-stream": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/write-stream/-/write-stream-0.4.3.tgz", - "integrity": "sha1-g8yMA0fQr2BXqThitOOuAd5cgcE=", - "optional": true, - "dependencies": { - "readable-stream": "~0.0.2" - } - }, - "node_modules/write-stream/node_modules/readable-stream": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-0.0.4.tgz", - "integrity": "sha1-8y124/uGM0SlSNeZIwBxc2ZbO40=", - "optional": true - }, - "node_modules/ws": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", - "dependencies": { - "async-limiter": "~1.0.0", - "safe-buffer": "~5.1.0", - "ultron": "~1.1.0" - } - }, - "node_modules/xdg-basedir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", - "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", - "optional": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/xhr": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", - "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", - "dependencies": { - "global": "~4.4.0", - "is-function": "^1.0.1", - "parse-headers": "^2.0.0", - "xtend": "^4.0.0" - } - }, - "node_modules/xhr-request": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz", - "integrity": "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==", - "dependencies": { - "buffer-to-arraybuffer": "^0.0.5", - "object-assign": "^4.1.1", - "query-string": "^5.0.1", - "simple-get": "^2.7.0", - "timed-out": "^4.0.1", - "url-set-query": "^1.0.0", - "xhr": "^2.0.4" - } - }, - "node_modules/xhr-request-promise": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz", - "integrity": "sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==", - "dependencies": { - "xhr-request": "^1.1.0" - } - }, - "node_modules/xhr2-cookies": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/xhr2-cookies/-/xhr2-cookies-1.1.0.tgz", - "integrity": "sha1-fXdEnQmZGX8VXLc7I99yUF7YnUg=", - "dependencies": { - "cookiejar": "^2.1.1" - } - }, - "node_modules/xml-name-validator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", - "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", - "optional": true - }, - "node_modules/xmlhttprequest": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", - "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/xss": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.9.tgz", - "integrity": "sha512-2t7FahYnGJys6DpHLhajusId7R0Pm2yTmuL0GV9+mV0ZlaLSnb2toBmppATfg5sWIhZQGlsTLoecSzya+l4EAQ==", - "optional": true, - "dependencies": { - "commander": "^2.20.3", - "cssfilter": "0.0.10" - }, - "bin": { - "xss": "bin/xss" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", - "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==" - }, - "node_modules/yaeti": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", - "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=", - "engines": { - "node": ">=0.10.32" - } - }, - "node_modules/yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - }, - "node_modules/yargs": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.6.0.tgz", - "integrity": "sha1-y0BQwBWb+2u2ScD0r1UFJqhGGdw=", - "optional": true, - "dependencies": { - "camelcase": "^2.0.1", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "lodash.assign": "^4.0.3", - "os-locale": "^1.4.0", - "pkg-conf": "^1.1.2", - "read-pkg-up": "^1.0.1", - "require-main-filename": "^1.0.1", - "string-width": "^1.0.1", - "window-size": "^0.2.0", - "y18n": "^3.2.1", - "yargs-parser": "^2.4.0" - } - }, - "node_modules/yargs-parser": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", - "integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=", - "dependencies": { - "camelcase": "^3.0.0", - "lodash.assign": "^4.0.6" - } - }, - "node_modules/yargs-parser/node_modules/camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/yargs-unparser": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.1.tgz", - "integrity": "sha512-qZV14lK9MWsGCmcr7u5oXGH0dbGqZAIxTDrWXZDo5zUr6b6iUmelNKO6x6R1dQT24AH3LgRxJpr8meWy2unolA==", - "dependencies": { - "camelcase": "^5.3.1", - "decamelize": "^1.2.0", - "flat": "^4.1.0", - "is-plain-obj": "^1.1.0", - "yargs": "^14.2.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs-unparser/node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs-unparser/node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - } - }, - "node_modules/yargs-unparser/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" - }, - "node_modules/yargs-unparser/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs-unparser/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==", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/yargs-unparser/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": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "engines": { - "node": ">=4" - } - }, - "node_modules/yargs-unparser/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs-unparser/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yargs-unparser/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs-unparser/node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs-unparser/node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" - }, - "node_modules/yargs-unparser/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs-unparser/node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs-unparser/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" - }, - "node_modules/yargs-unparser/node_modules/yargs": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", - "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==", - "dependencies": { - "cliui": "^5.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^15.0.1" - } - }, - "node_modules/yargs-unparser/node_modules/yargs-parser": { - "version": "15.0.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.3.tgz", - "integrity": "sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA==", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "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==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zen-observable": { - "version": "0.8.15", - "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", - "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==", - "optional": true - }, - "node_modules/zen-observable-ts": { - "version": "0.8.21", - "resolved": "https://registry.npmjs.org/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz", - "integrity": "sha512-Yj3yXweRc8LdRMrCC8nIc4kkjWecPAUVh0TI0OUrWXx6aX790vLcDlWca6I4vsyCGH3LpWxq0dJRcMOFoVqmeg==", - "optional": true, - "dependencies": { - "tslib": "^1.9.3", - "zen-observable": "^0.8.0" - } - }, - "node_modules/zen-observable-ts/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "optional": true - } - }, "dependencies": { "101": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/101/-/101-1.6.3.tgz", "integrity": "sha512-4dmQ45yY0Dx24Qxp+zAsNLlMF6tteCyfVzgbulvSyC7tCyd3V8sW76sS0tHq8NpcbXfWTKasfyfzU1Kd86oKzw==", - "optional": true, "requires": { "clone": "^1.0.2", "deep-eql": "^0.1.3", @@ -27992,7 +171,6 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", - "devOptional": true, "requires": { "@babel/highlight": "^7.14.5" } @@ -28000,14 +178,13 @@ "@babel/compat-data": { "version": "7.15.0", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", - "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", - "devOptional": true + "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==" }, "@babel/core": { "version": "7.15.5", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz", "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==", - "devOptional": true, + "optional": true, "requires": { "@babel/code-frame": "^7.14.5", "@babel/generator": "^7.15.4", @@ -28030,13 +207,13 @@ "version": "7.15.6", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.6.tgz", "integrity": "sha512-S/TSCcsRuCkmpUuoWijua0Snt+f3ewU/8spLo+4AXJCZfT0bVCzLD5MuOKdrx0mlAptbKzn5AdgEIIKXxXkz9Q==", - "devOptional": true + "optional": true }, "@babel/traverse": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "devOptional": true, + "optional": true, "requires": { "@babel/code-frame": "^7.14.5", "@babel/generator": "^7.15.4", @@ -28053,7 +230,7 @@ "version": "7.15.6", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "devOptional": true, + "optional": true, "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -28063,7 +240,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "devOptional": true, + "optional": true, "requires": { "minimist": "^1.2.5" } @@ -28072,13 +249,13 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "devOptional": true + "optional": true }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "devOptional": true + "optional": true } } }, @@ -28086,7 +263,6 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz", "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==", - "devOptional": true, "requires": { "@babel/types": "^7.15.4", "jsesc": "^2.5.1", @@ -28097,7 +273,6 @@ "version": "7.15.6", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "devOptional": true, "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -28106,8 +281,7 @@ "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "devOptional": true + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" } } }, @@ -28136,7 +310,6 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", - "devOptional": true, "requires": { "@babel/compat-data": "^7.15.0", "@babel/helper-validator-option": "^7.14.5", @@ -28147,8 +320,7 @@ "semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "devOptional": true + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" } } }, @@ -28227,7 +399,6 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", - "devOptional": true, "requires": { "@babel/helper-get-function-arity": "^7.15.4", "@babel/template": "^7.15.4", @@ -28238,7 +409,6 @@ "version": "7.15.6", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "devOptional": true, "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -28250,7 +420,6 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", - "devOptional": true, "requires": { "@babel/types": "^7.15.4" }, @@ -28259,7 +428,6 @@ "version": "7.15.6", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "devOptional": true, "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -28271,7 +439,6 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", - "devOptional": true, "requires": { "@babel/types": "^7.15.4" }, @@ -28280,7 +447,6 @@ "version": "7.15.6", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "devOptional": true, "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -28292,7 +458,7 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", - "devOptional": true, + "optional": true, "requires": { "@babel/types": "^7.15.4" }, @@ -28301,7 +467,7 @@ "version": "7.15.6", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "devOptional": true, + "optional": true, "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -28313,7 +479,6 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", - "devOptional": true, "requires": { "@babel/types": "^7.15.4" }, @@ -28322,7 +487,6 @@ "version": "7.15.6", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "devOptional": true, "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -28334,7 +498,7 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz", "integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==", - "devOptional": true, + "optional": true, "requires": { "@babel/helper-module-imports": "^7.15.4", "@babel/helper-replace-supers": "^7.15.4", @@ -28350,13 +514,13 @@ "version": "7.15.6", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.6.tgz", "integrity": "sha512-S/TSCcsRuCkmpUuoWijua0Snt+f3ewU/8spLo+4AXJCZfT0bVCzLD5MuOKdrx0mlAptbKzn5AdgEIIKXxXkz9Q==", - "devOptional": true + "optional": true }, "@babel/traverse": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "devOptional": true, + "optional": true, "requires": { "@babel/code-frame": "^7.14.5", "@babel/generator": "^7.15.4", @@ -28373,7 +537,7 @@ "version": "7.15.6", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "devOptional": true, + "optional": true, "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -28385,7 +549,7 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", - "devOptional": true, + "optional": true, "requires": { "@babel/types": "^7.15.4" }, @@ -28394,7 +558,7 @@ "version": "7.15.6", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "devOptional": true, + "optional": true, "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -28405,14 +569,13 @@ "@babel/helper-plugin-utils": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz", - "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==", - "devOptional": true + "integrity": "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==" }, "@babel/helper-replace-supers": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", - "devOptional": true, + "optional": true, "requires": { "@babel/helper-member-expression-to-functions": "^7.15.4", "@babel/helper-optimise-call-expression": "^7.15.4", @@ -28424,13 +587,13 @@ "version": "7.15.6", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.6.tgz", "integrity": "sha512-S/TSCcsRuCkmpUuoWijua0Snt+f3ewU/8spLo+4AXJCZfT0bVCzLD5MuOKdrx0mlAptbKzn5AdgEIIKXxXkz9Q==", - "devOptional": true + "optional": true }, "@babel/traverse": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "devOptional": true, + "optional": true, "requires": { "@babel/code-frame": "^7.14.5", "@babel/generator": "^7.15.4", @@ -28447,7 +610,7 @@ "version": "7.15.6", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "devOptional": true, + "optional": true, "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -28459,7 +622,7 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", - "devOptional": true, + "optional": true, "requires": { "@babel/types": "^7.15.4" }, @@ -28468,7 +631,7 @@ "version": "7.15.6", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "devOptional": true, + "optional": true, "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -28501,7 +664,6 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", - "devOptional": true, "requires": { "@babel/types": "^7.15.4" }, @@ -28510,7 +672,6 @@ "version": "7.15.6", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "devOptional": true, "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -28521,20 +682,18 @@ "@babel/helper-validator-identifier": { "version": "7.14.9", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", - "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", - "devOptional": true + "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==" }, "@babel/helper-validator-option": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", - "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", - "devOptional": true + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==" }, "@babel/helpers": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", - "devOptional": true, + "optional": true, "requires": { "@babel/template": "^7.15.4", "@babel/traverse": "^7.15.4", @@ -28545,13 +704,13 @@ "version": "7.15.6", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.6.tgz", "integrity": "sha512-S/TSCcsRuCkmpUuoWijua0Snt+f3ewU/8spLo+4AXJCZfT0bVCzLD5MuOKdrx0mlAptbKzn5AdgEIIKXxXkz9Q==", - "devOptional": true + "optional": true }, "@babel/traverse": { "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", - "devOptional": true, + "optional": true, "requires": { "@babel/code-frame": "^7.14.5", "@babel/generator": "^7.15.4", @@ -28568,7 +727,7 @@ "version": "7.15.6", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "devOptional": true, + "optional": true, "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -28580,7 +739,6 @@ "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "devOptional": true, "requires": { "@babel/helper-validator-identifier": "^7.14.5", "chalk": "^2.0.0", @@ -28895,7 +1053,6 @@ "version": "7.15.4", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", - "devOptional": true, "requires": { "@babel/code-frame": "^7.14.5", "@babel/parser": "^7.15.4", @@ -28905,14 +1062,12 @@ "@babel/parser": { "version": "7.15.6", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.6.tgz", - "integrity": "sha512-S/TSCcsRuCkmpUuoWijua0Snt+f3ewU/8spLo+4AXJCZfT0bVCzLD5MuOKdrx0mlAptbKzn5AdgEIIKXxXkz9Q==", - "devOptional": true + "integrity": "sha512-S/TSCcsRuCkmpUuoWijua0Snt+f3ewU/8spLo+4AXJCZfT0bVCzLD5MuOKdrx0mlAptbKzn5AdgEIIKXxXkz9Q==" }, "@babel/types": { "version": "7.15.6", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", - "devOptional": true, "requires": { "@babel/helper-validator-identifier": "^7.14.9", "to-fast-properties": "^2.0.0" @@ -29359,8 +1514,7 @@ "ws": { "version": "7.4.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "requires": {} + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==" } } }, @@ -30752,8 +2906,7 @@ "version": "7.4.5", "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.5.tgz", "integrity": "sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g==", - "optional": true, - "requires": {} + "optional": true } } }, @@ -30848,8 +3001,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.1.0.tgz", "integrity": "sha512-wYn6r8zVZyQJ6rQaALBEln5B1pzxb9shV5Ef97kTvn6yVGrqyXVnDqnU24MXnFubR+rZjBY9NWuxX3FB2sTsjg==", - "optional": true, - "requires": {} + "optional": true }, "@gulp-sourcemaps/map-sources": { "version": "1.0.0", @@ -31469,8 +3621,7 @@ "version": "7.5.5", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", - "optional": true, - "requires": {} + "optional": true } } }, @@ -32288,8 +4439,7 @@ "version": "7.5.5", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", - "optional": true, - "requires": {} + "optional": true } } }, @@ -32803,7 +4953,6 @@ "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.5.tgz", "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==", - "optional": true, "requires": { "@types/node": "*" } @@ -32820,7 +4969,6 @@ "version": "1.19.1", "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.1.tgz", "integrity": "sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg==", - "optional": true, "requires": { "@types/connect": "*", "@types/node": "*" @@ -32839,7 +4987,6 @@ "version": "3.4.35", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", - "optional": true, "requires": { "@types/node": "*" } @@ -32847,14 +4994,12 @@ "@types/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-0mPF08jn9zYI0n0Q/Pnz7C4kThdSt+6LD4amsrYDDpgBfrVWa3TcCOxKX1zkGgYniGagRv8heN2cbh+CAn+uuQ==", - "optional": true + "integrity": "sha512-0mPF08jn9zYI0n0Q/Pnz7C4kThdSt+6LD4amsrYDDpgBfrVWa3TcCOxKX1zkGgYniGagRv8heN2cbh+CAn+uuQ==" }, "@types/cookies": { "version": "0.7.7", "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.7.tgz", "integrity": "sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==", - "optional": true, "requires": { "@types/connect": "*", "@types/express": "*", @@ -32889,7 +5034,6 @@ "version": "4.17.13", "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", - "optional": true, "requires": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.18", @@ -32901,7 +5045,6 @@ "version": "4.17.24", "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.24.tgz", "integrity": "sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA==", - "optional": true, "requires": { "@types/node": "*", "@types/qs": "*", @@ -32935,14 +5078,12 @@ "@types/http-assert": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz", - "integrity": "sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA==", - "optional": true + "integrity": "sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA==" }, "@types/http-errors": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-e+2rjEwK6KDaNOm5Aa9wNGgyS9oSZU/4pfSMMPYNOfjvFI0WVXm29+ITRFr6aKDvvKo7uU1jV68MW4ScsfDi7Q==", - "optional": true + "integrity": "sha512-e+2rjEwK6KDaNOm5Aa9wNGgyS9oSZU/4pfSMMPYNOfjvFI0WVXm29+ITRFr6aKDvvKo7uU1jV68MW4ScsfDi7Q==" }, "@types/json-schema": { "version": "7.0.9", @@ -32953,14 +5094,12 @@ "@types/keygrip": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.2.tgz", - "integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==", - "optional": true + "integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==" }, "@types/koa": { "version": "2.13.4", "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.4.tgz", "integrity": "sha512-dfHYMfU+z/vKtQB7NUrthdAEiSvnLebvBjwHtfFmpZmB7em2N3WVQdHgnFq+xvyVgxW5jKDmjWfLD3lw4g4uTw==", - "optional": true, "requires": { "@types/accepts": "*", "@types/content-disposition": "*", @@ -32976,7 +5115,6 @@ "version": "3.2.5", "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.5.tgz", "integrity": "sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==", - "optional": true, "requires": { "@types/koa": "*" } @@ -32990,8 +5128,7 @@ "@types/mime": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "optional": true + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" }, "@types/node": { "version": "12.20.25", @@ -33009,14 +5146,12 @@ "@types/qs": { "version": "6.9.7", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "devOptional": true + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" }, "@types/range-parser": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", - "optional": true + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" }, "@types/secp256k1": { "version": "4.0.3", @@ -33030,7 +5165,6 @@ "version": "1.13.10", "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", - "optional": true, "requires": { "@types/mime": "^1", "@types/node": "*" @@ -33106,7 +5240,6 @@ }, "@zondax/filecoin-signing-tools": { "version": "git+ssh://git@github.com/Digital-MOB-Filecoin/filecoin-signing-tools-js.git#8f8e92157cac2556d35cab866779e9a8ea8a4e25", - "integrity": "sha512-u1sHMBQXGiGHv8S3LkdKs0mH1erEbD4QoHWwCZns0BuQaKlpxbdxN8ikHCQOBPT6FzSHadwhf3cTSWxVl3DGig==", "from": "@zondax/filecoin-signing-tools@github:Digital-MOB-Filecoin/filecoin-signing-tools-js", "optional": true, "requires": { @@ -33250,7 +5383,6 @@ "version": "2.7.2", "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-2.7.2.tgz", "integrity": "sha512-+OVvxH2rHVEhWLdbudP6p0+dNMXu8JA1CbhP19T8paTYAcX7oJ4OVjT+ZUVpv7mITxXHqDMej+GdqXBmXkw09w==", - "devOptional": true, "requires": { "xtend": "~4.0.0" } @@ -33313,8 +5445,7 @@ "ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "requires": {} + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" }, "align-text": { "version": "0.1.4", @@ -33391,8 +5522,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/native-abort-controller/-/native-abort-controller-1.0.3.tgz", "integrity": "sha512-fd5LY5q06mHKZPD5FmMrn7Lkd2H018oBGKNOAdLpctBDEPFKsfJ1nX9ke+XRa8PEJJpjqrpQkGjq2IZ27QNmYA==", - "optional": true, - "requires": {} + "optional": true } } }, @@ -33624,8 +5754,7 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-2.5.0.tgz", "integrity": "sha512-lO5oTjgiC3vlVg2RKr3RiXIIQ5pGXBFxYGGUkKDhTud3jMIhs+gel8L8zsEjKaKxkjHhCQAA/bcEfYiKkGQIvA==", - "optional": true, - "requires": {} + "optional": true }, "apollo-server-express": { "version": "2.25.2", @@ -33869,8 +5998,7 @@ "asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", - "devOptional": true + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" }, "asn1": { "version": "0.2.4", @@ -34473,7 +6601,6 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "devOptional": true, "requires": { "file-uri-to-path": "1.0.0" } @@ -34777,7 +6904,6 @@ "version": "4.17.1", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.1.tgz", "integrity": "sha512-aLD0ZMDSnF4lUt4ZDNgqi5BUn9BZ7YdQdI/cYlILrhdSSZJLU9aNZoD5/NBmM4SK34APB2e83MOsRt1EnkuyaQ==", - "devOptional": true, "requires": { "caniuse-lite": "^1.0.30001259", "electron-to-chromium": "^1.3.846", @@ -34972,8 +7098,7 @@ "caniuse-lite": { "version": "1.0.30001261", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001261.tgz", - "integrity": "sha512-vM8D9Uvp7bHIN0fZ2KQ4wnmYFpJo/Etb4Vwsuc+ka0tfGDHvOPrFm6S/7CCNLSOkAUjenT2HnUPESdOIL91FaA==", - "devOptional": true + "integrity": "sha512-vM8D9Uvp7bHIN0fZ2KQ4wnmYFpJo/Etb4Vwsuc+ka0tfGDHvOPrFm6S/7CCNLSOkAUjenT2HnUPESdOIL91FaA==" }, "caseless": { "version": "0.12.0", @@ -35033,8 +7158,7 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/chai-bn/-/chai-bn-0.2.2.tgz", "integrity": "sha512-MzjelH0p8vWn65QKmEq/DLBG1Hle4WeyqT79ANhXZhn/UxRWO0OogkAxi5oGGtfzwU9bZR8mvbvYdoqNVWQwFg==", - "dev": true, - "requires": {} + "dev": true }, "chalk": { "version": "2.4.2", @@ -35373,8 +7497,7 @@ "clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "optional": true + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" }, "clone-buffer": { "version": "1.0.0", @@ -35576,7 +7699,7 @@ "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "devOptional": true, + "optional": true, "requires": { "safe-buffer": "~5.1.1" } @@ -35912,7 +8035,6 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", - "optional": true, "requires": { "type-detect": "0.1.1" } @@ -36032,8 +8154,7 @@ "delay": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", - "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==", - "devOptional": true + "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==" }, "delayed-stream": { "version": "1.0.0", @@ -36342,8 +8463,7 @@ "electron-to-chromium": { "version": "1.3.853", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.853.tgz", - "integrity": "sha512-W4U8n+U8I5/SUaFcqZgbKRmYZwcyEIQVBDf+j5QQK6xChjXnQD+wj248eGR9X4u+dDmDR//8vIfbu4PrdBBIoQ==", - "devOptional": true + "integrity": "sha512-W4U8n+U8I5/SUaFcqZgbKRmYZwcyEIQVBDf+j5QQK6xChjXnQD+wj248eGR9X4u+dDmDR//8vIfbu4PrdBBIoQ==" }, "elliptic": { "version": "6.5.4", @@ -36392,7 +8512,6 @@ "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "devOptional": true, "requires": { "iconv-lite": "^0.6.2" }, @@ -36401,7 +8520,6 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "devOptional": true, "requires": { "safer-buffer": ">= 2.1.2 < 3.0.0" } @@ -36637,8 +8755,7 @@ "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "devOptional": true + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" }, "escape-html": { "version": "1.0.3", @@ -37913,7 +10030,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "optional": true, "requires": { "homedir-polyfill": "^1.0.1" } @@ -38232,8 +10348,7 @@ "file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "devOptional": true + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" }, "filecoin.js": { "version": "0.0.5-alpha", @@ -38244,7 +10359,7 @@ "@ledgerhq/hw-transport-webusb": "^5.22.0", "@nodefactory/filsnap-adapter": "^0.2.1", "@nodefactory/filsnap-types": "^0.2.1", - "@zondax/filecoin-signing-tools": "github:Digital-MOB-Filecoin/filecoin-signing-tools-js", + "@zondax/filecoin-signing-tools": "@zondax/filecoin-signing-tools@github:Digital-MOB-Filecoin/filecoin-signing-tools-js", "bignumber.js": "^9.0.0", "bitcore-lib": "^8.22.2", "bitcore-mnemonic": "^8.22.2", @@ -38270,8 +10385,7 @@ "version": "7.5.5", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", - "optional": true, - "requires": {} + "optional": true } } }, @@ -38350,8 +10464,7 @@ "follow-redirects": { "version": "1.14.4", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz", - "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==", - "devOptional": true + "integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==" }, "for-each": { "version": "0.3.3", @@ -38485,8 +10598,7 @@ "functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "devOptional": true + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" }, "ganache-cli": { "version": "6.12.2", @@ -38501,20 +10613,17 @@ "@types/bn.js": { "version": "4.11.6", "bundled": true, - "devOptional": true, "requires": { "@types/node": "*" } }, "@types/node": { "version": "14.11.2", - "bundled": true, - "devOptional": true + "bundled": true }, "@types/pbkdf2": { "version": "3.1.0", "bundled": true, - "devOptional": true, "requires": { "@types/node": "*" } @@ -38522,20 +10631,17 @@ "@types/secp256k1": { "version": "4.0.1", "bundled": true, - "devOptional": true, "requires": { "@types/node": "*" } }, "ansi-regex": { "version": "4.1.0", - "bundled": true, - "devOptional": true + "bundled": true }, "ansi-styles": { "version": "3.2.1", "bundled": true, - "devOptional": true, "requires": { "color-convert": "^1.9.0" } @@ -38543,30 +10649,25 @@ "base-x": { "version": "3.0.8", "bundled": true, - "devOptional": true, "requires": { "safe-buffer": "^5.0.1" } }, "blakejs": { "version": "1.1.0", - "bundled": true, - "devOptional": true + "bundled": true }, "bn.js": { "version": "4.11.9", - "bundled": true, - "devOptional": true + "bundled": true }, "brorand": { "version": "1.1.0", - "bundled": true, - "devOptional": true + "bundled": true }, "browserify-aes": { "version": "1.2.0", "bundled": true, - "devOptional": true, "requires": { "buffer-xor": "^1.0.3", "cipher-base": "^1.0.0", @@ -38579,7 +10680,6 @@ "bs58": { "version": "4.0.1", "bundled": true, - "devOptional": true, "requires": { "base-x": "^3.0.2" } @@ -38587,7 +10687,6 @@ "bs58check": { "version": "2.1.2", "bundled": true, - "devOptional": true, "requires": { "bs58": "^4.0.0", "create-hash": "^1.1.0", @@ -38596,23 +10695,19 @@ }, "buffer-from": { "version": "1.1.1", - "bundled": true, - "devOptional": true + "bundled": true }, "buffer-xor": { "version": "1.0.3", - "bundled": true, - "devOptional": true + "bundled": true }, "camelcase": { "version": "5.3.1", - "bundled": true, - "devOptional": true + "bundled": true }, "cipher-base": { "version": "1.0.4", "bundled": true, - "devOptional": true, "requires": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -38621,7 +10716,6 @@ "cliui": { "version": "5.0.0", "bundled": true, - "devOptional": true, "requires": { "string-width": "^3.1.0", "strip-ansi": "^5.2.0", @@ -38631,20 +10725,17 @@ "color-convert": { "version": "1.9.3", "bundled": true, - "devOptional": true, "requires": { "color-name": "1.1.3" } }, "color-name": { "version": "1.1.3", - "bundled": true, - "devOptional": true + "bundled": true }, "create-hash": { "version": "1.2.0", "bundled": true, - "devOptional": true, "requires": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", @@ -38656,7 +10747,6 @@ "create-hmac": { "version": "1.1.7", "bundled": true, - "devOptional": true, "requires": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", @@ -38669,7 +10759,6 @@ "cross-spawn": { "version": "6.0.5", "bundled": true, - "devOptional": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -38680,13 +10769,11 @@ }, "decamelize": { "version": "1.2.0", - "bundled": true, - "devOptional": true + "bundled": true }, "elliptic": { "version": "6.5.3", "bundled": true, - "devOptional": true, "requires": { "bn.js": "^4.4.0", "brorand": "^1.0.1", @@ -38699,13 +10786,11 @@ }, "emoji-regex": { "version": "7.0.3", - "bundled": true, - "devOptional": true + "bundled": true }, "end-of-stream": { "version": "1.4.4", "bundled": true, - "devOptional": true, "requires": { "once": "^1.4.0" } @@ -38713,7 +10798,6 @@ "ethereum-cryptography": { "version": "0.1.3", "bundled": true, - "devOptional": true, "requires": { "@types/pbkdf2": "^3.0.0", "@types/secp256k1": "^4.0.1", @@ -38735,7 +10819,6 @@ "ethereumjs-util": { "version": "6.2.1", "bundled": true, - "devOptional": true, "requires": { "@types/bn.js": "^4.11.3", "bn.js": "^4.11.0", @@ -38749,7 +10832,6 @@ "ethjs-util": { "version": "0.1.6", "bundled": true, - "devOptional": true, "requires": { "is-hex-prefixed": "1.0.0", "strip-hex-prefix": "1.0.0" @@ -38758,7 +10840,6 @@ "evp_bytestokey": { "version": "1.0.3", "bundled": true, - "devOptional": true, "requires": { "md5.js": "^1.3.4", "safe-buffer": "^5.1.1" @@ -38767,7 +10848,6 @@ "execa": { "version": "1.0.0", "bundled": true, - "devOptional": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", @@ -38781,20 +10861,17 @@ "find-up": { "version": "3.0.0", "bundled": true, - "devOptional": true, "requires": { "locate-path": "^3.0.0" } }, "get-caller-file": { "version": "2.0.5", - "bundled": true, - "devOptional": true + "bundled": true }, "get-stream": { "version": "4.1.0", "bundled": true, - "devOptional": true, "requires": { "pump": "^3.0.0" } @@ -38802,7 +10879,6 @@ "hash-base": { "version": "3.1.0", "bundled": true, - "devOptional": true, "requires": { "inherits": "^2.0.4", "readable-stream": "^3.6.0", @@ -38812,7 +10888,6 @@ "hash.js": { "version": "1.1.7", "bundled": true, - "devOptional": true, "requires": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" @@ -38821,7 +10896,6 @@ "hmac-drbg": { "version": "1.0.1", "bundled": true, - "devOptional": true, "requires": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", @@ -38830,38 +10904,31 @@ }, "inherits": { "version": "2.0.4", - "bundled": true, - "devOptional": true + "bundled": true }, "invert-kv": { "version": "2.0.0", - "bundled": true, - "devOptional": true + "bundled": true }, "is-fullwidth-code-point": { "version": "2.0.0", - "bundled": true, - "devOptional": true + "bundled": true }, "is-hex-prefixed": { "version": "1.0.0", - "bundled": true, - "devOptional": true + "bundled": true }, "is-stream": { "version": "1.1.0", - "bundled": true, - "devOptional": true + "bundled": true }, "isexe": { "version": "2.0.0", - "bundled": true, - "devOptional": true + "bundled": true }, "keccak": { "version": "3.0.1", "bundled": true, - "devOptional": true, "requires": { "node-addon-api": "^2.0.0", "node-gyp-build": "^4.2.0" @@ -38870,7 +10937,6 @@ "lcid": { "version": "2.0.0", "bundled": true, - "devOptional": true, "requires": { "invert-kv": "^2.0.0" } @@ -38878,7 +10944,6 @@ "locate-path": { "version": "3.0.0", "bundled": true, - "devOptional": true, "requires": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" @@ -38887,7 +10952,6 @@ "map-age-cleaner": { "version": "0.1.3", "bundled": true, - "devOptional": true, "requires": { "p-defer": "^1.0.0" } @@ -38895,7 +10959,6 @@ "md5.js": { "version": "1.3.5", "bundled": true, - "devOptional": true, "requires": { "hash-base": "^3.0.0", "inherits": "^2.0.1", @@ -38905,7 +10968,6 @@ "mem": { "version": "4.3.0", "bundled": true, - "devOptional": true, "requires": { "map-age-cleaner": "^0.1.1", "mimic-fn": "^2.0.0", @@ -38914,38 +10976,31 @@ }, "mimic-fn": { "version": "2.1.0", - "bundled": true, - "devOptional": true + "bundled": true }, "minimalistic-assert": { "version": "1.0.1", - "bundled": true, - "devOptional": true + "bundled": true }, "minimalistic-crypto-utils": { "version": "1.0.1", - "bundled": true, - "devOptional": true + "bundled": true }, "nice-try": { "version": "1.0.5", - "bundled": true, - "devOptional": true + "bundled": true }, "node-addon-api": { "version": "2.0.2", - "bundled": true, - "devOptional": true + "bundled": true }, "node-gyp-build": { "version": "4.2.3", - "bundled": true, - "devOptional": true + "bundled": true }, "npm-run-path": { "version": "2.0.2", "bundled": true, - "devOptional": true, "requires": { "path-key": "^2.0.0" } @@ -38953,7 +11008,6 @@ "once": { "version": "1.4.0", "bundled": true, - "devOptional": true, "requires": { "wrappy": "1" } @@ -38961,7 +11015,6 @@ "os-locale": { "version": "3.1.0", "bundled": true, - "devOptional": true, "requires": { "execa": "^1.0.0", "lcid": "^2.0.0", @@ -38970,23 +11023,19 @@ }, "p-defer": { "version": "1.0.0", - "bundled": true, - "devOptional": true + "bundled": true }, "p-finally": { "version": "1.0.0", - "bundled": true, - "devOptional": true + "bundled": true }, "p-is-promise": { "version": "2.1.0", - "bundled": true, - "devOptional": true + "bundled": true }, "p-limit": { "version": "2.3.0", "bundled": true, - "devOptional": true, "requires": { "p-try": "^2.0.0" } @@ -38994,30 +11043,25 @@ "p-locate": { "version": "3.0.0", "bundled": true, - "devOptional": true, "requires": { "p-limit": "^2.0.0" } }, "p-try": { "version": "2.2.0", - "bundled": true, - "devOptional": true + "bundled": true }, "path-exists": { "version": "3.0.0", - "bundled": true, - "devOptional": true + "bundled": true }, "path-key": { "version": "2.0.1", - "bundled": true, - "devOptional": true + "bundled": true }, "pbkdf2": { "version": "3.1.1", "bundled": true, - "devOptional": true, "requires": { "create-hash": "^1.1.2", "create-hmac": "^1.1.4", @@ -39029,7 +11073,6 @@ "pump": { "version": "3.0.0", "bundled": true, - "devOptional": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -39038,7 +11081,6 @@ "randombytes": { "version": "2.1.0", "bundled": true, - "devOptional": true, "requires": { "safe-buffer": "^5.1.0" } @@ -39046,7 +11088,6 @@ "readable-stream": { "version": "3.6.0", "bundled": true, - "devOptional": true, "requires": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -39055,18 +11096,15 @@ }, "require-directory": { "version": "2.1.1", - "bundled": true, - "devOptional": true + "bundled": true }, "require-main-filename": { "version": "2.0.0", - "bundled": true, - "devOptional": true + "bundled": true }, "ripemd160": { "version": "2.0.2", "bundled": true, - "devOptional": true, "requires": { "hash-base": "^3.0.0", "inherits": "^2.0.1" @@ -39075,25 +11113,21 @@ "rlp": { "version": "2.2.6", "bundled": true, - "devOptional": true, "requires": { "bn.js": "^4.11.1" } }, "safe-buffer": { "version": "5.2.1", - "bundled": true, - "devOptional": true + "bundled": true }, "scrypt-js": { "version": "3.0.1", - "bundled": true, - "devOptional": true + "bundled": true }, "secp256k1": { "version": "4.0.2", "bundled": true, - "devOptional": true, "requires": { "elliptic": "^6.5.2", "node-addon-api": "^2.0.0", @@ -39102,23 +11136,19 @@ }, "semver": { "version": "5.7.1", - "bundled": true, - "devOptional": true + "bundled": true }, "set-blocking": { "version": "2.0.0", - "bundled": true, - "devOptional": true + "bundled": true }, "setimmediate": { "version": "1.0.5", - "bundled": true, - "devOptional": true + "bundled": true }, "sha.js": { "version": "2.4.11", "bundled": true, - "devOptional": true, "requires": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -39127,96 +11157,82 @@ "shebang-command": { "version": "1.2.0", "bundled": true, - "devOptional": true, "requires": { "shebang-regex": "^1.0.0" } }, "shebang-regex": { "version": "1.0.0", - "bundled": true, - "devOptional": true + "bundled": true }, "signal-exit": { "version": "3.0.3", - "bundled": true, - "devOptional": true + "bundled": true }, "source-map": { "version": "0.6.1", - "bundled": true, - "devOptional": true + "bundled": true }, "source-map-support": { "version": "0.5.12", "bundled": true, - "devOptional": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, - "string_decoder": { - "version": "1.3.0", - "bundled": true, - "devOptional": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, "string-width": { "version": "3.1.0", "bundled": true, - "devOptional": true, "requires": { "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^5.1.0" } }, + "string_decoder": { + "version": "1.3.0", + "bundled": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, "strip-ansi": { "version": "5.2.0", "bundled": true, - "devOptional": true, "requires": { "ansi-regex": "^4.1.0" } }, "strip-eof": { "version": "1.0.0", - "bundled": true, - "devOptional": true + "bundled": true }, "strip-hex-prefix": { "version": "1.0.0", "bundled": true, - "devOptional": true, "requires": { "is-hex-prefixed": "1.0.0" } }, "util-deprecate": { "version": "1.0.2", - "bundled": true, - "devOptional": true + "bundled": true }, "which": { "version": "1.3.1", "bundled": true, - "devOptional": true, "requires": { "isexe": "^2.0.0" } }, "which-module": { "version": "2.0.0", - "bundled": true, - "devOptional": true + "bundled": true }, "wrap-ansi": { "version": "5.1.0", "bundled": true, - "devOptional": true, "requires": { "ansi-styles": "^3.2.0", "string-width": "^3.0.0", @@ -39225,18 +11241,15 @@ }, "wrappy": { "version": "1.0.2", - "bundled": true, - "devOptional": true + "bundled": true }, "y18n": { "version": "4.0.0", - "bundled": true, - "devOptional": true + "bundled": true }, "yargs": { "version": "13.2.4", "bundled": true, - "devOptional": true, "requires": { "cliui": "^5.0.0", "find-up": "^3.0.0", @@ -39254,7 +11267,6 @@ "yargs-parser": { "version": "13.1.2", "bundled": true, - "devOptional": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" @@ -39299,7 +11311,7 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "devOptional": true + "optional": true }, "get-caller-file": { "version": "1.0.3", @@ -39509,7 +11521,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "optional": true, "requires": { "global-prefix": "^1.0.1", "is-windows": "^1.0.1", @@ -39520,7 +11531,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "optional": true, "requires": { "expand-tilde": "^2.0.2", "homedir-polyfill": "^1.0.1", @@ -39532,8 +11542,7 @@ "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "devOptional": true + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, "globalthis": { "version": "1.0.2", @@ -39671,8 +11680,7 @@ "version": "4.9.0", "resolved": "https://registry.npmjs.org/graphql-ws/-/graphql-ws-4.9.0.tgz", "integrity": "sha512-sHkK9+lUm20/BGawNEWNtVAeJzhZeBg21VmvmLoT5NdGVeZWv5PdIhkcayQIAgjSyyQ17WMKmbDijIPG2On+Ag==", - "optional": true, - "requires": {} + "optional": true }, "growl": { "version": "1.10.5", @@ -39910,7 +11918,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", - "optional": true, "requires": { "parse-passwd": "^1.0.0" } @@ -40223,8 +12230,7 @@ "immediate": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", - "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==", - "devOptional": true + "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==" }, "immutable": { "version": "3.7.6", @@ -40264,8 +12270,7 @@ "ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "optional": true + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "internal-slot": { "version": "1.0.3", @@ -41492,8 +13497,7 @@ "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "optional": true + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" }, "isarray": { "version": "1.0.0", @@ -41540,8 +13544,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", - "optional": true, - "requires": {} + "optional": true }, "isstream": { "version": "0.1.2", @@ -41741,8 +13744,7 @@ "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "devOptional": true + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" }, "json-buffer": { "version": "3.0.0", @@ -41908,7 +13910,6 @@ "version": "1.10.2", "resolved": "https://registry.npmjs.org/keypather/-/keypather-1.10.2.tgz", "integrity": "sha1-4ESWMtSz5RbyHMAUznxWRP3c5hQ=", - "optional": true, "requires": { "101": "^1.0.0" } @@ -41946,8 +13947,7 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/lazy-debug-legacy/-/lazy-debug-legacy-0.0.1.tgz", "integrity": "sha1-U3cWwHduTPeePtG2IfdljCkRsbE=", - "optional": true, - "requires": {} + "optional": true }, "lazystream": { "version": "1.0.0", @@ -42579,8 +14579,7 @@ "ltgt": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", - "integrity": "sha1-81ypHEk/e3PaDgdJUwTxezH4fuU=", - "devOptional": true + "integrity": "sha1-81ypHEk/e3PaDgdJUwTxezH4fuU=" }, "make-dir": { "version": "1.3.0", @@ -42656,7 +14655,6 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/memdown/-/memdown-1.4.1.tgz", "integrity": "sha1-tOThkhdGZP+65BNhqlAPMRnv4hU=", - "devOptional": true, "requires": { "abstract-leveldown": "~2.7.1", "functional-red-black-tree": "^1.0.1", @@ -42949,8 +14947,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/meros/-/meros-1.1.4.tgz", "integrity": "sha512-E9ZXfK9iQfG9s73ars9qvvvbSIkJZF5yOo9j4tcwM5tN8mUKfj/EKN5PzOr3ZH0y5wL7dLAHw3RVEfpQV9Q7VQ==", - "optional": true, - "requires": {} + "optional": true }, "methods": { "version": "1.1.2", @@ -43828,8 +15825,7 @@ "nan": { "version": "2.15.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz", - "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==", - "devOptional": true + "integrity": "sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ==" }, "nano-base32": { "version": "1.0.1", @@ -43844,8 +15840,7 @@ "nanocolors": { "version": "0.1.12", "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.1.12.tgz", - "integrity": "sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ==", - "devOptional": true + "integrity": "sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ==" }, "nanoid": { "version": "2.1.11", @@ -43929,8 +15924,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/native-fetch/-/native-fetch-3.0.0.tgz", "integrity": "sha512-G3Z7vx0IFb/FQ4JxvtqGABsOTIqRWvgQz6e+erkB+JJD6LrszQtMozEHI4EkmgZQvnGHrpLVzUWk7t4sJCIkVw==", - "optional": true, - "requires": {} + "optional": true }, "needle": { "version": "2.9.1", @@ -44169,8 +16163,7 @@ "node-releases": { "version": "1.1.76", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.76.tgz", - "integrity": "sha512-9/IECtNr8dXNmPWmFXepT0/7o5eolGesHUa3mtr0KlgnCvnZxwh2qensKL42JJY2vQKC3nIBXetFAqR+PW1CmA==", - "devOptional": true + "integrity": "sha512-9/IECtNr8dXNmPWmFXepT0/7o5eolGesHUa3mtr0KlgnCvnZxwh2qensKL42JJY2vQKC3nIBXetFAqR+PW1CmA==" }, "nofilter": { "version": "1.0.4", @@ -44385,7 +16378,6 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", - "devOptional": true, "requires": { "call-bind": "^1.0.2", "define-properties": "^1.1.3", @@ -44565,8 +16557,7 @@ "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "devOptional": true + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, "osenv": { "version": "0.1.5", @@ -44724,8 +16715,7 @@ "parse-passwd": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", - "optional": true + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" }, "parse5": { "version": "6.0.1", @@ -44974,8 +16964,7 @@ "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "devOptional": true + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" }, "pinkie": { "version": "2.0.4", @@ -46662,7 +18651,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "optional": true, "requires": { "expand-tilde": "^2.0.0", "global-modules": "^1.0.0" @@ -47342,8 +19330,7 @@ "ws": { "version": "7.5.5", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", - "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", - "requires": {} + "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==" } } }, @@ -47408,9 +19395,9 @@ } }, "solc-0.8": { - "version": "npm:solc@0.8.9", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.8.9.tgz", - "integrity": "sha512-dD8tQgGCrdWQPpbDTbQF048S3JAcpytOax2r5qPgQluKJPCRFT6c/fec0ZkbrRwRSeYT/qiKz0OKBDOinnGeWw==", + "version": "npm:solc@0.8.10", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.8.10.tgz", + "integrity": "sha512-I/Mcn6J5bEtJqveNLplQm9IRrhemm6v+qkw5S2+wM4x9HItJ1sYdrqVTN3j4DMhFDM3ZbvM0QywVzpPx666PHw==", "dev": true, "requires": { "command-exists": "^1.2.8", @@ -47473,9 +19460,9 @@ "optional": true }, "solidity-docgen": { - "version": "npm:solc@0.8.9", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.8.9.tgz", - "integrity": "sha512-dD8tQgGCrdWQPpbDTbQF048S3JAcpytOax2r5qPgQluKJPCRFT6c/fec0ZkbrRwRSeYT/qiKz0OKBDOinnGeWw==", + "version": "npm:solc@0.8.10", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.8.10.tgz", + "integrity": "sha512-I/Mcn6J5bEtJqveNLplQm9IRrhemm6v+qkw5S2+wM4x9HItJ1sYdrqVTN3j4DMhFDM3ZbvM0QywVzpPx666PHw==", "dev": true, "requires": { "command-exists": "^1.2.8", @@ -47860,21 +19847,6 @@ "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" }, - "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==", - "requires": { - "safe-buffer": "~5.2.0" - }, - "dependencies": { - "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==" - } - } - }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", @@ -47918,6 +19890,21 @@ "define-properties": "^1.1.3" } }, + "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==", + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "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==" + } + } + }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", @@ -47965,8 +19952,7 @@ "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "devOptional": true + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" }, "sublevel-pouchdb": { "version": "7.2.2", @@ -48038,8 +20024,7 @@ "version": "7.5.5", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==", - "optional": true, - "requires": {} + "optional": true } } }, @@ -48465,8 +20450,7 @@ "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "devOptional": true + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" }, "to-json-schema": { "version": "0.2.5", @@ -48658,8 +20642,7 @@ "tweetnacl-util": { "version": "0.15.1", "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", - "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", - "devOptional": true + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==" }, "type": { "version": "1.2.0", @@ -48678,8 +20661,7 @@ "type-detect": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", - "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", - "optional": true + "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=" }, "type-is": { "version": "1.6.18", @@ -48693,8 +20675,7 @@ "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "devOptional": true + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, "typedarray-to-buffer": { "version": "3.1.5", diff --git a/test/mst_faucet.js b/test/mst_faucet.js new file mode 100644 index 0000000..5b67a74 --- /dev/null +++ b/test/mst_faucet.js @@ -0,0 +1,30 @@ +const MST = artifacts.require('MST'); + +contract('MST', accounts => { + let token, network; + let eth = '10'; + const admin = accounts[0]; + const user = accounts[1]; + before(async () => { + token = await MST.deployed(); + network = process.env.NETWORK; + }); + + it('should deploy smart contract', async () => { + if (network == 'development' || network == 'ganache') { + assert(token.address != ''); + } + }); + + it('should be possible to mint for user', async () => { + let userTokenBalanceBefore = await token.balanceOf(user); + let tokensToMint = web3.utils.toWei(web3.utils.toBN(eth)); + assert.equal(userTokenBalanceBefore, 0, 'current user token balance'); + const receipt = await token.MintERC20(user, tokensToMint, { from: user }); + assert.equal(receipt.logs.length, 1, 'triggers one event'); + assert.equal(receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); + assert.equal(receipt.logs[0].address, token.address, 'minted tokens are transferred from'); + let userTokenBalanceAfter = await token.balanceOf(user); + assert.equal(userTokenBalanceAfter.toString(), tokensToMint.toString(), 'admins token balance after mint'); + }); +}); \ No newline at end of file diff --git a/truffle-config.js b/truffle-config.js index 4d1b7e3..ce1a2b1 100644 --- a/truffle-config.js +++ b/truffle-config.js @@ -25,8 +25,8 @@ // const mnemonic = fs.readFileSync(".secret").toString().trim(); // const path = require("path"); -const { projectId, privateKeys, coinmarketcupKey , etherscanApiKey} = require('./secret.json'); -const HDWalletProvider = require('@truffle/hdwallet-provider'); +//const { projectId, privateKeys, coinmarketcupKey , etherscanApiKey} = require('./secret.json'); +//const HDWalletProvider = require('@truffle/hdwallet-provider'); module.exports = { /** * Networks define how you connect to your ethereum client and let you set the @@ -92,8 +92,8 @@ module.exports = { ropsten: { provider: () => new HDWalletProvider(privateKeys, `wss://ropsten.infura.io/ws/v3/${projectId}`), network_id: 3, // Ropsten's id - // gas: 7900000, // Ropsten has a lower block limit than mainnet - // gasLimit: '7999999', + gas: 7900000, // Ropsten has a lower block limit than mainnet + gasLimit: '7999999', gasPrice: '10000000000', websocket: true, confirmations: 2, // # of confs to wait between deployments. (default: 0) @@ -124,9 +124,9 @@ module.exports = { 'truffle-plugin-verify' ], - api_keys: { - etherscan: etherscanApiKey - }, + //api_keys: { + //etherscan: etherscanApiKey + //}, // Configure your compilers compilers: { From 5493467939447ff7d664327d30ed0f86022a0472 Mon Sep 17 00:00:00 2001 From: Bekket Date: Sat, 4 Dec 2021 09:56:54 +0300 Subject: [PATCH 09/38] fix interface ID --- contracts/721/singleton/MetaMarketplace.sol | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/contracts/721/singleton/MetaMarketplace.sol b/contracts/721/singleton/MetaMarketplace.sol index b051f3c..5c67582 100644 --- a/contracts/721/singleton/MetaMarketplace.sol +++ b/contracts/721/singleton/MetaMarketplace.sol @@ -16,7 +16,7 @@ import "../../../node_modules/@openzeppelin/contracts/token/ERC20/extensions/IER /** * @title NFT MetaMarketplace with ERC-165 support * @author JackBekket - * --------------------------------------------------------ORIGINALLY FORKED FROM https://github.com/benber86/nft_royalties_market + * original idea from https://github.com/benber86/nft_royalties_market * @notice Defines a marketplace to bid on and sell NFTs. * each marketplace is a struct tethered to nft-token contract * @@ -76,7 +76,7 @@ contract MetaMarketplace { bytes4 private constant _INTERFACE_ID_MSNFT = 0x780e9d63; bytes4 private constant _INTERFACE_ID_IERC721ENUMERABLE = 0x780e9d63; bytes4 private constant _INTERFACE_ID_IERC721METADATA = 0x5b5e139f; - bytes4 private constant _INTERFACE_ID_IERC721= 0x7aa5391d; // WRONG @todo: add correct interface id to IERC721 + bytes4 private constant _INTERFACE_ID_IERC721= 0x80ac58cd; //bytes4 private constant _INTERFACE_ID_ERC2981 = 0x2a55205a; @@ -134,8 +134,9 @@ contract MetaMarketplace { return success; } if (standard_ == NftType.Common) { - return false; - //revert(""); + (bool success) = IERC721(contract_). + supportsInterface(_INTERFACE_ID_IERC721); + return success; } } From 4073fe3ab0876136fda7ba189e8627a04c47b274 Mon Sep 17 00:00:00 2001 From: Bekket Date: Sat, 4 Dec 2021 10:33:25 +0300 Subject: [PATCH 10/38] pull funds --- contracts/721/singleton/MetaMarketplace.sol | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/contracts/721/singleton/MetaMarketplace.sol b/contracts/721/singleton/MetaMarketplace.sol index 5c67582..33a1786 100644 --- a/contracts/721/singleton/MetaMarketplace.sol +++ b/contracts/721/singleton/MetaMarketplace.sol @@ -292,7 +292,7 @@ contract MetaMarketplace { if (metainfo.activeSellOffers[tokenId].minPrice[currency_] != 0) { require((bid_price_ > metainfo.activeSellOffers[tokenId].minPrice[currency_]), "Sell order at this price or lower exists"); - // TODO: execute purchase if price is lower instead of revert + // @TODO: execute purchase if price is lower instead of revert } @@ -312,6 +312,9 @@ contract MetaMarketplace { } metainfo.buyOffersEscrow[previousBuyOfferOwner][tokenId][currency_] = 0; // zero escrow after refund + // pull bid payment for lock + require(_pullFunds(currency_,msg.sender,bid_price_),"MetaMarketplace: can't pull funds from buyer to contract"); + // Create a new buy offer metainfo.activeBuyOffers[tokenId][currency_].buyer = msg.sender; metainfo.activeBuyOffers[tokenId][currency_].price = bid_price_; @@ -415,7 +418,9 @@ contract MetaMarketplace { return a * c * scale + a * d + b * c + (b * d + scale - 1) / scale; } - /** + + + /** * @dev Determines how ERC20 is stored/forwarded on purchases. Here we take our fee. This function can be tethered to buy tx or can be separate from buy flow. * @notice transferFrom(from_) to this contract and then split payments into treasure_fund fee and send rest of it to_ . Will return false if approved_balance < amount * @param currency_ ERC20 currency. Seller should specify what exactly currency he/she want to out @@ -440,6 +445,17 @@ contract MetaMarketplace { return true; } + + /** + * pull funds from buyer and lock it at contract + * + */ + function _pullFunds(CurrenciesERC20.CurrencyERC20 currency_, address from_, uint256 amount) internal { + IERC20 _currency_token = _currency_contract.get_hardcoded_currency(currency_); + require(_currency_token.transferFrom(from_, address(this), amount), "MetaMarketplace: ERC20: transferFrom buyer to metamarketplace contract failed "); // pull funds + + } + // Unsafe refund function _sendRefund(CurrenciesERC20.CurrencyERC20 currency_, address to_, uint256 amount_) internal { IERC20 _currency_token = _currency_contract.get_hardcoded_currency(currency_); From 8442cb9a28e4d2134a15e4b7c924e330820c9bb0 Mon Sep 17 00:00:00 2001 From: Bekket Date: Sat, 4 Dec 2021 11:21:25 +0300 Subject: [PATCH 11/38] reworked _forwardFunds, pullPayment, processPurchase functions --- contracts/721/singleton/MetaMarketplace.sol | 51 ++++++++++++++------- 1 file changed, 35 insertions(+), 16 deletions(-) diff --git a/contracts/721/singleton/MetaMarketplace.sol b/contracts/721/singleton/MetaMarketplace.sol index 33a1786..0b247ae 100644 --- a/contracts/721/singleton/MetaMarketplace.sol +++ b/contracts/721/singleton/MetaMarketplace.sol @@ -245,8 +245,8 @@ contract MetaMarketplace { */ // Transfer funds (ERC20-currency) to the seller and distribute fees - if(_forwardFunds(currency_,msg.sender,seller,bid_price_) == false) { - delete metainfo.activeBuyOffers[tokenId][currency_]; // if we can't move funds from buyer to seller, then buyer either don't have enough balance nor approved spending this much, so we delete this order + if(_processPurchase(currency_,msg.sender,seller,bid_price_) == false) { + // delete metainfo.activeBuyOffers[tokenId][currency_]; // if we can't move funds from buyer to seller, then buyer either don't have enough balance nor approved spending this much, so we delete this order revert("Approved amount is lesser than (bid_price_) needed to deal"); } @@ -260,7 +260,7 @@ contract MetaMarketplace { // Remove all sell and buy[currency_] offers delete (metainfo.activeSellOffers[tokenId]); // this nft is SOLD, remove all SellOffers // @note: next line will delete offers by specific currency, which help us to avoid situtation when buyer offers made in another currency clog in this contract - delete (metainfo.activeBuyOffers[tokenId][currency_]); // at least it was most successful order from BuyOffers by *this* currency. Orders for buy for other currencies still alive + // delete (metainfo.activeBuyOffers[tokenId][currency_]); // at least it was most successful order from BuyOffers by *this* currency. Orders for buy for other currencies still alive // Broadcast the sale emit Sale( token_contract_, @@ -313,7 +313,7 @@ contract MetaMarketplace { metainfo.buyOffersEscrow[previousBuyOfferOwner][tokenId][currency_] = 0; // zero escrow after refund // pull bid payment for lock - require(_pullFunds(currency_,msg.sender,bid_price_),"MetaMarketplace: can't pull funds from buyer to contract"); + require(_pullFunds(currency_,msg.sender,bid_price_), "MetaMarketplace: can't pull funds from buyer to Marketplace contract"); // Create a new buy offer metainfo.activeBuyOffers[tokenId][currency_].buyer = msg.sender; @@ -386,11 +386,9 @@ contract MetaMarketplace { // Transfer funds to the seller - // Tries to forward funds from buyer to seller and distribute fees - if(_forwardFunds(currency_,currentBuyer,msg.sender,bid_value) == false) { - delete metainfo.activeBuyOffers[tokenId][currency_]; - revert("Bad buy offer"); - } + // Tries to forward funds from this contract (which already has been locked when makeBuyOffer executed) to seller and distribute fees + require(_forwardFunds(currency_, msg.sender, bid_value), "MetaMarketplace: can't forward funds to seller"); + // And transfer nft token to the buyer IERC721 token = IERC721(token_contract_); @@ -421,11 +419,11 @@ contract MetaMarketplace { /** - * @dev Determines how ERC20 is stored/forwarded on purchases. Here we take our fee. This function can be tethered to buy tx or can be separate from buy flow. + * @dev Determines how ERC20 is stored/forwarded on *purchases*. Here we take our fee. This function can be tethered to buy tx or can be separate from buy flow. * @notice transferFrom(from_) to this contract and then split payments into treasure_fund fee and send rest of it to_ . Will return false if approved_balance < amount * @param currency_ ERC20 currency. Seller should specify what exactly currency he/she want to out */ - function _forwardFunds(CurrenciesERC20.CurrencyERC20 currency_, address from_, address to_, uint256 amount) internal returns (bool){ + function _processPurchase(CurrenciesERC20.CurrencyERC20 currency_, address from_, address to_, uint256 amount) internal returns (bool){ IERC20 _currency_token = _currency_contract.get_hardcoded_currency(currency_); uint256 approved_balance = _currency_token.allowance(from_, address(this)); @@ -446,14 +444,35 @@ contract MetaMarketplace { } + /** - * pull funds from buyer and lock it at contract - * - */ - function _pullFunds(CurrenciesERC20.CurrencyERC20 currency_, address from_, uint256 amount) internal { + * @dev Determines how ERC20 is forwarded on *accepting* buy offer. Here we take our fee. + * @notice this function do not pull funds (cause it's already has been pulled from buyer when he/she makes makeBuyOffer) + * @param currency_ ERC20 currency. Seller should specify what exactly currency he/she want to out + * @param to_ seller address + */ + function _forwardFunds(CurrenciesERC20.CurrencyERC20 currency_, address to_, uint256 amount) internal returns(bool) { + IERC20 _currency_token = _currency_contract.get_hardcoded_currency(currency_); - require(_currency_token.transferFrom(from_, address(this), amount), "MetaMarketplace: ERC20: transferFrom buyer to metamarketplace contract failed "); // pull funds + + uint256 scale = 1000; + uint256 fees = calculateFee(amount,scale); + uint256 net_amount = amount - fees; + _currency_token.transfer(to_, net_amount); // forward funds + _currency_token.transfer(_treasure_fund, fees); // collect fees + uint256 r = amount + fees; + emit CalculatedFees(r,fees,amount,_treasure_fund); + return true; + } + /** + * @dev pull funds from buyer to this contract + * @param from_ address of buyer where we make pull from + */ + function _pullFunds(CurrenciesERC20.CurrencyERC20 currency_, address from_, uint256 amount) internal returns(bool) { + IERC20 _currency_token = _currency_contract.get_hardcoded_currency(currency_); + require(_currency_token.transferFrom(from_, address(this), amount), "MetaMarketplace: ERC20: transferFrom buyer to metamarketplace contract failed, check approval "); // pull funds + return true; } // Unsafe refund From 17edffd0ed7c0b27a7419507f4a0dca60312c978 Mon Sep 17 00:00:00 2001 From: Bekket Date: Sat, 4 Dec 2021 11:56:42 +0300 Subject: [PATCH 12/38] fix #96 --- .../721/singleton/TokenSaleSingleton.sol | 28 +++++++------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/contracts/721/singleton/TokenSaleSingleton.sol b/contracts/721/singleton/TokenSaleSingleton.sol index 2200e4e..54e76a3 100644 --- a/contracts/721/singleton/TokenSaleSingleton.sol +++ b/contracts/721/singleton/TokenSaleSingleton.sol @@ -102,17 +102,7 @@ contract TokenSaleSingleton is Context, ReentrancyGuard { - // @todo used to buy tokens for ether (deprecated) - /** - * @dev fallback function ***DO NOT OVERRIDE*** - * Note that other contracts will transfer funds with a base gas stipend - * of 2300, which is not enough to call buyTokens. Consider calling - * buyTokens directly when purchasing tokens from a contract. - - fallback() external payable { - buyTokens(_msgSender()); - } - */ + /** * @return the Master NFT contract. @@ -398,19 +388,21 @@ contract TokenSaleSingleton is Context, ReentrancyGuard { _forwardFunds(currency,master_id_); } - /* - function CloseAndDestroy(address payable _to) public { - require(msg.sender == _wallet, "must be author address"); + + /** + * @dev close Crowdsale for specific master_id + */ + function closeCrowdsale(uint master_id_) public { + require(msg.sender == wallet(master_id_), "Crowdsale: unauthorized closing sale"); for (uint8 i = 0; i <= 4;i++) { IERC20Metadata currency_token = get_currency(CurrenciesERC20.CurrencyERC20(i)); if (currency_token.balanceOf(address(this)) > 0) { - withDrawFunds(CurrenciesERC20.CurrencyERC20(i)); + withDrawFunds(CurrenciesERC20.CurrencyERC20(i),master_id_); } } - selfdestruct(_to); - + delete MSaleInfo[master_id_]; } - */ + /** * Calculate fee (UnSafeMath) -- use it only if it ^0.8.0 From 25ae9516019252befd31867b10dfd9276505d4e1 Mon Sep 17 00:00:00 2001 From: Bekket Date: Mon, 6 Dec 2021 21:48:03 +0300 Subject: [PATCH 13/38] @todo comment fix --- contracts/721/singleton/MSNFT.sol | 2 +- contracts/test_erc20_tokens/MST.sol | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts/721/singleton/MSNFT.sol b/contracts/721/singleton/MSNFT.sol index 1f18052..a4a50a5 100644 --- a/contracts/721/singleton/MSNFT.sol +++ b/contracts/721/singleton/MSNFT.sol @@ -21,7 +21,7 @@ import "../../../node_modules/@openzeppelin/contracts/access/Ownable.sol"; * createMasterCopy, plugSale, buyItem -- external intefaces to be called from factory contract */ contract MSNFT is ERC721Enumerable, Ownable { - // using SafeMath for uint256; + using Counters for Counters.Counter; // Master -- Mastercopy, abstraction diff --git a/contracts/test_erc20_tokens/MST.sol b/contracts/test_erc20_tokens/MST.sol index b4018c3..45e582b 100644 --- a/contracts/test_erc20_tokens/MST.sol +++ b/contracts/test_erc20_tokens/MST.sol @@ -8,7 +8,7 @@ import "./TestTokenERC20.sol"; constructor(string memory name_, string memory symbol_) TestTokenERC20(name_,symbol_) {} /* - TODO: delete the function below before release + @TODO: delete the function below before release LINES 15-17 ARE HERE FOR TESTING PURPOSES ONLY! IT'S IMPORTANT TO REMOVE THEM AFTERWARDS! */ From cfea657c56680731ba2a8c918f461a3336d0b58f Mon Sep 17 00:00:00 2001 From: Bekket Date: Mon, 6 Dec 2021 22:10:53 +0300 Subject: [PATCH 14/38] ugly function to updateAuthorship --- contracts/721/singleton/MSNFT.sol | 42 +++++++++++++++++++------------ 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/contracts/721/singleton/MSNFT.sol b/contracts/721/singleton/MSNFT.sol index a4a50a5..ad453c2 100644 --- a/contracts/721/singleton/MSNFT.sol +++ b/contracts/721/singleton/MSNFT.sol @@ -110,7 +110,7 @@ contract MSNFT is ERC721Enumerable, Ownable { mapping(uint256 => address payable) public authors; // map from author address to masterIds array - mapping(address => uint[]) public author_masterids; // can be used to get all objects created by one author + mapping(address => uint[]) public author_masterids; // can be used to get all objects created by one author. @note -- it contains array of ORIGINALLY created master_ids, if authorship was transfered this array will NOT change // map from itemId to masterId mapping(uint256 => uint256) public ItemToMaster; @@ -153,7 +153,7 @@ contract MSNFT is ERC721Enumerable, Ownable { // ERC721Enumerable._registerInterface(_INTERFACE_ID_IERC721ENUMERABLE); } - // @todo should be changed visibility to external? + //@todo should be changed visibility to external? /** * @dev This function 'plug' itemsale contract from factory to mastersales map (works only for MoonShard NFT, should be called after MasterCopy creation) * @param organizer -- address of seller (author) @@ -262,8 +262,6 @@ contract MSNFT is ERC721Enumerable, Ownable { } - - /** * @dev Mint new token. Require master_id and item_id * @param to whom address should mint @@ -322,6 +320,7 @@ contract MSNFT is ERC721Enumerable, Ownable { Mint(to, m_master_id, item_id,file_order_); } + // @todo -- make external instead of public? /** * @dev external function for buying items, should be invoked from tokensale contract @@ -341,10 +340,31 @@ contract MSNFT is ERC721Enumerable, Ownable { emit ItemBought(buyer,master_id,item_id); emit ItemBoughtHuman(buyer,master_id,item_id); - + } + + + // transfer authorship of mastercopy + function transferAuthorship() public { } + + // update authorship for unique rarity token (setting owner of token to author) + function updateAuthorsip(uint tokenId) public { + + uint _master_id = ItemToMaster[tokenId]; + RarityType rarity_ = get_rarity(_master_id); + if (rarity_ == RarityType.Unique) + { + address owner_ = ownerOf(tokenId); + authors[_master_id] = payable(owner_); + } + + } + + + + // This function is burning tokens. // @deprecated /* @@ -395,8 +415,7 @@ contract MSNFT is ERC721Enumerable, Ownable { } - - /** + /** * @dev get author of master */ function get_author(uint256 _masterId) public view returns (address payable _author) { @@ -433,15 +452,6 @@ contract MSNFT is ERC721Enumerable, Ownable { } - /* - function getTicketStatus(uint item_id) public view returns (TicketState status) { - ItemInfo memory info = itemInfoStorage[item_id]; - status = info.state; - return status; - } - */ - - /** * @dev update factory address. as we deploy separately this contract, then factory contract, then we need to update factory address outside of MSNFT constructor * also, it may be useful if we would need to upgrade tokensale contract (which include upgrade of a factory contract), so it can be used when rollup new versions of factory and sale From 0e23d0f2bef4bafd77f1c902a77ab79b63ca0789 Mon Sep 17 00:00:00 2001 From: Bekket Date: Tue, 7 Dec 2021 00:00:27 +0300 Subject: [PATCH 15/38] deduction royalties --- contracts/721/singleton/MSNFT.sol | 6 +++++ contracts/721/singleton/MetaMarketplace.sol | 27 +++++++++++++++++++-- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/contracts/721/singleton/MSNFT.sol b/contracts/721/singleton/MSNFT.sol index ad453c2..b217041 100644 --- a/contracts/721/singleton/MSNFT.sol +++ b/contracts/721/singleton/MSNFT.sol @@ -434,6 +434,12 @@ contract MSNFT is ERC721Enumerable, Ownable { return author_; } + function get_author_by_token_id(uint256 item_id) public view returns (address author_) { + uint _master_id = ItemToMaster[tokenId]; + author_ = authors[_master_id]; + return author; + } + /** * @dev get masterIds array for specific author address */ diff --git a/contracts/721/singleton/MetaMarketplace.sol b/contracts/721/singleton/MetaMarketplace.sol index 0b247ae..30322f0 100644 --- a/contracts/721/singleton/MetaMarketplace.sol +++ b/contracts/721/singleton/MetaMarketplace.sol @@ -67,11 +67,13 @@ contract MetaMarketplace { // Currencies lib CurrenciesERC20 _currency_contract; - uint public promille_fee = 25; // service fee (2.5%) + uint public promille_fee = 15; // service fee (1.5%) // Address where we collect comission address payable public _treasure_fund; - + // uint public royalty_fee = 15; + + //Hardcode interface_id's bytes4 private constant _INTERFACE_ID_MSNFT = 0x780e9d63; bytes4 private constant _INTERFACE_ID_IERC721ENUMERABLE = 0x780e9d63; @@ -206,6 +208,27 @@ contract MetaMarketplace { */ + // deduct royalties, if NFT is created in MoonShard, then applicate +1.5% royalties fee to author of nft + function _deductRoyalties(address nft_token_contract_, uint256 token_id_, uint256 grossSaleValue) internal returns (address royalties_reciver,uint256 royalties_amount) { + + // check nft type + NftType standard = Marketplaces[nft_token_contract_].nft_standard; + if (standard == NftType.MoonShard) + { + royalties_reciver = MSNFT.get_author_by_token_id(token_id_); + royalties_amount = calculateFee(grossSaleValue,1000); + } else + { + royalties_reciver = address (0x0); + royalties_amount = 0; + } + return royalties_reciver,royalties_amount; + } + + + + + /** * @notice Purchases a nft-token. Require active sell offer from owner of nft. Otherwise use makeBuyOffer * also require bid_price_ equal or bigger than desired price from sell offer From a0630292d4cb6d2482fb913b9f90dcd37af2dabb Mon Sep 17 00:00:00 2001 From: Bekket Date: Tue, 7 Dec 2021 00:44:34 +0300 Subject: [PATCH 16/38] royalties in process purchase --- contracts/721/singleton/MSNFT.sol | 4 +-- contracts/721/singleton/MetaMarketplace.sol | 36 +++++++++++++-------- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/contracts/721/singleton/MSNFT.sol b/contracts/721/singleton/MSNFT.sol index b217041..9c0b994 100644 --- a/contracts/721/singleton/MSNFT.sol +++ b/contracts/721/singleton/MSNFT.sol @@ -435,9 +435,9 @@ contract MSNFT is ERC721Enumerable, Ownable { } function get_author_by_token_id(uint256 item_id) public view returns (address author_) { - uint _master_id = ItemToMaster[tokenId]; + uint _master_id = ItemToMaster[item_id]; author_ = authors[_master_id]; - return author; + return author_; } /** diff --git a/contracts/721/singleton/MetaMarketplace.sol b/contracts/721/singleton/MetaMarketplace.sol index 30322f0..0786f8b 100644 --- a/contracts/721/singleton/MetaMarketplace.sol +++ b/contracts/721/singleton/MetaMarketplace.sol @@ -88,7 +88,7 @@ contract MetaMarketplace { event SellOfferWithdrawn(address nft_contract_, uint256 tokenId, address seller); event BuyOfferWithdrawn(uint256 tokenId, address buyer); event CalculatedFees(uint256 initial_value, uint256 fees, uint256 transfered_amount, address feeAddress); - // event RoyaltiesPaid(uint256 tokenId, uint value); + event RoyaltiesPaid(address nft_contract_,uint256 tokenId, address recepient, uint value); event Sale(address nft_contract_, uint256 tokenId, address seller, address buyer, uint256 value); @@ -209,26 +209,24 @@ contract MetaMarketplace { // deduct royalties, if NFT is created in MoonShard, then applicate +1.5% royalties fee to author of nft - function _deductRoyalties(address nft_token_contract_, uint256 token_id_, uint256 grossSaleValue) internal returns (address royalties_reciver,uint256 royalties_amount) { + function _deductRoyalties(address nft_token_contract_, uint256 token_id_, uint256 grossSaleValue) internal view returns (address royalties_reciver,uint256 royalties_amount) { // check nft type NftType standard = Marketplaces[nft_token_contract_].nft_standard; if (standard == NftType.MoonShard) { - royalties_reciver = MSNFT.get_author_by_token_id(token_id_); + royalties_reciver = MSNFT(nft_token_contract_).get_author_by_token_id(token_id_); royalties_amount = calculateFee(grossSaleValue,1000); } else { royalties_reciver = address (0x0); royalties_amount = 0; } - return royalties_reciver,royalties_amount; + return (royalties_reciver,royalties_amount); } - - /** * @notice Purchases a nft-token. Require active sell offer from owner of nft. Otherwise use makeBuyOffer * also require bid_price_ equal or bigger than desired price from sell offer @@ -268,7 +266,7 @@ contract MetaMarketplace { */ // Transfer funds (ERC20-currency) to the seller and distribute fees - if(_processPurchase(currency_,msg.sender,seller,bid_price_) == false) { + if(_processPurchase(token_contract_,tokenId,currency_,msg.sender,seller,bid_price_) == false) { // delete metainfo.activeBuyOffers[tokenId][currency_]; // if we can't move funds from buyer to seller, then buyer either don't have enough balance nor approved spending this much, so we delete this order revert("Approved amount is lesser than (bid_price_) needed to deal"); } @@ -446,7 +444,7 @@ contract MetaMarketplace { * @notice transferFrom(from_) to this contract and then split payments into treasure_fund fee and send rest of it to_ . Will return false if approved_balance < amount * @param currency_ ERC20 currency. Seller should specify what exactly currency he/she want to out */ - function _processPurchase(CurrenciesERC20.CurrencyERC20 currency_, address from_, address to_, uint256 amount) internal returns (bool){ + function _processPurchase(address nft_contract_, uint256 tokenId, CurrenciesERC20.CurrencyERC20 currency_, address from_, address to_, uint256 amount) internal returns (bool){ IERC20 _currency_token = _currency_contract.get_hardcoded_currency(currency_); uint256 approved_balance = _currency_token.allowance(from_, address(this)); @@ -456,13 +454,25 @@ contract MetaMarketplace { } uint256 scale = 1000; - uint256 fees = calculateFee(amount,scale); - uint256 net_amount = amount - fees; + uint256 fees = calculateFee(amount,scale); // service fees + + // check royalties + address r_reciver; + uint256 r_amount; + (r_reciver,r_amount) = _deductRoyalties(nft_contract_,tokenId,amount); + + uint256 net_amount = amount - fees - r_amount; // @todo check calculation in tests require(_currency_token.transferFrom(from_, address(this), amount), "MetaMarketplace: ERC20: transferFrom buyer to metamarketplace contract failed "); // pull funds - _currency_token.transfer(to_, net_amount); // forward funds + _currency_token.transfer(to_, net_amount); // forward funds to seller _currency_token.transfer(_treasure_fund, fees); // collect fees - uint256 r = amount + fees; - emit CalculatedFees(r,fees,amount,_treasure_fund); + + if (r_amount > 0) + { + _currency_token.transfer(r_reciver, r_amount); + emit RoyaltiesPaid(nft_contract_,tokenId,r_reciver, r_amount); + } + + emit CalculatedFees(amount,fees,net_amount,_treasure_fund); return true; } From 6d7b7d63a9ce4640a144fa7a5d778c20cdd96318 Mon Sep 17 00:00:00 2001 From: Bekket Date: Tue, 7 Dec 2021 00:50:32 +0300 Subject: [PATCH 17/38] royalties in forwardFunds --- contracts/721/singleton/MetaMarketplace.sol | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/contracts/721/singleton/MetaMarketplace.sol b/contracts/721/singleton/MetaMarketplace.sol index 0786f8b..ffdd9eb 100644 --- a/contracts/721/singleton/MetaMarketplace.sol +++ b/contracts/721/singleton/MetaMarketplace.sol @@ -484,17 +484,28 @@ contract MetaMarketplace { * @param currency_ ERC20 currency. Seller should specify what exactly currency he/she want to out * @param to_ seller address */ - function _forwardFunds(CurrenciesERC20.CurrencyERC20 currency_, address to_, uint256 amount) internal returns(bool) { + function _forwardFunds(address nft_contract_, uint256 tokenId, CurrenciesERC20.CurrencyERC20 currency_, address to_, uint256 amount) internal returns(bool) { IERC20 _currency_token = _currency_contract.get_hardcoded_currency(currency_); uint256 scale = 1000; uint256 fees = calculateFee(amount,scale); - uint256 net_amount = amount - fees; + + // check royalties + address r_reciver; + uint256 r_amount; + (r_reciver,r_amount) = _deductRoyalties(nft_contract_,tokenId,amount); + + uint256 net_amount = amount - fees - r_amount; _currency_token.transfer(to_, net_amount); // forward funds _currency_token.transfer(_treasure_fund, fees); // collect fees - uint256 r = amount + fees; - emit CalculatedFees(r,fees,amount,_treasure_fund); + if (r_amount > 0) + { + _currency_token.transfer(r_reciver, r_amount); // forward royalties if appliciable + emit RoyaltiesPaid(nft_contract_,tokenId,r_reciver, r_amount); + } + + emit CalculatedFees(amount,fees,net_amount,_treasure_fund); return true; } From 51c151142ffb38b130449e99252c3b6c27554e21 Mon Sep 17 00:00:00 2001 From: Bekket Date: Tue, 7 Dec 2021 00:55:02 +0300 Subject: [PATCH 18/38] cleanup --- contracts/721/singleton/MSNFT.sol | 3 +- contracts/721/singleton/MetaMarketplace.sol | 40 ++------------------- 2 files changed, 4 insertions(+), 39 deletions(-) diff --git a/contracts/721/singleton/MSNFT.sol b/contracts/721/singleton/MSNFT.sol index 9c0b994..f19adb5 100644 --- a/contracts/721/singleton/MSNFT.sol +++ b/contracts/721/singleton/MSNFT.sol @@ -343,11 +343,12 @@ contract MSNFT is ERC721Enumerable, Ownable { } + /* // transfer authorship of mastercopy function transferAuthorship() public { } - + */ // update authorship for unique rarity token (setting owner of token to author) function updateAuthorsip(uint tokenId) public { diff --git a/contracts/721/singleton/MetaMarketplace.sol b/contracts/721/singleton/MetaMarketplace.sol index ffdd9eb..f661a45 100644 --- a/contracts/721/singleton/MetaMarketplace.sol +++ b/contracts/721/singleton/MetaMarketplace.sol @@ -184,30 +184,6 @@ contract MetaMarketplace { } - /* UNDER CONSIDERATION - /// @notice Transfers royalties to the rightsowner if applicable - /// @param tokenId - the NFT assed queried for royalties - /// @param grossSaleValue - the price at which the asset will be sold - /// @return netSaleAmount - the value that will go to the seller after - /// deducting royalties - function _deduceRoyalties(uint256 tokenId, uint256 grossSaleValue) - internal returns (uint256 netSaleAmount) { - // Get amount of royalties to pays and recipient - (address royaltiesReceiver, uint256 royaltiesAmount) = token - .royaltyInfo(tokenId, grossSaleValue); - // Deduce royalties from sale value - uint256 netSaleValue = grossSaleValue - royaltiesAmount; - // Transfer royalties to rightholder if not zero - if (royaltiesAmount > 0) { - royaltiesReceiver.call{value: royaltiesAmount}(''); - } - // Broadcast royalties payment - emit RoyaltiesPaid(tokenId, royaltiesAmount); - return netSaleValue; - } - */ - - // deduct royalties, if NFT is created in MoonShard, then applicate +1.5% royalties fee to author of nft function _deductRoyalties(address nft_token_contract_, uint256 token_id_, uint256 grossSaleValue) internal view returns (address royalties_reciver,uint256 royalties_amount) { @@ -257,13 +233,7 @@ contract MetaMarketplace { require(metainfo.activeSellOffers[tokenId].minPrice[currency_] > 0, "price for this currency has not been setted, use makeBuyOffer() instead"); require(bid_price_ >= metainfo.activeSellOffers[tokenId].minPrice[currency_], "Bid amount lesser than desired price!"); - - // Pay royalties if applicable - /* - if (_checkRoyalties(_tokenContractAddress)) { - saleValue = _deduceRoyalties(tokenId, saleValue); - } - */ + // Transfer funds (ERC20-currency) to the seller and distribute fees if(_processPurchase(token_contract_,tokenId,currency_,msg.sender,seller,bid_price_) == false) { @@ -391,12 +361,6 @@ contract MetaMarketplace { require(currentBuyer != address(0), "No buy offer"); uint256 bid_value = metainfo.activeBuyOffers[tokenId][currency_].price; - // Pay royalties if applicable - /* - if (_checkRoyalties(_tokenContractAddress)) { - netSaleValue = _deduceRoyalties(tokenId, saleValue); - } - */ // Delete the current sell offer whether it exists or not delete (metainfo.activeSellOffers[tokenId]); @@ -408,7 +372,7 @@ contract MetaMarketplace { // Transfer funds to the seller // Tries to forward funds from this contract (which already has been locked when makeBuyOffer executed) to seller and distribute fees - require(_forwardFunds(currency_, msg.sender, bid_value), "MetaMarketplace: can't forward funds to seller"); + require(_forwardFunds(token_contract_,tokenId,currency_, msg.sender, bid_value), "MetaMarketplace: can't forward funds to seller"); // And transfer nft token to the buyer From ce373a9d9a79f734454dd45f5e035ef1dc1beadc Mon Sep 17 00:00:00 2001 From: Takeshi Date: Tue, 7 Dec 2021 03:57:48 -0800 Subject: [PATCH 19/38] unique and unlimited test cases based on MSNFT and ERC-721 template contracts --- contracts/721/singleton/MetaMarketplace.sol | 4 +- contracts/721/singleton/NftTemplate.sol | 21 + migrations/2_deploy_contracts.js | 8 +- test/MasterFactory721.js | 274 ++++---- test/metaMarketplace.js | 695 ++++++++++++++++++++ test/metaMarketplaceNftTemplate.js | 243 +++++++ 6 files changed, 1104 insertions(+), 141 deletions(-) create mode 100644 contracts/721/singleton/NftTemplate.sol create mode 100644 test/metaMarketplace.js create mode 100644 test/metaMarketplaceNftTemplate.js diff --git a/contracts/721/singleton/MetaMarketplace.sol b/contracts/721/singleton/MetaMarketplace.sol index 0b247ae..8a3c47e 100644 --- a/contracts/721/singleton/MetaMarketplace.sol +++ b/contracts/721/singleton/MetaMarketplace.sol @@ -90,12 +90,12 @@ contract MetaMarketplace { event Sale(address nft_contract_, uint256 tokenId, address seller, address buyer, uint256 value); - constructor(address currency_contract_, address msnft_token_,address treasure_fund_) + constructor(address currency_contract_, address msnft_token_,address payable treasure_fund_) { _currency_contract = CurrenciesERC20(currency_contract_); require(_checkStandard(msnft_token_, NftType.MoonShard), "Standard not supported"); SetUpMarketplace(msnft_token_, NftType.MoonShard); // set up MSNFT ready for sale - treasure_fund_ = _treasure_fund; + _treasure_fund = treasure_fund_; } diff --git a/contracts/721/singleton/NftTemplate.sol b/contracts/721/singleton/NftTemplate.sol new file mode 100644 index 0000000..d32bf48 --- /dev/null +++ b/contracts/721/singleton/NftTemplate.sol @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import "../../../node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol"; +import "../../../node_modules/@openzeppelin/contracts/utils/Counters.sol"; +import "../../../node_modules/@openzeppelin/contracts/access/Ownable.sol"; + +contract NftTemplate is ERC721Enumerable, Ownable { + using Counters for Counters.Counter; + Counters.Counter private _tokenIds; + event NewTokenCreated(address receiver, uint tokenId); + constructor(string memory name_, string memory smbl_) ERC721(name_,smbl_) ERC721Enumerable() {} + + function mintNft(address receiver) external onlyOwner returns (uint256) { + _tokenIds.increment(); + uint256 newNftTokenId = _tokenIds.current(); + _mint(receiver, newNftTokenId); + emit NewTokenCreated(receiver, newNftTokenId); + return newNftTokenId; + } +} \ No newline at end of file diff --git a/migrations/2_deploy_contracts.js b/migrations/2_deploy_contracts.js index 8f54b20..ea3979e 100644 --- a/migrations/2_deploy_contracts.js +++ b/migrations/2_deploy_contracts.js @@ -4,6 +4,7 @@ var MasterFactory = artifacts.require("./721/singleton/MasterFactory721.sol"); var Master = artifacts.require("./721/singleton/MSNFT.sol"); // var limitGas = web3.eth.getBlock("latest").gasLimit; var SVC = artifacts.require("./SVC.sol"); +var NFTTemplate = artifacts.require("./721/singleton/NftTemplate.sol"); var InterfaceR = artifacts.require("./721/singleton/InterfaceRegister.sol"); var MetaMarket = artifacts.require("./721/singleton/MetaMarketplace.sol"); @@ -75,7 +76,7 @@ module.exports = function (deployer, network, accounts) { }).then(function () { console.log("Master token address:"); console.log(Master.address); - return deployer.deploy(MasterFactory, Master.address, accounts[1], Currencies.address, { + return deployer.deploy(MasterFactory, Master.address, accounts[0], Currencies.address, { gasPrice: wei_gas_price, from: accounts[0] }); @@ -108,9 +109,8 @@ module.exports = function (deployer, network, accounts) { console.log(limitGasDev); // console.log(string_gas_price); - - deployer.then(async () => { + await deployer.deploy(NFTTemplate, "NFT template", "NTMP"); await deployer.deploy(SVC, "v0.0.0"); await deployer.deploy(USDT, "USDT", "USDT"); await deployer.deploy(USDC, "USDC", "USDC"); @@ -171,7 +171,7 @@ module.exports = function (deployer, network, accounts) { return; }).then(async () => { - return deployer.deploy(MetaMarket, Currencies.address, Master.address, accounts[0], { + return deployer.deploy(MetaMarket, Currencies.address, Master.address, accounts[1], { gasPrice: wei_gas_price, from: accounts[0] }); diff --git a/test/MasterFactory721.js b/test/MasterFactory721.js index 90b202c..8a76ace 100644 --- a/test/MasterFactory721.js +++ b/test/MasterFactory721.js @@ -27,13 +27,13 @@ function makeRandomLink(length) { contract('MasterFactory721', accounts => { let factory, network, tokenSaleSingleton, feeAddress, nft, mst, usdt, dai, usdc, weth; - let midone, midUnique, midRareOne, midRareTwo; + let midUnlimit, midRareOne, midRareTwo; const [USDT, USDC, DAI, MST, WETH] = [0, 1, 2, 3, 4]; let tokensTotal = '50'; let linkOne, linkTwo, linkThree, linkFour; let admin, user; const desc = 'Lorem ipsum dolor sit amet'; - const [unlimit, unique, rare] = [0, 1, 2]; + const [limited, unlimit] = [2, 0]; let saletemplate; @@ -64,9 +64,9 @@ contract('MasterFactory721', accounts => { assert.equal(createItemOne.receipt.logs.length, 1, 'triggers two events'); assert.equal(createItemOne.receipt.logs[0].event, 'CreateMasterItem', 'should be the CreateMasterItem event'); if (network == 'development' || network == 'ganache') { - midone = '1'; + midUnlimit = '1'; } else { - midOne = createItemOne.receipt.logs[0].args.master_id; + midUnlimit = createUniqueItem.receipt.logs[0].args.master_id; } const firstLink = createItemOne.receipt.logs[0].args.link; assert(firstLink == linkOne); @@ -81,54 +81,34 @@ contract('MasterFactory721', accounts => { } }); - it('should create master copy with unique supply type', async () => { - const createUniqueItem = await factory.createMasterItem(linkTwo, desc, unique); - assert.equal(createUniqueItem.receipt.logs.length, 1, 'triggers two events'); - assert.equal(createUniqueItem.receipt.logs[0].event, 'CreateMasterItem', 'should be the CreateMasterItem event'); - if (network == 'development' || network == 'ganache') { - midUnique = '2'; - } else { - midUnique = createUniqueItem.receipt.logs[0].args.master_id; - } - const uniqueLink = createUniqueItem.receipt.logs[0].args.link; - assert(uniqueLink == linkTwo); - }); - - it('should NOT create master copy with unique supply type', async () => { - try { - await factory.createMasterItem(linkTwo, desc, unique); - } catch (e) { - assert(e.message, 'error message must contain revert'); - } - }); - - it('should create master copy with rare supply type', async () => { - const createRareItemOne = await factory.createMasterItem(linkThree, desc, rare); + it('should create master copy with limited supply type', async () => { + const createRareItemOne = await factory.createMasterItem(linkThree, desc, limited); assert.equal(createRareItemOne.receipt.logs.length, 1, 'triggers two events'); assert.equal(createRareItemOne.receipt.logs[0].event, 'CreateMasterItem', 'should be the CreateMasterItem event'); if (network == 'development' || network == 'ganache') { - midRareOne = '3'; + midRareOne = '2'; } else { - midRareOne = createRareItemOne.receipt.logs[0].args.master_id; + midRareOne = createUniqueItem.receipt.logs[0].args.master_id; } const firstRareLink = createRareItemOne.receipt.logs[0].args.link; assert(firstRareLink == linkThree); - const createRareItemTwo = await factory.createMasterItem(linkFour, desc, rare); + const createRareItemTwo = await factory.createMasterItem(linkFour, desc, limited); + console.log(createRareItemTwo.receipt.logs[0].args); assert.equal(createRareItemTwo.receipt.logs.length, 1, 'triggers two events'); assert.equal(createRareItemTwo.receipt.logs[0].event, 'CreateMasterItem', 'should be the CreateMasterItem event'); if (network == 'development' || network == 'ganache') { - midRareTwo = '4'; + midRareTwo = '3'; } else { - midRareTwo = createRareItemTwo.receipt.logs[0].args.master_id; + midRareTwo = createUniqueItem.receipt.logs[0].args.master_id; } const secondRareLink = createRareItemTwo.receipt.logs[0].args.link; assert(secondRareLink == linkFour); }); - it('should NOT create master copy with rare supply type', async () => { + it('should NOT create master copy with limited supply type', async () => { try { - await factory.createMasterItem(linkFour, desc, rare); + await factory.createMasterItem(linkFour, desc, limited); } catch (e) { assert(e.message, 'error message must contain revert'); } @@ -157,7 +137,7 @@ contract('MasterFactory721', accounts => { const tokenUsdtPriceStr = '10'; let tokenUsdtPrice = web3.utils.toBN(tokenUsdtPriceStr) * 1e6; - const receiptItemSale = await factory.createItemSale(tokenUsdtPrice, unlimit, USDT, midone); + const receiptItemSale = await factory.createItemSale(tokenUsdtPrice, unlimit, USDT, midUnlimit); saletemplate = await factory.sale_template.call(); assert.equal(receiptItemSale.receipt.logs.length, 2, 'triggers two events'); assert.equal(receiptItemSale.receipt.logs[0].event, 'SaleCreated', 'should be the SaleCreated event'); @@ -177,7 +157,7 @@ contract('MasterFactory721', accounts => { assert(allowance == tokenUsdtPrice); tokenSaleSingleton = await TokenSaleSingleton.at(saletemplate); - const buyToken = await tokenSaleSingleton.buyTokens(user, 1, USDT, midone); + const buyToken = await tokenSaleSingleton.buyTokens(user, USDT, midUnlimit, 0); assert.equal(buyToken.logs.length, 1, 'triggers one event'); assert.equal(buyToken.logs[0].event, 'TokensPurchased', 'should be the TokensPurchased event'); @@ -187,17 +167,17 @@ contract('MasterFactory721', accounts => { let userBalanceAfterBuy = userTokenBalanceAfter - tokenUsdtPrice; assert(userBalance == userBalanceAfterBuy); - const balanceUsdtBeforeWithdraw = await tokenSaleSingleton.getBalances(USDT, midone); + const balanceUsdtBeforeWithdraw = await tokenSaleSingleton.getBalances(USDT, midUnlimit); assert.equal(balanceUsdtBeforeWithdraw.toString(), tokenUsdtPrice.toString(), "must be equal"); const balance = await nft.totalSupply(); assert.equal(balance, 1, 'balance has been replenished'); - const withDrawFunds = await tokenSaleSingleton.withDrawFunds(USDT, midone); + const withDrawFunds = await tokenSaleSingleton.withDrawFunds(USDT, midUnlimit); assert.equal(withDrawFunds.logs.length, 1, 'triggers one event'); assert.equal(withDrawFunds.logs[0].event, 'CalculatedFees', 'should be the CalculatedFees event'); - const balanceUsdtAfterWithdraw = await tokenSaleSingleton.getBalances(USDT, midone); + const balanceUsdtAfterWithdraw = await tokenSaleSingleton.getBalances(USDT, midUnlimit); assert.equal(balanceUsdtAfterWithdraw, 0, "must be zero after withdraw funds"); @@ -256,7 +236,7 @@ contract('MasterFactory721', accounts => { const allowance = await usdc.allowance(user, saletemplate); assert(allowance.toString() == tokenUsdcPrice.toString()); - const buyToken = await tokenSaleSingleton.buyTokens(user, 1, USDC, midone); + const buyToken = await tokenSaleSingleton.buyTokens(user, USDC, midUnlimit, 0); assert.equal(buyToken.logs.length, 1, 'triggers one event'); assert.equal(buyToken.logs[0].event, 'TokensPurchased', 'should be the TokensPurchased event'); let userBalance = await usdc.balanceOf(user, { @@ -265,17 +245,17 @@ contract('MasterFactory721', accounts => { let userBalanceAfterBuy = userTokenBalanceAfter - tokenUsdcPrice; assert(userBalance == userBalanceAfterBuy); - const balanceUsdcBeforeWithdraw = await tokenSaleSingleton.getBalances(USDC, midone); + const balanceUsdcBeforeWithdraw = await tokenSaleSingleton.getBalances(USDC, midUnlimit); assert.equal(balanceUsdcBeforeWithdraw.toString(), tokenUsdcPrice.toString(), "must be equal"); const balance = await nft.totalSupply(); assert.equal(balance, 2, 'balance has been replenished'); - const withDrawFunds = await tokenSaleSingleton.withDrawFunds(USDC, midone); + const withDrawFunds = await tokenSaleSingleton.withDrawFunds(USDC, midUnlimit); assert.equal(withDrawFunds.logs.length, 1, 'triggers one event'); assert.equal(withDrawFunds.logs[0].event, 'CalculatedFees', 'should be the CalculatedFees event'); - const balanceUsdcAfterWithdraw = await tokenSaleSingleton.getBalances(USDC, midone); + const balanceUsdcAfterWithdraw = await tokenSaleSingleton.getBalances(USDC, midUnlimit); assert.equal(balanceUsdcAfterWithdraw, 0, "must be zero after withdraw funds"); @@ -292,90 +272,90 @@ contract('MasterFactory721', accounts => { } }); - it('should buy nft tokens by DAI', async () => { - - if (network == 'development' || network == 'ganache') { - let userTokenBalanceBefore = await dai.balanceOf(user, { - from: admin - }); - assert.equal(userTokenBalanceBefore, 0, 'current admins token balance'); - - let tokensToMint = web3.utils.toWei(web3.utils.toBN(tokensTotal)); - - const receipt = await dai.MintERC20(user, tokensToMint, { - from: admin - }); - assert.equal(receipt.logs.length, 1, 'triggers one event'); - assert.equal(receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); - assert.equal(receipt.logs[0].address, dai.address, 'minted tokens are transferred from'); - - let userTokenBalanceAfter = await dai.balanceOf(user, { - from: admin - }); - assert.equal(userTokenBalanceAfter.toString(), tokensToMint.toString(), 'admins token balance after mint'); - - const tokenDaiPriceStr = '10'; - let tokenDaiPrice = web3.utils.toWei(web3.utils.toBN(tokenDaiPriceStr)); - - const receiptItemSale = await factory.createItemSale(tokenDaiPrice, unique, DAI, midUnique); - assert.equal(receiptItemSale.receipt.logs.length, 2, 'triggers two events'); - assert.equal(receiptItemSale.receipt.logs[0].event, 'SaleCreated', 'should be the SaleCreated event'); - assert.equal(receiptItemSale.receipt.logs[1].event, 'SaleCreatedHuman', 'should be the SaleCreatedHuman event'); - assert(userTokenBalanceAfter >= receiptItemSale.receipt.logs[0].args.price); - - await dai.approve(saletemplate, 0, { - from: user - }); - - const approve = await dai.approve(saletemplate, tokenDaiPrice, { - from: user - }); - assert.equal(approve.logs.length, 1, 'triggers one event'); - assert.equal(approve.logs[0].event, 'Approval', 'should be the Approval event'); - assert.equal(approve.logs[0].args.owner, user, 'logs the account tokens are authorized by'); - assert.equal(approve.logs[0].args.spender, saletemplate, 'logs the account tokens are authorized to'); - - assert.equal(approve.logs[0].args.value, tokenDaiPrice.toString(), 'logs the transfer amount'); - - const allowance = await dai.allowance(user, saletemplate); - assert(allowance.toString() == tokenDaiPrice.toString()); - - tokenSaleSingleton = await TokenSaleSingleton.at(saletemplate); - - const buyToken = await tokenSaleSingleton.buyTokens(user, 1, DAI, midUnique); - assert.equal(buyToken.logs.length, 1, 'triggers one event'); - assert.equal(buyToken.logs[0].event, 'TokensPurchased', 'should be the TokensPurchased event'); - - let userBalance = await dai.balanceOf(user, { - from: admin - }); - let userBalanceAfterBuy = userTokenBalanceAfter - tokenDaiPrice; - assert(userBalance == userBalanceAfterBuy); - - const balanceDaiBeforeWithdraw = await tokenSaleSingleton.getBalances(DAI, midUnique); - assert.equal(balanceDaiBeforeWithdraw.toString(), tokenDaiPrice.toString(), "must be equal"); - - const balance = await nft.totalSupply(); - assert.equal(balance, 3, 'balance has been replenished'); - - const withDrawFunds = await tokenSaleSingleton.withDrawFunds(DAI, midUnique); - assert.equal(withDrawFunds.logs.length, 1, 'triggers one event'); - assert.equal(withDrawFunds.logs[0].event, 'CalculatedFees', 'should be the CalculatedFees event'); - - const balanceDaiAfterWithdraw = await tokenSaleSingleton.getBalances(DAI, midUnique); - assert.equal(balanceDaiAfterWithdraw, 0, "must be zero after withdraw funds"); - const checkCreatorBalance = await dai.balanceOf(admin, { - from: admin - }); - - const feeAddress = withDrawFunds.logs[0].args.feeAddress; - const feeAddressBalance = await dai.balanceOf(feeAddress, { - from: admin - }); - assert(checkCreatorBalance.toString() == withDrawFunds.logs[0].args.transfered_amount.toString()); - assert(feeAddressBalance.toString() == withDrawFunds.logs[0].args.fees.toString()); - } - }); + // it('should buy nft tokens by DAI', async () => { + + // if (network == 'development' || network == 'ganache') { + // let userTokenBalanceBefore = await dai.balanceOf(user, { + // from: admin + // }); + // assert.equal(userTokenBalanceBefore, 0, 'current admins token balance'); + + // let tokensToMint = web3.utils.toWei(web3.utils.toBN(tokensTotal)); + + // const receipt = await dai.MintERC20(user, tokensToMint, { + // from: admin + // }); + // assert.equal(receipt.logs.length, 1, 'triggers one event'); + // assert.equal(receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); + // assert.equal(receipt.logs[0].address, dai.address, 'minted tokens are transferred from'); + + // let userTokenBalanceAfter = await dai.balanceOf(user, { + // from: admin + // }); + // assert.equal(userTokenBalanceAfter.toString(), tokensToMint.toString(), 'admins token balance after mint'); + + // const tokenDaiPriceStr = '10'; + // let tokenDaiPrice = web3.utils.toWei(web3.utils.toBN(tokenDaiPriceStr)); + + // const receiptItemSale = await factory.createItemSale(tokenDaiPrice, unique, DAI, midUnique); + // assert.equal(receiptItemSale.receipt.logs.length, 2, 'triggers two events'); + // assert.equal(receiptItemSale.receipt.logs[0].event, 'SaleCreated', 'should be the SaleCreated event'); + // assert.equal(receiptItemSale.receipt.logs[1].event, 'SaleCreatedHuman', 'should be the SaleCreatedHuman event'); + // assert(userTokenBalanceAfter >= receiptItemSale.receipt.logs[0].args.price); + + // await dai.approve(saletemplate, 0, { + // from: user + // }); + + // const approve = await dai.approve(saletemplate, tokenDaiPrice, { + // from: user + // }); + // assert.equal(approve.logs.length, 1, 'triggers one event'); + // assert.equal(approve.logs[0].event, 'Approval', 'should be the Approval event'); + // assert.equal(approve.logs[0].args.owner, user, 'logs the account tokens are authorized by'); + // assert.equal(approve.logs[0].args.spender, saletemplate, 'logs the account tokens are authorized to'); + + // assert.equal(approve.logs[0].args.value, tokenDaiPrice.toString(), 'logs the transfer amount'); + + // const allowance = await dai.allowance(user, saletemplate); + // assert(allowance.toString() == tokenDaiPrice.toString()); + + // tokenSaleSingleton = await TokenSaleSingleton.at(saletemplate); + + // const buyToken = await tokenSaleSingleton.buyTokens(user, DAI, midUnique, unique); + // assert.equal(buyToken.logs.length, 1, 'triggers one event'); + // assert.equal(buyToken.logs[0].event, 'TokensPurchased', 'should be the TokensPurchased event'); + + // let userBalance = await dai.balanceOf(user, { + // from: admin + // }); + // let userBalanceAfterBuy = userTokenBalanceAfter - tokenDaiPrice; + // assert(userBalance == userBalanceAfterBuy); + + // const balanceDaiBeforeWithdraw = await tokenSaleSingleton.getBalances(DAI, midUnique); + // assert.equal(balanceDaiBeforeWithdraw.toString(), tokenDaiPrice.toString(), "must be equal"); + + // const balance = await nft.totalSupply(); + // assert.equal(balance, 3, 'balance has been replenished'); + + // const withDrawFunds = await tokenSaleSingleton.withDrawFunds(DAI, midUnique); + // assert.equal(withDrawFunds.logs.length, 1, 'triggers one event'); + // assert.equal(withDrawFunds.logs[0].event, 'CalculatedFees', 'should be the CalculatedFees event'); + + // const balanceDaiAfterWithdraw = await tokenSaleSingleton.getBalances(DAI, midUnique); + // assert.equal(balanceDaiAfterWithdraw, 0, "must be zero after withdraw funds"); + // const checkCreatorBalance = await dai.balanceOf(admin, { + // from: admin + // }); + + // const feeAddress = withDrawFunds.logs[0].args.feeAddress; + // const feeAddressBalance = await dai.balanceOf(feeAddress, { + // from: admin + // }); + // assert(checkCreatorBalance.toString() == withDrawFunds.logs[0].args.transfered_amount.toString()); + // assert(feeAddressBalance.toString() == withDrawFunds.logs[0].args.fees.toString()); + // } + // }); it('should buy nft tokens by MST', async () => { if (network == 'development' || network == 'ganache') { @@ -401,7 +381,7 @@ contract('MasterFactory721', accounts => { const tokenMstPriceStr = '10'; let tokenMstPrice = web3.utils.toWei(web3.utils.toBN(tokenMstPriceStr)); - const receiptItemSale = await factory.createItemSale(tokenMstPrice, rare, MST, 3); + const receiptItemSale = await factory.createItemSale(tokenMstPrice, limited, MST, midRareOne); assert.equal(receiptItemSale.receipt.logs.length, 2, 'triggers two events'); assert.equal(receiptItemSale.receipt.logs[0].event, 'SaleCreated', 'should be the SaleCreated event'); assert.equal(receiptItemSale.receipt.logs[1].event, 'SaleCreatedHuman', 'should be the SaleCreatedHuman event'); @@ -426,9 +406,12 @@ contract('MasterFactory721', accounts => { const allowanceFirst = await mst.allowance(user, saletemplate); assert(allowanceFirst.toString() == tokenMstPrice.toString()); - const buyTokenFirst = await tokenSaleSingleton.buyTokens(user, 1, MST, midRareOne); + const buyTokenFirst = await tokenSaleSingleton.buyTokens(user, MST, midRareOne, 0); assert.equal(buyTokenFirst.logs.length, 1, 'triggers one event'); assert.equal(buyTokenFirst.logs[0].event, 'TokensPurchased', 'should be the TokensPurchased event'); + + const checklimone = await tokenSaleSingleton.sold_count(midRareOne); + console.log(checklimone.toString()); let userBalanceAfterFistPurchase = await mst.balanceOf(user, { from: admin @@ -436,7 +419,6 @@ contract('MasterFactory721', accounts => { let userBalanceAfterFirstBuy = userTokenBalanceAfter - tokenMstPrice; assert(userBalanceAfterFistPurchase == userBalanceAfterFirstBuy); - const balanceMstAfterFirstSale = await tokenSaleSingleton.getBalances(MST, midRareOne); assert.equal(balanceMstAfterFirstSale.toString(), tokenMstPrice.toString(), "must be equal"); @@ -457,10 +439,15 @@ contract('MasterFactory721', accounts => { const allowanceSecond = await mst.allowance(user, saletemplate); assert(allowanceSecond.toString() == tokenMstPrice.toString()); - const buyTokenSecond = await tokenSaleSingleton.buyTokens(user, 1, MST, midRareOne); + + const buyTokenSecond = await tokenSaleSingleton.buyTokens(user, MST, midRareOne, 1); assert.equal(buyTokenSecond.logs.length, 1, 'triggers one event'); assert.equal(buyTokenSecond.logs[0].event, 'TokensPurchased', 'should be the TokensPurchased event'); + + const checklimtwo = await tokenSaleSingleton.sold_count(midRareOne); + console.log(checklimtwo.toString()); + let userBalanceAfterSecondPurchase = await mst.balanceOf(user, { from: admin }); @@ -472,7 +459,7 @@ contract('MasterFactory721', accounts => { assert.equal(balanceMstAfterSecondSale.toString(), (tokenMstPrice * 2).toString(), "must be equal"); const balance = await nft.totalSupply(); - assert.equal(balance, 5, 'balance has been replenished'); + assert.equal(balance, 4, 'balance has been replenished'); const withDrawFunds = await tokenSaleSingleton.withDrawFunds(MST, midRareOne); assert.equal(withDrawFunds.logs.length, 1, 'triggers one event'); @@ -563,6 +550,23 @@ contract('MasterFactory721', accounts => { } }); + it('should NOT buy limited nft tokens because of cup', async () => { + try { + const tokenMstPriceStr = '10'; + let tokenMstPrice = web3.utils.toWei(web3.utils.toBN(tokenMstPriceStr)); + await mst.approve(saletemplate, 0, { + from: user + }); + await mst.approve(saletemplate, tokenMstPrice, { + from: user + }); + await mst.allowance(user, saletemplate); + await tokenSaleSingleton.buyTokens(user, MST, midRareOne, 0); + } catch (e) { + assert(e.message, 'try to mint more than totalSupply of Limited tokent'); + } + }); + it('should buy nft tokens by WETH', async () => { if (network == 'development' || network == 'ganache') { @@ -588,7 +592,7 @@ contract('MasterFactory721', accounts => { const tokenWethPriceStr = '10'; let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); - const receiptItemSale = await factory.createItemSale(tokenWethPrice, rare, WETH, midRareTwo); + const receiptItemSale = await factory.createItemSale(tokenWethPrice, limited, WETH, midRareTwo); assert.equal(receiptItemSale.receipt.logs.length, 2, 'triggers two events'); assert.equal(receiptItemSale.receipt.logs[0].event, 'SaleCreated', 'should be the SaleCreated event'); assert.equal(receiptItemSale.receipt.logs[1].event, 'SaleCreatedHuman', 'should be the SaleCreatedHuman event'); @@ -612,7 +616,7 @@ contract('MasterFactory721', accounts => { assert(allowance.toString() == tokenWethPrice.toString()); tokenSaleSingleton = await TokenSaleSingleton.at(saletemplate); - const buyToken = await tokenSaleSingleton.buyTokens(user, 1, WETH, midRareTwo); + const buyToken = await tokenSaleSingleton.buyTokens(user, WETH, midRareTwo, 0); assert.equal(buyToken.logs.length, 1, 'triggers one event'); assert.equal(buyToken.logs[0].event, 'TokensPurchased', 'should be the TokensPurchased event'); @@ -626,7 +630,7 @@ contract('MasterFactory721', accounts => { assert.equal(balanceWethAfterSecondSale.toString(), tokenWethPrice.toString(), "must be equal"); const balance = await nft.totalSupply(); - assert.equal(balance, 6, 'balance has been replenished'); + assert.equal(balance, 5, 'balance has been replenished'); const withDrawFunds = await tokenSaleSingleton.withDrawFunds(WETH, midRareTwo); diff --git a/test/metaMarketplace.js b/test/metaMarketplace.js new file mode 100644 index 0000000..60eeab3 --- /dev/null +++ b/test/metaMarketplace.js @@ -0,0 +1,695 @@ +const MasterFactory721 = artifacts.require('MasterFactory721'); +const MSNFT = artifacts.require('MSNFT'); +const USDTcontract = artifacts.require('TestUSDT'); +const USDCcontract = artifacts.require('USDC'); +const DAIcontract = artifacts.require('DAI'); +const MSTcontract = artifacts.require('MST'); +const WETHcontract = artifacts.require('WETH'); +const MetaMarketplace = artifacts.require('MetaMarketplace'); + +const { + time +} = require('@openzeppelin/test-helpers'); + +function makeRandomLink(length) { + let result = ''; + let characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + let charactersLength = characters.length; + for (let i = 0; i < length; i++) { + result += characters.charAt(Math.floor(Math.random() * + charactersLength)); + } + return result; +} + +contract('MetaMarketplace', accounts => { + let factory, nft, mst, mMarket; + let network; + let tokenIdUnlimitOne, tokenIdUnlimitTwo, tokenIdUnlimitThree, tokenIdUniue; + let admin, userone, royaltyaddress, userthree; + const desc = 'Lorem ipsum dolor sit amet'; + let linkOne, linkTwo, linkThree; + let midUnique, midLimited; + let tokensTotal = '100'; + const [unique, limited, unlimit] = [1, 2, 0]; + const [MoonShard, Enum, Meta, Common] = [0, 1, 2, 3]; + const [USDT, USDC, DAI, MST, WETH] = [0, 1, 2, 3, 4]; + before(async () => { + factory = await MasterFactory721.deployed(); + nft = await MSNFT.deployed(); + mMarket = await MetaMarketplace.deployed(); + linkOne = 'https://google.com/' + makeRandomLink(20); + linkTwo = 'https://google.com/' + makeRandomLink(20); + linkThree = 'https://google.com/' + makeRandomLink(20); + network = process.env.NETWORK; + mst = await MSTcontract.deployed(); + if (network == 'development' || network == 'ganache') { + usdt = await USDTcontract.deployed(); + usdc = await USDCcontract.deployed(); + dai = await DAIcontract.deployed(); + weth = await WETHcontract.deployed(); + admin = accounts[0]; + royaltyaddress = accounts[1]; + userone = accounts[2]; + } else { + admin = '0xF87F1eaa6Fd9B65bF41F90afEdF8B64D6487F61E'; + userone = '0x1b7C81DbAF6f34E878686CE6FA9463c48E2185C7'; + } + }); + + it('should fill balances', async () => { + if (network == 'development' || network == 'ganache') { + //USDT + let userUsdtTokenBalanceBefore = await usdt.balanceOf(userone, { + from: admin + }); + assert.equal(userUsdtTokenBalanceBefore, 0, 'current admins token balance'); + let usdtTokensToMint = web3.utils.toBN(tokensTotal) * 1e6; + const receiptUSDT = await usdt.MintERC20(userone, usdtTokensToMint, { + from: admin + }); + assert.equal(receiptUSDT.logs.length, 1, 'triggers one event'); + assert.equal(receiptUSDT.logs[0].event, 'Transfer', 'should be the Transfer event'); + assert.equal(receiptUSDT.logs[0].address, usdt.address, 'minted tokens are transferred from'); + + let userUsdtTokenBalanceAfter = await usdt.balanceOf(userone, { + from: admin + }); + assert.equal(userUsdtTokenBalanceAfter.toString(), usdtTokensToMint.toString(), 'admins token balance after mint'); + + //USDC + let userUsdcTokenBalanceBefore = await usdc.balanceOf(userone, { + from: admin + }); + assert.equal(userUsdcTokenBalanceBefore, 0, 'current admins token balance'); + + let usdcTokensToMint = web3.utils.toWei(web3.utils.toBN(tokensTotal)); + + const receiptUSDC = await usdc.MintERC20(userone, usdcTokensToMint, { + from: admin + }); + assert.equal(receiptUSDC.logs.length, 1, 'triggers one event'); + assert.equal(receiptUSDC.logs[0].event, 'Transfer', 'should be the Transfer event'); + assert.equal(receiptUSDC.logs[0].address, usdc.address, 'minted tokens are transferred from'); + + let userUsdcTokenBalanceAfter = await usdc.balanceOf(userone, { + from: admin + }); + assert.equal(userUsdcTokenBalanceAfter.toString(), usdcTokensToMint.toString(), 'admins token balance after mint'); + + //DAI + let userDaiTokenBalanceBefore = await dai.balanceOf(userone, { + from: admin + }); + assert.equal(userDaiTokenBalanceBefore, 0, 'current admins token balance'); + + let daiTokensToMint = web3.utils.toWei(web3.utils.toBN(tokensTotal)); + + const receiptDAI = await dai.MintERC20(userone, daiTokensToMint, { + from: admin + }); + assert.equal(receiptDAI.logs.length, 1, 'triggers one event'); + assert.equal(receiptDAI.logs[0].event, 'Transfer', 'should be the Transfer event'); + assert.equal(receiptDAI.logs[0].address, dai.address, 'minted tokens are transferred from'); + + let userDaiTokenBalanceAfter = await dai.balanceOf(userone, { + from: admin + }); + assert.equal(userDaiTokenBalanceAfter.toString(), daiTokensToMint.toString(), 'admins token balance after mint'); + + //MST + let userMstTokenBalanceBefore = await mst.balanceOf(userone, { + from: admin + }); + assert.equal(userMstTokenBalanceBefore, 0, 'current admins token balance'); + + let mstTokensToMint = web3.utils.toWei(web3.utils.toBN(tokensTotal)); + + const receiptMST = await mst.MintERC20(userone, mstTokensToMint, { + from: admin + }); + assert.equal(receiptMST.logs.length, 1, 'triggers one event'); + assert.equal(receiptMST.logs[0].event, 'Transfer', 'should be the Transfer event'); + assert.equal(receiptMST.logs[0].address, mst.address, 'minted tokens are transferred from'); + + let userMstTokenBalanceAfter = await mst.balanceOf(userone, { + from: admin + }); + assert.equal(userMstTokenBalanceAfter.toString(), mstTokensToMint.toString(), 'admins token balance after mint'); + + //WETH + let userWethTokenBalanceBefore = await weth.balanceOf(userone, { + from: admin + }); + assert.equal(userWethTokenBalanceBefore, 0, 'current admins token balance'); + + let wethTokensToMint = web3.utils.toWei(web3.utils.toBN(tokensTotal)); + + const receiptWETH = await weth.MintERC20(userone, wethTokensToMint, { + from: admin + }); + assert.equal(receiptWETH.logs.length, 1, 'triggers one event'); + assert.equal(receiptWETH.logs[0].event, 'Transfer', 'should be the Transfer event'); + assert.equal(receiptWETH.logs[0].address, weth.address, 'minted tokens are transferred from'); + + let userWethTokenBalanceAfter = await weth.balanceOf(userone, { + from: admin + }); + assert.equal(userWethTokenBalanceAfter.toString(), wethTokensToMint.toString(), 'admins token balance after mint'); + } + }); + + it('should create master copy with unlimit supply type', async () => { + const createItemUnlimit = await factory.createMasterItem(linkOne, desc, unlimit); + assert.equal(createItemUnlimit.receipt.logs.length, 1, 'triggers one event'); + assert.equal(createItemUnlimit.receipt.logs[0].event, 'CreateMasterItem', 'should be the CreateMasterItem event'); + + if (network == 'development' || network == 'ganache') { + midUnlimit = '1'; + } else { + midUnlimit = createItemUnlimit.receipt.logs[0].args.master_id; + } + + const firstLink = createItemUnlimit.receipt.logs[0].args.link; + assert(firstLink == linkOne); + + const mintUnlimitTokenOne = await nft.EmitItem(admin, midUnlimit, 0); + assert.equal(mintUnlimitTokenOne.receipt.logs.length, 2, 'triggers two events'); + assert.equal(mintUnlimitTokenOne.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); + assert.equal(mintUnlimitTokenOne.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); + tokenIdUnlimitOne = mintUnlimitTokenOne.receipt.logs[0].args.tokenId.toNumber(); + + const mintUnlimitTokenTwo = await nft.EmitItem(admin, midUnlimit, 0); + assert.equal(mintUnlimitTokenTwo.receipt.logs.length, 2, 'triggers two events'); + assert.equal(mintUnlimitTokenTwo.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); + assert.equal(mintUnlimitTokenTwo.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); + tokenIdUnlimitTwo = mintUnlimitTokenTwo.receipt.logs[0].args.tokenId.toNumber(); + + const mintUnlimitTokenThree = await nft.EmitItem(admin, midUnlimit, 0); + assert.equal(mintUnlimitTokenThree.receipt.logs.length, 2, 'triggers two events'); + assert.equal(mintUnlimitTokenThree.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); + assert.equal(mintUnlimitTokenThree.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); + tokenIdUnlimitThree = mintUnlimitTokenThree.receipt.logs[0].args.tokenId.toNumber(); + + const mintUnlimitTokenFour = await nft.EmitItem(admin, midUnlimit, 0); + assert.equal(mintUnlimitTokenFour.receipt.logs.length, 2, 'triggers two events'); + assert.equal(mintUnlimitTokenFour.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); + assert.equal(mintUnlimitTokenFour.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); + tokenIdUnlimitFour = mintUnlimitTokenFour.receipt.logs[0].args.tokenId.toNumber(); + }); + + it('should create master copy with unique supply type', async () => { + const createItemUnique = await factory.createMasterItem(linkTwo, desc, unique); + assert.equal(createItemUnique.receipt.logs.length, 1, 'triggers one event'); + assert.equal(createItemUnique.receipt.logs[0].event, 'CreateMasterItem', 'should be the CreateMasterItem event'); + + if (network == 'development' || network == 'ganache') { + midUnique = '2'; + } else { + midUnique = createItemUnique.receipt.logs[0].args.master_id; + } + + const uniqueLink = createItemUnique.receipt.logs[0].args.link; + assert(uniqueLink == linkTwo); + + const mintUniqueToken = await nft.EmitItem(admin, midUnique, 0); + assert.equal(mintUniqueToken.receipt.logs.length, 2, 'triggers two events'); + assert.equal(mintUniqueToken.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); + assert.equal(mintUniqueToken.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); + tokenIdUniue = mintUniqueToken.receipt.logs[0].args.tokenId.toNumber(); + }); + + // Unlimited cases + + //*****************************************/ + + it('should make buy offer to token with unlimit supply type without created sale and accept it by owner', async () => { + if (network == 'development' || network == 'ganache') { + //Set token price + const tokenMstPriceStr = '10'; + let tokenMstPrice = web3.utils.toWei(web3.utils.toBN(tokenMstPriceStr)); + const owner = await nft.ownerOf(tokenIdUnlimitOne); + assert.equal(owner, admin, "owned by admin"); + + // Approve mst tokens from userone to meta market address + const approveMstTokens = await mst.approve(mMarket.address, tokenMstPrice, { + from: userone + }); + assert.equal(approveMstTokens.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveMstTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(userone, approveMstTokens.logs[0].args.owner, 'must be owner'); + assert.equal(mMarket.address, approveMstTokens.logs[0].args.spender, 'must be spender'); + assert.equal(tokenMstPrice.toString(), approveMstTokens.logs[0].args.value.toString(), 'must be equal'); + + //Check approved value + const checkAllowance = await mst.allowance(userone, mMarket.address); + assert.equal(checkAllowance.toString(), tokenMstPrice.toString()); + + //Userone make buy offer + const saleoffer = await mMarket.makeBuyOffer(nft.address, tokenIdUnlimitOne, MST, tokenMstPrice, { + from: userone + }); + assert.equal(saleoffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(saleoffer.receipt.logs[0].event, 'NewBuyOffer', 'must be the NewBuyOffer event'); + assert.equal(tokenIdUnlimitOne, saleoffer.logs[0].args.tokenId, 'must be equal'); + assert.equal(userone, saleoffer.logs[0].args.buyer, 'offer must be called by userone'); + assert.equal(tokenMstPrice.toString(), saleoffer.logs[0].args.value.toString(), 'must be equal'); + + // Approve nft token from admin to meta market address + const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitOne, { + from: admin + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdUnlimitOne.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + //Check approved address + const approvedAddress = await nft.getApproved(tokenIdUnlimitOne); + assert.equal(mMarket.address, approvedAddress, 'must be equal'); + + const acceptOfferByOwner = await mMarket.acceptBuyOffer(nft.address, tokenIdUnlimitOne, MST, { + from: admin + }); + + assert.equal(acceptOfferByOwner.receipt.logs.length, 2, 'triggers two events'); + assert.equal(acceptOfferByOwner.receipt.logs[0].event, 'CalculatedFees', 'must be the CalculatedFees event'); + assert.equal(acceptOfferByOwner.receipt.logs[1].event, 'Sale', 'must be the Sale event'); + + const mMstBalance = await mst.balanceOf(mMarket.address); + const uMstBalance = await mst.balanceOf(userone); + const royaltyMstBalance = await mst.balanceOf(royaltyaddress); + const aMstBalance = await mst.balanceOf(admin); + + assert.equal(acceptOfferByOwner.receipt.logs[0].args.fees.toString(), royaltyMstBalance.toString(), 'must be equal'); + assert.equal(acceptOfferByOwner.receipt.logs[0].args.feeAddress, royaltyaddress,'must be admin address to get royalty'); + const authorBalance = acceptOfferByOwner.receipt.logs[0].args.transfered_amount - acceptOfferByOwner.receipt.logs[0].args.fees; + assert.equal(authorBalance.toString(), aMstBalance.toString(), 'must be equal'); + assert.equal(mMstBalance.toString(), 0, 'must be zero after buy offer acception'); + + assert.equal(acceptOfferByOwner.receipt.logs[1].args.nft_contract_, nft.address, 'must be nft contract address'); + assert.equal(acceptOfferByOwner.receipt.logs[1].args.tokenId, tokenIdUnlimitOne, 'must be equal'); + assert.equal(acceptOfferByOwner.receipt.logs[1].args.seller, admin, 'seller must be admin'); + assert.equal(acceptOfferByOwner.receipt.logs[1].args.buyer, userone, 'buyer must be userone'); + assert.equal(acceptOfferByOwner.receipt.logs[1].args.value.toString(), tokenMstPrice.toString(), 'must be equal'); + } + }); + + it('should withdraw buy offer with unlimit supply type without created sale', async () => { + if (network == 'development' || network == 'ganache') { + const tokenDaiPriceStr = '10'; + let tokenDaiPrice = web3.utils.toWei(web3.utils.toBN(tokenDaiPriceStr)); + const owner = await nft.ownerOf(tokenIdUnlimitTwo); + assert.equal(owner, admin, "owned by admin"); + + // Approve nft token from admin to meta market address + const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitTwo, {from: admin}); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'should be the Approval event'); + assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdUnlimitTwo.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + //Check approved address + const approvedAddress = await nft.getApproved(tokenIdUnlimitTwo); + assert.equal(mMarket.address, approvedAddress, 'must be equal'); + + // Approve mst tokens from userone to meta market address + const approveDaiTokens = await dai.approve(mMarket.address, tokenDaiPrice, { + from: userone + }); + assert.equal(approveDaiTokens.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveDaiTokens.receipt.logs[0].event, 'Approval', 'should be the Approval event'); + assert.equal(userone, approveDaiTokens.logs[0].args.owner, 'must be owner'); + assert.equal(mMarket.address, approveDaiTokens.logs[0].args.spender, 'must be spender'); + assert.equal(tokenDaiPrice.toString(), approveDaiTokens.logs[0].args.value.toString(), 'must be equal'); + + //Check approved value + const checkAllowance = await dai.allowance(userone, mMarket.address); + assert.equal(checkAllowance.toString(), tokenDaiPrice.toString()); + + //User make buy offer + const saleoffer = await mMarket.makeBuyOffer(nft.address, tokenIdUnlimitTwo, DAI, tokenDaiPrice, { + from: userone + }); + assert.equal(tokenIdUnlimitTwo, saleoffer.logs[0].args.tokenId, 'must be equal'); + assert.equal(userone, saleoffer.logs[0].args.buyer, 'offer must be called by userone'); + assert.equal(tokenDaiPrice.toString(), saleoffer.logs[0].args.value.toString(), 'must be equal'); + + await time.increase(time.duration.days(2)); + const withdrawBuyOffer = await mMarket.withdrawBuyOffer(nft.address, tokenIdUnlimitTwo, DAI, { + from: userone + }); + assert.equal(withdrawBuyOffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(withdrawBuyOffer.receipt.logs[0].event, 'BuyOfferWithdrawn', 'must be the BuyOfferWithdrawn event'); + assert.equal(tokenIdUnlimitTwo, withdrawBuyOffer.receipt.logs[0].args.tokenId, 'must be owner'); + assert.equal(userone, withdrawBuyOffer.receipt.logs[0].args.buyer, 'userone must be buyer'); + } + }); + + it('should make sell offer with unlimit supply type and withdraw it', async () => { + const tokenWethPriceStr = '10'; + let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); + const owner = await nft.ownerOf(tokenIdUnlimitThree); + assert.equal(owner, admin, "owned by admin"); + + const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitThree, { + from: admin + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'should be the Approval event'); + assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdUnlimitThree.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + const selloffer = await mMarket.makeSellOffer(tokenIdUnlimitThree, tokenWethPrice, nft.address, WETH, { + from: admin + }); + assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'should be the NewSellOffer event'); + assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); + assert.equal(admin, selloffer.logs[0].args.seller, 'admin must seller'); + assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); + + const withdrawselloffer = await mMarket.withdrawSellOffer(nft.address, tokenIdUnlimitThree, { + from: admin + }); + assert.equal(withdrawselloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(withdrawselloffer.receipt.logs[0].event, 'SellOfferWithdrawn', 'should be the SellOfferWithdrawn event'); + assert.equal(withdrawselloffer.receipt.logs[0].args.tokenId, tokenIdUnlimitThree, 'must be equal'); + assert.equal(withdrawselloffer.receipt.logs[0].args.seller, admin, 'seller must be admin'); + }); + + it('should make sell offer with unlimit supply type', async () => { + const tokenWethPriceStr = '10'; + let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); + const owner = await nft.ownerOf(tokenIdUnlimitThree); + assert.equal(owner, admin, "owned by admin"); + + const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitThree, { + from: admin + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'should be the Approval event'); + assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdUnlimitThree.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + const selloffer = await mMarket.makeSellOffer(tokenIdUnlimitThree, tokenWethPrice, nft.address, WETH, { + from: admin + }); + assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'should be the NewSellOffer event'); + assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); + assert.equal(admin, selloffer.logs[0].args.seller, 'admin must seller'); + assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); + + const approveWethTokens = await weth.approve(mMarket.address, tokenWethPrice, { + from: userone + }); + assert.equal(approveWethTokens.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveWethTokens.receipt.logs[0].event, 'Approval', 'should be the Approval event'); + assert.equal(userone, approveWethTokens.logs[0].args.owner, 'must be owner'); + assert.equal(mMarket.address, approveWethTokens.logs[0].args.spender, 'must be spender'); + assert.equal(tokenWethPrice.toString(), approveWethTokens.logs[0].args.value.toString(), 'must be equal'); + + //Check approved value + const checkAllowance = await weth.allowance(userone, mMarket.address); + assert.equal(checkAllowance.toString(), tokenWethPrice.toString()); + + const purchase = await mMarket.purchase(nft.address, tokenIdUnlimitThree, WETH, tokenWethPrice, { + from: userone + }); + + const mWethBalance = await weth.balanceOf(mMarket.address); + const uMstBalance = await weth.balanceOf(userone); + const royaltyWethBalance = await weth.balanceOf(royaltyaddress); + const aWethBalance = await weth.balanceOf(admin); + + assert.equal(purchase.receipt.logs.length, 2, 'triggers one events'); + assert.equal(purchase.receipt.logs[0].event, 'CalculatedFees', 'should be the CalculatedFees event'); + assert.equal(purchase.receipt.logs[0].args.fees.toString(), royaltyWethBalance.toString(), 'should be the CalculatedFees event'); + assert.equal(purchase.receipt.logs[0].args.feeAddress, royaltyaddress, 'should be the CalculatedFees event'); + + const authorBalance = purchase.receipt.logs[0].args.transfered_amount - purchase.receipt.logs[0].args.fees; + assert.equal(authorBalance.toString(), aWethBalance.toString(), 'must be equal'); + assert.equal(mWethBalance.toString(), 0, 'must be zero after buy offer acception'); + + assert.equal(purchase.receipt.logs[1].event, 'Sale', 'should be the Sale event'); + assert.equal(purchase.receipt.logs[1].args.nft_contract_, nft.address, 'must be nft contract address'); + assert.equal(purchase.receipt.logs[1].args.tokenId, tokenIdUnlimitThree, 'must be equal'); + assert.equal(purchase.receipt.logs[1].args.seller, admin, 'seller must be admin'); + assert.equal(purchase.receipt.logs[1].args.buyer, userone, 'buyer must be userone'); + assert.equal(purchase.receipt.logs[1].args.value.toString(), tokenWethPrice.toString(), 'must be equal'); + + }); + + it('should make sell offer with unlimit supply type by new owner and withdraw it', async () => { + const tokenWethPriceStr = '2'; + let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); + const owner = await nft.ownerOf(tokenIdUnlimitThree); + assert.equal(owner, userone, "owned by userone"); + + const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitThree, { + from: userone + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'should be the Approval event'); + assert.equal(userone, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdUnlimitThree.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + const selloffer = await mMarket.makeSellOffer(tokenIdUnlimitThree, tokenWethPrice, nft.address, WETH, { + from: userone + }); + assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'should be the NewSellOffer event'); + assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); + assert.equal(userone, selloffer.logs[0].args.seller, 'userone must seller'); + assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); + + // const approveUsdcTokens = await usdc.approve(mMarket.address, tokenUsdcPrice, { + // from: admin + // }); + // assert.equal(approveUsdcTokens.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(approveUsdcTokens.receipt.logs[0].event, 'Approval', 'should be the Approval event'); + // assert.equal(admin, approveUsdcTokens.logs[0].args.owner, 'must be owner'); + // assert.equal(mMarket.address, approveUsdcTokens.logs[0].args.spender, 'must be spender'); + // assert.equal(tokenUsdcPrice.toString(), approveUsdcTokens.logs[0].args.value.toString(), 'must be equal'); + + //Check approved value + // const checkAllowance = await usdc.allowance(admin, mMarket.address); + // assert.equal(checkAllowance.toString(), tokenUsdcPrice.toString()); + + const withdrawselloffer = await mMarket.withdrawSellOffer(nft.address, tokenIdUnlimitThree, { + from: userone + }); + assert.equal(withdrawselloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(withdrawselloffer.receipt.logs[0].event, 'SellOfferWithdrawn', 'should be the SellOfferWithdrawn event'); + + }); + + it('should make sell offer with unlimit supply type by new owner', async () => { + const tokenWethPriceStr = '2'; + let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); + const owner = await nft.ownerOf(tokenIdUnlimitThree); + assert.equal(owner, userone, "owned by userone"); + + const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitThree, { + from: userone + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'should be the Approval event'); + assert.equal(userone, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdUnlimitThree.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + const approveUsdcTokens = await weth.approve(mMarket.address, tokenWethPrice, { + from: admin + }); + assert.equal(approveUsdcTokens.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveUsdcTokens.receipt.logs[0].event, 'Approval', 'should be the Approval event'); + assert.equal(admin, approveUsdcTokens.logs[0].args.owner, 'must be owner'); + assert.equal(mMarket.address, approveUsdcTokens.logs[0].args.spender, 'must be spender'); + assert.equal(tokenWethPrice.toString(), approveUsdcTokens.logs[0].args.value.toString(), 'must be equal'); + //Check approved value + const checkAllowance = await weth.allowance(admin, mMarket.address); + assert.equal(checkAllowance.toString(), tokenWethPrice.toString()); + + const selloffer = await mMarket.makeSellOffer(tokenIdUnlimitThree, tokenWethPrice, nft.address, WETH, { + from: userone + }); + assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'should be the NewSellOffer event'); + assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); + assert.equal(userone, selloffer.logs[0].args.seller, 'userone must seller'); + assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); + + const purchase = await mMarket.purchase(nft.address, tokenIdUnlimitThree, WETH, tokenWethPrice, { + from: admin + }); + assert.equal(purchase.receipt.logs.length, 2, 'triggers one events'); + assert.equal(purchase.receipt.logs[0].event, 'CalculatedFees', 'should be the CalculatedFees event'); + assert.equal(purchase.receipt.logs[1].event, 'Sale', 'should be the Sale event'); + + }); + + + + // Unique cases + + + //*****************************************/ + + + it('should make buy offer to token with unique supply type without created sale and accept it by owner', async () => { + if (network == 'development' || network == 'ganache') { + //Set token price + const tokenMstPriceStr = '10'; + let tokenMstPrice = web3.utils.toWei(web3.utils.toBN(tokenMstPriceStr)); + const owner = await nft.ownerOf(tokenIdUniue); + assert.equal(owner, admin, "owned by admin"); + + // Approve mst tokens from userone to meta market address + const approveMstTokens = await mst.approve(mMarket.address, tokenMstPrice, { + from: userone + }); + assert.equal(approveMstTokens.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveMstTokens.receipt.logs[0].event, 'Approval', 'should be the Approval event'); + assert.equal(userone, approveMstTokens.logs[0].args.owner, 'must be owner'); + assert.equal(mMarket.address, approveMstTokens.logs[0].args.spender, 'must be spender'); + assert.equal(tokenMstPrice.toString(), approveMstTokens.logs[0].args.value.toString(), 'must be equal'); + + //Check approved value + const checkAllowance = await mst.allowance(userone, mMarket.address); + assert.equal(checkAllowance.toString(), tokenMstPrice.toString()); + + //Userone make buy offer + const saleoffer = await mMarket.makeBuyOffer(nft.address, tokenIdUniue, MST, tokenMstPrice, { + from: userone + }); + assert.equal(saleoffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(saleoffer.receipt.logs[0].event, 'NewBuyOffer', 'should be the NewBuyOffer event'); + assert.equal(tokenIdUniue, saleoffer.logs[0].args.tokenId, 'must be equal'); + assert.equal(userone, saleoffer.logs[0].args.buyer, 'offer must be called by userone'); + assert.equal(tokenMstPrice.toString(), saleoffer.logs[0].args.value.toString(), 'must be equal'); + + // Approve nft token from admin to meta market address + const approveNftToken = await nft.approve(mMarket.address, tokenIdUniue, { + from: admin + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'should be the Approval event'); + assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdUniue.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + //Check approved address + const approvedAddress = await nft.getApproved(tokenIdUniue); + assert.equal(mMarket.address, approvedAddress, 'must be equal'); + + const acceptOfferByOwner = await mMarket.acceptBuyOffer(nft.address, tokenIdUniue, MST, { + from: admin + }); + + assert.equal(acceptOfferByOwner.receipt.logs.length, 2, 'triggers two events'); + assert.equal(acceptOfferByOwner.receipt.logs[0].event, 'CalculatedFees', 'must be the CalculatedFees event'); + assert.equal(acceptOfferByOwner.receipt.logs[1].event, 'Sale', 'must be the Sale event'); + + const mMstBalance = await mst.balanceOf(mMarket.address); + const royaltyMstBalance = await mst.balanceOf(royaltyaddress); + + assert.equal(acceptOfferByOwner.receipt.logs[0].args.fees.toString(), (royaltyMstBalance/2).toString(), 'must be equal'); + assert.equal(acceptOfferByOwner.receipt.logs[0].args.feeAddress, royaltyaddress,'must be admin address to get royalty'); + assert.equal(mMstBalance.toString(), 0, 'must be zero after buy offer acception'); + + assert.equal(acceptOfferByOwner.receipt.logs[1].args.nft_contract_, nft.address, 'must be nft contract address'); + assert.equal(acceptOfferByOwner.receipt.logs[1].args.tokenId, tokenIdUniue, 'must be equal'); + assert.equal(acceptOfferByOwner.receipt.logs[1].args.seller, admin, 'seller must be admin'); + assert.equal(acceptOfferByOwner.receipt.logs[1].args.buyer, userone, 'buyer must be userone'); + assert.equal(acceptOfferByOwner.receipt.logs[1].args.value.toString(), tokenMstPrice.toString(), 'must be equal'); + } + }); + + + it('should make sell offer with unique supply type and withdraw it', async () => { + const tokenWethPriceStr = '10'; + let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); + const owner = await nft.ownerOf(tokenIdUniue); + assert.equal(owner, userone, "owned by admin"); + + const approveNftToken = await nft.approve(mMarket.address, tokenIdUniue, { + from: userone + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'should be the Approval event'); + assert.equal(userone, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdUniue.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + const selloffer = await mMarket.makeSellOffer(tokenIdUniue, tokenWethPrice, nft.address, WETH, { + from: userone + }); + assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'should be the NewSellOffer event'); + assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); + assert.equal(userone, selloffer.logs[0].args.seller, 'admin must seller'); + assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); + + const withdrawselloffer = await mMarket.withdrawSellOffer(nft.address, tokenIdUniue, { + from: userone + }); + assert.equal(withdrawselloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(withdrawselloffer.receipt.logs[0].event, 'SellOfferWithdrawn', 'should be the SellOfferWithdrawn event'); + }); + + it('should make sell offer with unique supply type', async () => { + const tokenWethPriceStr = '1'; + let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); + const owner = await nft.ownerOf(tokenIdUniue); + assert.equal(owner, userone, "owned by admin"); + + const approveNftToken = await nft.approve(mMarket.address, tokenIdUniue, { + from: userone + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'should be the Approval event'); + assert.equal(userone, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdUniue.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + const selloffer = await mMarket.makeSellOffer(tokenIdUniue, tokenWethPrice, nft.address, WETH, { + from: userone + }); + assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'should be the NewSellOffer event'); + assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); + assert.equal(userone, selloffer.logs[0].args.seller, 'admin must seller'); + assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); + + const approveWethTokens = await weth.approve(mMarket.address, tokenWethPrice, { + from: admin + }); + assert.equal(approveWethTokens.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveWethTokens.receipt.logs[0].event, 'Approval', 'should be the Approval event'); + assert.equal(admin, approveWethTokens.logs[0].args.owner, 'must be owner'); + assert.equal(mMarket.address, approveWethTokens.logs[0].args.spender, 'must be spender'); + assert.equal(tokenWethPrice.toString(), approveWethTokens.logs[0].args.value.toString(), 'must be equal'); + + //Check approved value + const checkAllowance = await weth.allowance(admin, mMarket.address); + assert.equal(checkAllowance.toString(), tokenWethPrice.toString()); + + const uBalanceBefore = await weth.balanceOf(admin); + + console.log(uBalanceBefore.toString()); + const purchase = await mMarket.purchase(nft.address, tokenIdUniue, WETH, tokenWethPrice, { + from: admin + }); + assert.equal(purchase.receipt.logs.length, 2, 'triggers one events'); + assert.equal(purchase.receipt.logs[0].event, 'CalculatedFees', 'should be the CalculatedFees event'); + assert.equal(purchase.receipt.logs[1].event, 'Sale', 'should be the Sale event'); + }); + +}); \ No newline at end of file diff --git a/test/metaMarketplaceNftTemplate.js b/test/metaMarketplaceNftTemplate.js new file mode 100644 index 0000000..cde1934 --- /dev/null +++ b/test/metaMarketplaceNftTemplate.js @@ -0,0 +1,243 @@ +const MasterFactory721 = artifacts.require('MasterFactory721'); +const NftTemplate = artifacts.require('NftTemplate'); +const USDTcontract = artifacts.require('TestUSDT'); +const USDCcontract = artifacts.require('USDC'); +const DAIcontract = artifacts.require('DAI'); +const MSTcontract = artifacts.require('MST'); +const WETHcontract = artifacts.require('WETH'); +const MetaMarketplace = artifacts.require('MetaMarketplace'); + +const { + time +} = require('@openzeppelin/test-helpers'); + +function makeRandomLink(length) { + let result = ''; + let characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; + let charactersLength = characters.length; + for (let i = 0; i < length; i++) { + result += characters.charAt(Math.floor(Math.random() * + charactersLength)); + } + return result; +} + +contract('MetaMarketplace', accounts => { + let factory, nft, mst, mMarket; + let network; + let tokenIdUnlimitOne, tokenIdUnlimitTwo, tokenIdUnlimitThree, tokenIdLimit, tokenIdUniue; + let admin, userone, royaltyaddress, userthree; + const desc = 'Lorem ipsum dolor sit amet'; + let linkOne, linkTwo, linkThree; + let midUnique, midLimited; + let tokensTotal = '100'; + const [unique, limited, unlimit] = [1, 2, 0]; + const [MoonShard, Enum, Meta, Common] = [0, 1, 2, 3]; + const [USDT, USDC, DAI, MST, WETH] = [0, 1, 2, 3, 4]; + before(async () => { + factory = await MasterFactory721.deployed(); + nft = await NftTemplate.deployed(); + mMarket = await MetaMarketplace.deployed(); + linkOne = 'https://google.com/' + makeRandomLink(20); + linkTwo = 'https://google.com/' + makeRandomLink(20); + linkThree = 'https://google.com/' + makeRandomLink(20); + network = process.env.NETWORK; + mst = await MSTcontract.deployed(); + if (network == 'development' || network == 'ganache') { + usdt = await USDTcontract.deployed(); + usdc = await USDCcontract.deployed(); + dai = await DAIcontract.deployed(); + weth = await WETHcontract.deployed(); + admin = accounts[0]; + royaltyaddress = accounts[1]; + userone = accounts[2]; + } else { + admin = '0xF87F1eaa6Fd9B65bF41F90afEdF8B64D6487F61E'; + userone = '0x1b7C81DbAF6f34E878686CE6FA9463c48E2185C7'; + } + }); + + it('should fill balances', async () => { + if (network == 'development' || network == 'ganache') { + //USDT + let userUsdtTokenBalanceBefore = await usdt.balanceOf(userone, { + from: admin + }); + assert.equal(userUsdtTokenBalanceBefore, 0, 'current admins token balance'); + let usdtTokensToMint = web3.utils.toBN(tokensTotal) * 1e6; + const receiptUSDT = await usdt.MintERC20(userone, usdtTokensToMint, { + from: admin + }); + assert.equal(receiptUSDT.logs.length, 1, 'triggers one event'); + assert.equal(receiptUSDT.logs[0].event, 'Transfer', 'should be the Transfer event'); + assert.equal(receiptUSDT.logs[0].address, usdt.address, 'minted tokens are transferred from'); + + let userUsdtTokenBalanceAfter = await usdt.balanceOf(userone, { + from: admin + }); + assert.equal(userUsdtTokenBalanceAfter.toString(), usdtTokensToMint.toString(), 'admins token balance after mint'); + + //USDC + let userUsdcTokenBalanceBefore = await usdc.balanceOf(userone, { + from: admin + }); + assert.equal(userUsdcTokenBalanceBefore, 0, 'current admins token balance'); + + let usdcTokensToMint = web3.utils.toWei(web3.utils.toBN(tokensTotal)); + + const receiptUSDC = await usdc.MintERC20(userone, usdcTokensToMint, { + from: admin + }); + assert.equal(receiptUSDC.logs.length, 1, 'triggers one event'); + assert.equal(receiptUSDC.logs[0].event, 'Transfer', 'should be the Transfer event'); + assert.equal(receiptUSDC.logs[0].address, usdc.address, 'minted tokens are transferred from'); + + let userUsdcTokenBalanceAfter = await usdc.balanceOf(userone, { + from: admin + }); + assert.equal(userUsdcTokenBalanceAfter.toString(), usdcTokensToMint.toString(), 'admins token balance after mint'); + + //DAI + let userDaiTokenBalanceBefore = await dai.balanceOf(userone, { + from: admin + }); + assert.equal(userDaiTokenBalanceBefore, 0, 'current admins token balance'); + + let daiTokensToMint = web3.utils.toWei(web3.utils.toBN(tokensTotal)); + + const receiptDAI = await dai.MintERC20(userone, daiTokensToMint, { + from: admin + }); + assert.equal(receiptDAI.logs.length, 1, 'triggers one event'); + assert.equal(receiptDAI.logs[0].event, 'Transfer', 'should be the Transfer event'); + assert.equal(receiptDAI.logs[0].address, dai.address, 'minted tokens are transferred from'); + + let userDaiTokenBalanceAfter = await dai.balanceOf(userone, { + from: admin + }); + assert.equal(userDaiTokenBalanceAfter.toString(), daiTokensToMint.toString(), 'admins token balance after mint'); + + //MST + let userMstTokenBalanceBefore = await mst.balanceOf(userone, { + from: admin + }); + assert.equal(userMstTokenBalanceBefore, 0, 'current admins token balance'); + + let mstTokensToMint = web3.utils.toWei(web3.utils.toBN(tokensTotal)); + + const receiptMST = await mst.MintERC20(userone, mstTokensToMint, { + from: admin + }); + assert.equal(receiptMST.logs.length, 1, 'triggers one event'); + assert.equal(receiptMST.logs[0].event, 'Transfer', 'should be the Transfer event'); + assert.equal(receiptMST.logs[0].address, mst.address, 'minted tokens are transferred from'); + + let userMstTokenBalanceAfter = await mst.balanceOf(userone, { + from: admin + }); + assert.equal(userMstTokenBalanceAfter.toString(), mstTokensToMint.toString(), 'admins token balance after mint'); + + //WETH + let userWethTokenBalanceBefore = await weth.balanceOf(userone, { + from: admin + }); + assert.equal(userWethTokenBalanceBefore, 0, 'current admins token balance'); + + let wethTokensToMint = web3.utils.toWei(web3.utils.toBN(tokensTotal)); + + const receiptWETH = await weth.MintERC20(userone, wethTokensToMint, { + from: admin + }); + assert.equal(receiptWETH.logs.length, 1, 'triggers one event'); + assert.equal(receiptWETH.logs[0].event, 'Transfer', 'should be the Transfer event'); + assert.equal(receiptWETH.logs[0].address, weth.address, 'minted tokens are transferred from'); + + let userWethTokenBalanceAfter = await weth.balanceOf(userone, { + from: admin + }); + assert.equal(userWethTokenBalanceAfter.toString(), wethTokensToMint.toString(), 'admins token balance after mint'); + } + }); + it('should create nft', async () => { + + const createItemUnlimit = await nft.mintNft(admin); + const tokenId = createItemUnlimit.logs[1].args.tokenId; + console.log(createItemUnlimit.logs[0].args); + console.log(createItemUnlimit.logs[1].args.tokenId); + + const balance = await nft.balanceOf(admin); + console.log(balance.toString()); + + //Set token price + const tokenMstPriceStr = '2'; + let tokenMstPrice = web3.utils.toWei(web3.utils.toBN(tokenMstPriceStr)); + const owner = await nft.ownerOf(tokenId); + assert.equal(owner, admin, "owned by admin"); + + await mMarket.SetUpMarketplace(nft.address, Enum); + + // Approve mst tokens from userone to meta market address + const approveMstTokens = await mst.approve(mMarket.address, tokenMstPrice, { + from: userone + }); + assert.equal(approveMstTokens.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveMstTokens.receipt.logs[0].event, 'Approval', 'should be the Approval event'); + assert.equal(userone, approveMstTokens.logs[0].args.owner, 'must be owner'); + assert.equal(mMarket.address, approveMstTokens.logs[0].args.spender, 'must be spender'); + assert.equal(tokenMstPrice.toString(), approveMstTokens.logs[0].args.value.toString(), 'must be equal'); + + //Check approved value + const checkAllowance = await mst.allowance(userone, mMarket.address); + assert.equal(checkAllowance.toString(), tokenMstPrice.toString()); + + //Userone make buy offer + const saleoffer = await mMarket.makeBuyOffer(nft.address, tokenId, MST, tokenMstPrice, { + from: userone + }); + + assert.equal(saleoffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(saleoffer.receipt.logs[0].event, 'NewBuyOffer', 'should be the NewBuyOffer event'); + assert.equal(tokenId.toString(), saleoffer.logs[0].args.tokenId.toString(), 'must be equal'); + assert.equal(userone, saleoffer.logs[0].args.buyer, 'offer must be called by userone'); + assert.equal(tokenMstPrice.toString(), saleoffer.logs[0].args.value.toString(), 'must be equal'); + + const approveNftToken = await nft.approve(mMarket.address, tokenId, { + from: admin + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'should be the Approval event'); + assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenId.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + //Check approved address + const approvedAddress = await nft.getApproved(tokenId); + assert.equal(mMarket.address, approvedAddress, 'must be equal'); + + const acceptOfferByOwner = await mMarket.acceptBuyOffer(nft.address, tokenId, MST, { + from: admin + }); + + const mMstBalance = await mst.balanceOf(mMarket.address); + const royaltyMstBalance = await mst.balanceOf(royaltyaddress); + const aMstBalance = await mst.balanceOf(admin); + + assert.equal(acceptOfferByOwner.receipt.logs.length, 2, 'triggers two events'); + assert.equal(acceptOfferByOwner.receipt.logs[0].event, 'CalculatedFees', 'should be the CalculatedFees event'); + assert.equal(acceptOfferByOwner.receipt.logs[1].event, 'Sale', 'should be the Sale event'); + + assert.equal(acceptOfferByOwner.receipt.logs[0].args.fees.toString(), royaltyMstBalance.toString(), 'must be equal'); + assert.equal(acceptOfferByOwner.receipt.logs[0].args.feeAddress, royaltyaddress, 'must be admin address to get royalty'); + const authorBalance = acceptOfferByOwner.receipt.logs[0].args.transfered_amount - acceptOfferByOwner.receipt.logs[0].args.fees; + assert.equal(authorBalance.toString(), aMstBalance.toString(), 'must be equal'); + assert.equal(mMstBalance.toString(), 0, 'must be zero after buy offer acception'); + + const expectedTokenId = acceptOfferByOwner.receipt.logs[1].args.tokenId; + assert.equal(acceptOfferByOwner.receipt.logs[1].args.nft_contract_, nft.address, 'must be nft contract address'); + // assert.equal(expectedTokenId, tokenId, 'must be equal'); + assert.equal(acceptOfferByOwner.receipt.logs[1].args.seller, admin, 'seller must be admin'); + assert.equal(acceptOfferByOwner.receipt.logs[1].args.buyer, userone, 'buyer must be userone'); + assert.equal(acceptOfferByOwner.receipt.logs[1].args.value.toString(), tokenMstPrice.toString(), 'must be equal'); + }); + +}); \ No newline at end of file From 47aa40ea1da319a0f9e605af721f567b0a716957 Mon Sep 17 00:00:00 2001 From: Bekket Date: Thu, 9 Dec 2021 02:27:26 +0300 Subject: [PATCH 20/38] override transfers --- contracts/721/singleton/MSNFT.sol | 107 ++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) diff --git a/contracts/721/singleton/MSNFT.sol b/contracts/721/singleton/MSNFT.sol index f19adb5..f08f33a 100644 --- a/contracts/721/singleton/MSNFT.sol +++ b/contracts/721/singleton/MSNFT.sol @@ -363,7 +363,114 @@ contract MSNFT is ERC721Enumerable, Ownable { } + //override all transfers + + function transferFrom( + address from, + address to, + uint256 tokenId + ) public virtual override { + //solhint-disable-next-line max-line-length + // require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); + // _transfer(from, to, tokenId); + + super.transferFrom(from,to,tokenId); + updateAuthorsip(tokenId); + } + + /** + * @dev See {IERC721-safeTransferFrom}. + */ + function safeTransferFrom( + address from, + address to, + uint256 tokenId + ) public virtual override { + // safeTransferFrom(from, to, tokenId, ""); + super.safeTransferFrom(from,to,tokenId); + updateAuthorsip(tokenId); + } + + /** + * @dev See {IERC721-safeTransferFrom}. + */ + function safeTransferFrom( + address from, + address to, + uint256 tokenId, + bytes memory _data + ) public virtual override { + // require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); + // _safeTransfer(from, to, tokenId, _data); + super.safeTransferFrom(from,to,tokenId, _data); + updateAuthorsip(tokenId); + } + /** + * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients + * are aware of the ERC721 protocol to prevent tokens from being forever locked. + * + * `_data` is additional data, it has no specified format and it is sent in call to `to`. + * + * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. + * implement alternative mechanisms to perform token transfer, such as signature-based. + * + * Requirements: + * + * - `from` cannot be the zero address. + * - `to` cannot be the zero address. + * - `tokenId` token must exist and be owned by `from`. + * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. + * + * Emits a {Transfer} event. + */ + function _safeTransfer( + address from, + address to, + uint256 tokenId, + bytes memory _data + ) internal virtual override { + // _transfer(from, to, tokenId); + // require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); + super._safeTransfer(from,to,tokenId,_data); + updateAuthorsip(tokenId); + } + + /** + * @dev Transfers `tokenId` from `from` to `to`. + * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. + * + * Requirements: + * + * - `to` cannot be the zero address. + * - `tokenId` token must be owned by `from`. + * + * Emits a {Transfer} event. + */ + function _transfer( + address from, + address to, + uint256 tokenId + ) internal virtual override { + /* + require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); + require(to != address(0), "ERC721: transfer to the zero address"); + + _beforeTokenTransfer(from, to, tokenId); + + // Clear approvals from the previous owner + _approve(address(0), tokenId); + + _balances[from] -= 1; + _balances[to] += 1; + _owners[tokenId] = to; + + emit Transfer(from, to, tokenId); + */ + + super._transfer(from,to,tokenId); + updateAuthorsip(tokenId); + } // This function is burning tokens. From 229dd9208dffdb2c56dae86bf7f1d7ba3901e411 Mon Sep 17 00:00:00 2001 From: Bekket Date: Thu, 9 Dec 2021 02:31:57 +0300 Subject: [PATCH 21/38] clean --- contracts/721/singleton/MSNFT.sol | 65 ++----------------------------- 1 file changed, 4 insertions(+), 61 deletions(-) diff --git a/contracts/721/singleton/MSNFT.sol b/contracts/721/singleton/MSNFT.sol index f08f33a..885431e 100644 --- a/contracts/721/singleton/MSNFT.sol +++ b/contracts/721/singleton/MSNFT.sol @@ -363,17 +363,13 @@ contract MSNFT is ERC721Enumerable, Ownable { } - //override all transfers + //override all token transfers, to update authorship automatically function transferFrom( address from, address to, uint256 tokenId ) public virtual override { - //solhint-disable-next-line max-line-length - // require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); - // _transfer(from, to, tokenId); - super.transferFrom(from,to,tokenId); updateAuthorsip(tokenId); } @@ -386,7 +382,6 @@ contract MSNFT is ERC721Enumerable, Ownable { address to, uint256 tokenId ) public virtual override { - // safeTransferFrom(from, to, tokenId, ""); super.safeTransferFrom(from,to,tokenId); updateAuthorsip(tokenId); } @@ -400,29 +395,13 @@ contract MSNFT is ERC721Enumerable, Ownable { uint256 tokenId, bytes memory _data ) public virtual override { - // require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved"); - // _safeTransfer(from, to, tokenId, _data); + super.safeTransferFrom(from,to,tokenId, _data); updateAuthorsip(tokenId); } /** - * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients - * are aware of the ERC721 protocol to prevent tokens from being forever locked. - * - * `_data` is additional data, it has no specified format and it is sent in call to `to`. - * - * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g. - * implement alternative mechanisms to perform token transfer, such as signature-based. - * - * Requirements: - * - * - `from` cannot be the zero address. - * - `to` cannot be the zero address. - * - `tokenId` token must exist and be owned by `from`. - * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. - * - * Emits a {Transfer} event. + * @dev See ERC721 _safeTransfer() */ function _safeTransfer( address from, @@ -430,44 +409,18 @@ contract MSNFT is ERC721Enumerable, Ownable { uint256 tokenId, bytes memory _data ) internal virtual override { - // _transfer(from, to, tokenId); - // require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer"); super._safeTransfer(from,to,tokenId,_data); updateAuthorsip(tokenId); } /** - * @dev Transfers `tokenId` from `from` to `to`. - * As opposed to {transferFrom}, this imposes no restrictions on msg.sender. - * - * Requirements: - * - * - `to` cannot be the zero address. - * - `tokenId` token must be owned by `from`. - * - * Emits a {Transfer} event. + * @dev See ERC721 _transfer() */ function _transfer( address from, address to, uint256 tokenId ) internal virtual override { - /* - require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own"); - require(to != address(0), "ERC721: transfer to the zero address"); - - _beforeTokenTransfer(from, to, tokenId); - - // Clear approvals from the previous owner - _approve(address(0), tokenId); - - _balances[from] -= 1; - _balances[to] += 1; - _owners[tokenId] = to; - - emit Transfer(from, to, tokenId); - */ - super._transfer(from,to,tokenId); updateAuthorsip(tokenId); } @@ -504,16 +457,6 @@ contract MSNFT is ERC721Enumerable, Ownable { */ - - - - // Gets the list of token IDs of the requested owner. - // function _tokensOfOwner(address owner) internal view override(ERC721Enumerable) returns (uint256[] storage) { - // return super._ownedTokens[owner]; - // } - - - /** * @dev get itemSale contract address template */ From 41acfb4a6e71514679ea26b6dfa129711af2a23a Mon Sep 17 00:00:00 2001 From: Bekket Date: Thu, 9 Dec 2021 02:46:27 +0300 Subject: [PATCH 22/38] upd docs commentary and some cleanup --- contracts/721/singleton/MSNFT.sol | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/contracts/721/singleton/MSNFT.sol b/contracts/721/singleton/MSNFT.sol index 885431e..22dbfa4 100644 --- a/contracts/721/singleton/MSNFT.sol +++ b/contracts/721/singleton/MSNFT.sol @@ -5,7 +5,6 @@ import "../../../node_modules/@openzeppelin/contracts/token/ERC721/extensions/ER //import "../../../node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol"; //import "../../../node_modules/@openzeppelin/contracts/token/ERC721/presets/ERC721PresetMinterPauserAutoId.sol"; import "../../../node_modules/@openzeppelin/contracts/utils/Counters.sol"; -//import "../../../node_modules/@openzeppelin/contracts/utils/math/SafeMath.sol"; import "../../../node_modules/@openzeppelin/contracts/access/Ownable.sol"; @@ -140,7 +139,6 @@ contract MSNFT is ERC721Enumerable, Ownable { address author; RarityType rarity; - // @todo rename it uint i_totalSupply; // 0 means infinite, this variable can be used as maximum positionOrder for limited rarity type // ACTUAL total supply for specific mastercopy can be getted as itemIds[master_id].lenght @@ -343,15 +341,19 @@ contract MSNFT is ERC721Enumerable, Ownable { } - /* - // transfer authorship of mastercopy - function transferAuthorship() public { - - } + /** + * @dev transfer authorship of mastercopy. authorship allow getting royalties from MetaMarketplace. There are no restriction to rarity type */ + function transferAuthorship(uint master_id_) public { + require(authors[master_id_] == msg.sender, "MSNFT: you are not author of this master_id"); + authors[master_id_] = payable(msg.sender); + } + - // update authorship for unique rarity token (setting owner of token to author) - function updateAuthorsip(uint tokenId) public { + /** + * @dev update authorship for *unique* rarity token (setting owner of token to author) + */ + function updateAuthorsip(uint tokenId) internal { uint _master_id = ItemToMaster[tokenId]; RarityType rarity_ = get_rarity(_master_id); @@ -363,7 +365,7 @@ contract MSNFT is ERC721Enumerable, Ownable { } - //override all token transfers, to update authorship automatically + //override all token transfers, to update authorship automatically if appliciable function transferFrom( address from, @@ -492,7 +494,9 @@ contract MSNFT is ERC721Enumerable, Ownable { } /** - * @dev get masterIds array for specific author address + * @dev get masterIds array for specific creator address + * IMPORTANT -- author_masterids contain only *originally* created master_ids. If authorsip is changed there are no updates in this array + * to get *current* authorship of a token use get_author_by_token_id or get_author */ function getMasterIdByAuthor(address _creator) public view returns (uint[] memory) { return author_masterids[_creator]; From 6f0d5a90183dfb6920347c944205e09360b4e8f2 Mon Sep 17 00:00:00 2001 From: daseinsucks Date: Fri, 10 Dec 2021 01:26:57 +0300 Subject: [PATCH 23/38] add interface for MSNFT --- contracts/721/singleton/IMSNFT.sol | 208 ++++++++++++++++++ .../721/singleton/ITokenSaleSingleton.sol | 4 +- contracts/721/singleton/MSNFT.sol | 2 +- 3 files changed, 210 insertions(+), 4 deletions(-) create mode 100644 contracts/721/singleton/IMSNFT.sol diff --git a/contracts/721/singleton/IMSNFT.sol b/contracts/721/singleton/IMSNFT.sol new file mode 100644 index 0000000..c84176f --- /dev/null +++ b/contracts/721/singleton/IMSNFT.sol @@ -0,0 +1,208 @@ +//SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.0; + +import "../../../node_modules/@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol"; +//import "../../../node_modules/@openzeppelin/contracts/token/ERC721/ERC721.sol"; +//import "../../../node_modules/@openzeppelin/contracts/token/ERC721/presets/ERC721PresetMinterPauserAutoId.sol"; +import "../../../node_modules/@openzeppelin/contracts/utils/Counters.sol"; +import "../../../node_modules/@openzeppelin/contracts/access/Ownable.sol"; + + // Rarity type + /** + * @dev Rarity type of token + * @param Unique -- only one token can exist. use this type for something unique. high gas costs. + * @param Limited -- there are limited number of tokens . use this type for multy-asset nft (erc-1155 like). safe gas costs + * @param Unlimited -- there are unlimited number of tokens. use this when you want to sell 'clones' of your assets. so cheap that even you can afford it + */ + enum RarityType {Unique, Limited, Unlimited} + + + /** + * Item information + * @dev ItemInfo contains meta information about Master/Item. + * @param ipfs_link -- unique link to a ipfs + * @param author -- address of author + * @param rarity -- rarity of an item, see RarityType + * @param i_totalSupply -- it is not a total supply. total supply of a token is itemIds[mater_id].lenght + */ + struct ItemInfo + { + string ipfs_link; + + string description; + address author; + RarityType rarity; + + uint i_totalSupply; // 0 means infinite, this variable can be used as maximum positionOrder for limited rarity type + // ACTUAL total supply for specific mastercopy can be getted as itemIds[master_id].lenght + + } + + +interface IMSNFT { + + /** + * @dev Events about buying item. events named *Human stands for human readability + * @param buyer -- user who buy item + * @param master_id -- unique id of mastercopy + * @param item_id -- unique id of item + */ + event ItemBought(address indexed buyer,uint256 indexed master_id, uint256 indexed item_id); + event ItemBoughtHuman(address buyer,uint256 master_id, uint256 item_id); + + //Mint new token + event MintNewToken(address to, uint m_master_id, uint item_id); + + // Service event for debug + event MasterIdReserved(address indexed author, uint256 indexed master_id); + event MasterIdReservedHuman(address author, uint256 master_id); + + // MasterCopyCreation + /** + * @dev event about master-copy creation + * @param master_id -- unique master id + * @param description -- indexed description, which can be key for search. we do not store description info in state, only in event + * @param link -- link to a file in CDN + */ + event MaterCopyCreated(address indexed author, uint256 master_id, string indexed description, string indexed link); + event MasterCopyCreatedHuman(address author, uint256 indexed master_id, string description, string link); + + /** + * @dev This function 'plug' itemsale contract from factory to mastersales map (works only for MoonShard NFT, should be called after MasterCopy creation) + * @param organizer -- address of seller (author) + * @param _masterId -- Id of mastercopy, which has been created by CreateMasterCopy + * @param _sale -- address of crowdsale contract. Note that this function can be called only from factory. + */ + function PlugCrowdSale(address organizer, uint256 _masterId, address _sale) external; + + /** + * @dev create Master Copy of item (without starting sale). It wraps file info into nft and create record in blockchain. Other items(tokens) are just links to master record + * @param link -- link to a file + * @param _author -- address of author + * @param _description -- indexed description to be stored in events + * @param _supplyType -- type of supply, where 1 is for unique nft, 0 for common nft, anything else is rare. Used to check inside mint func + * @return c_master_id reserved mastercopy id + */ + function createMasterCopy(string memory link, address payable _author ,string memory _description, uint256 _supplyType) external returns(uint256 c_master_id); + + /** + * @dev get rarity of specific master + * @param _masterId master copy id + * @return RarityType + */ + function get_rarity(uint256 _masterId) external view returns (RarityType); + + /** + * @dev this function emit item outside of buying mechanism, only owner of master can call it + * @param to whom minted token will be sent + * @param m_master_id id of mastercopy + */ + function EmitItem(address to, uint m_master_id, uint file_order_) external; + + /** + * @dev external function for buying items, should be invoked from tokensale contract + * @param buyer address of buyer + * + * @param master_id Master copy id + */ + function buyItem(address buyer, uint256 master_id, uint file_order_) external; + + /** + * @dev transfer authorship of mastercopy. authorship allow getting royalties from MetaMarketplace. There are no restriction to rarity type + */ + function transferAuthorship(uint master_id_) external; + + function transferFrom( + address from, + address to, + uint256 tokenId + ) external; + + /** + * @dev See {IERC721-safeTransferFrom}. + */ + function safeTransferFrom( + address from, + address to, + uint256 tokenId + ) external; + + /** + * @dev See {IERC721-safeTransferFrom}. + */ + function safeTransferFrom( + address from, + address to, + uint256 tokenId, + bytes memory _data + ) external; + + // This function is burning tokens. + // @deprecated + /* + function redeemTicket(address owner,uint256 tokenId, uint256 event_id) external; + + /** + * @dev get itemSale contract address template + */ + function getItemSale(uint256 master_id) external view returns(address); + + /** + * @dev get author of master + */ + function get_author(uint256 _masterId) external view returns (address payable _author); + + function get_master_id_by_link (string memory link_) external view returns (uint256 _masterId); + + function get_author_by_link(string memory link_) external view returns (address author_); + + function get_author_by_token_id(uint256 item_id) external view returns (address author_); + + /** + * @dev get masterIds array for specific creator address + * IMPORTANT -- author_masterids contain only *originally* created master_ids. If authorsip is changed there are no updates in this array + * to get *current* authorship of a token use get_author_by_token_id or get_author + */ + function getMasterIdByAuthor(address _creator) external view returns (uint[] memory); + + /** + * @dev get ItemInfo by item id + * @param item_id item id (equal to tokenid) + */ + function getInfobyItemId(uint item_id) external view returns (ItemInfo memory); + + /** + * @dev update factory address. as we deploy separately this contract, then factory contract, then we need to update factory address outside of MSNFT constructor + * also, it may be useful if we would need to upgrade tokensale contract (which include upgrade of a factory contract), so it can be used when rollup new versions of factory and sale + */ + //@TODO:check this in tests. Interfaces do not support function modifiers, so the onlyOwner modifier was deleted in the function below. + function updateFactoryAddress(address factory_address_) external; + + function getFactoryAddress() external view returns(address); + + /// Informs callers that this contract supports IERC721Enumerable + function supportsInterface(bytes4 interfaceId) + external view + returns (bool); + + /* + Usefull tips: + // Mapping from owner to list of owned token IDs + mapping(address => uint256[]) private _ownedTokens; + + // Mapping from token ID to index of the owner tokens list + mapping(uint256 => uint256) private _ownedTokensIndex; + + // Array with all token ids, used for enumeration + uint256[] private _allTokens; + + // Mapping from token id to position in the allTokens array + mapping(uint256 => uint256) private _allTokensIndex; + + Gets the list of token IDs of the requested owner. + function _tokensOfOwner(address owner) internal view returns (uint256[] storage) { + return _ownedTokens[owner]; + } + */ + +} \ No newline at end of file diff --git a/contracts/721/singleton/ITokenSaleSingleton.sol b/contracts/721/singleton/ITokenSaleSingleton.sol index e490d97..900b2f9 100644 --- a/contracts/721/singleton/ITokenSaleSingleton.sol +++ b/contracts/721/singleton/ITokenSaleSingleton.sol @@ -123,7 +123,5 @@ interface ITokenSaleSingleton { uint256 master_id_ ) external; - /** - function CloseAndDestroy(address payable _to) external; - */ + function closeCrowdsale(uint master_id_) external; } \ No newline at end of file diff --git a/contracts/721/singleton/MSNFT.sol b/contracts/721/singleton/MSNFT.sol index 22dbfa4..bc64959 100644 --- a/contracts/721/singleton/MSNFT.sol +++ b/contracts/721/singleton/MSNFT.sol @@ -517,7 +517,7 @@ contract MSNFT is ERC721Enumerable, Ownable { * @dev update factory address. as we deploy separately this contract, then factory contract, then we need to update factory address outside of MSNFT constructor * also, it may be useful if we would need to upgrade tokensale contract (which include upgrade of a factory contract), so it can be used when rollup new versions of factory and sale */ - function updateFactoryAdress(address factory_address_) public onlyOwner() { + function updateFactoryAddress(address factory_address_) public onlyOwner() { factory_address = factory_address_; } From 1eb815f7b85be7996a23a87147a97f22bfa4c2c8 Mon Sep 17 00:00:00 2001 From: daseinsucks Date: Fri, 10 Dec 2021 01:38:25 +0300 Subject: [PATCH 24/38] TODO comment fix --- contracts/721/singleton/IMSNFT.sol | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/contracts/721/singleton/IMSNFT.sol b/contracts/721/singleton/IMSNFT.sol index c84176f..0e31e49 100644 --- a/contracts/721/singleton/IMSNFT.sol +++ b/contracts/721/singleton/IMSNFT.sol @@ -175,7 +175,11 @@ interface IMSNFT { * @dev update factory address. as we deploy separately this contract, then factory contract, then we need to update factory address outside of MSNFT constructor * also, it may be useful if we would need to upgrade tokensale contract (which include upgrade of a factory contract), so it can be used when rollup new versions of factory and sale */ - //@TODO:check this in tests. Interfaces do not support function modifiers, so the onlyOwner modifier was deleted in the function below. + /* + @TODO:check this in tests + + Interfaces do not support function modifiers, so the onlyOwner modifier was deleted in the function below. Check if it's still may be used only by owner. + */ function updateFactoryAddress(address factory_address_) external; function getFactoryAddress() external view returns(address); From 01bc7ce0102d9eb40a764b2948c419fdc345d04f Mon Sep 17 00:00:00 2001 From: daseinsucks Date: Fri, 10 Dec 2021 20:54:27 +0300 Subject: [PATCH 25/38] fix interface register calculation --- contracts/721/singleton/InterfaceRegister.sol | 15 ++++++++++----- migrations/2_deploy_contracts.js | 8 ++++++-- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/contracts/721/singleton/InterfaceRegister.sol b/contracts/721/singleton/InterfaceRegister.sol index f1496f9..6657a2d 100644 --- a/contracts/721/singleton/InterfaceRegister.sol +++ b/contracts/721/singleton/InterfaceRegister.sol @@ -44,17 +44,22 @@ contract InterfaceRegister { function calculateIERC721() public pure returns (bytes4) { - // wrong calculation, need to fix.. use IERC721Enumarable interface for MSNFT - IERC721 i; - return i.balanceOf.selector ^ i.ownerOf.selector ^ i.transferFrom.selector ^ i.approve.selector ^ i.getApproved.selector ^ i.setApprovalForAll.selector ^ i.isApprovedForAll.selector; - + return bytes4(keccak256('balanceOf(address)')) ^ + bytes4(keccak256('ownerOf(uint256)')) ^ + bytes4(keccak256('approve(address,uint256)')) ^ + bytes4(keccak256('getApproved(uint256)')) ^ + bytes4(keccak256('setApprovalForAll(address,bool)')) ^ + bytes4(keccak256('isApprovedForAll(address,address)')) ^ + bytes4(keccak256('transferFrom(address,address,uint256)')) ^ + bytes4(keccak256('safeTransferFrom(address,address,uint256)')) ^ + bytes4(keccak256('safeTransferFrom(address,address,uint256,bytes)')); } constructor() { _INTERFACE_ID_IERC721ENUMERABLE = calculateIERC721Enumarable(); _INTERFACE_ID_IERC721METADATA = calculateIERC721Metadata(); - _INTERFACE_ID_IERC721 = 0x80ac58cd; // hardcode is not the best way to do it but + _INTERFACE_ID_IERC721 = calculateIERC721(); // hardcode is not the best way to do it but } diff --git a/migrations/2_deploy_contracts.js b/migrations/2_deploy_contracts.js index ea3979e..dccf640 100644 --- a/migrations/2_deploy_contracts.js +++ b/migrations/2_deploy_contracts.js @@ -86,7 +86,7 @@ module.exports = function (deployer, network, accounts) { console.log(MasterFactory.address); MasterInstance = await Master.deployed(); MasterFactoryInstance = await MasterFactory.deployed(); - await MasterInstance.updateFactoryAdress(MasterFactoryInstance.address); + await MasterInstance.updateFactoryAddress(MasterFactoryInstance.address); fa = await MasterInstance.getFactoryAddress(); console.log("factory address"); console.log(fa); @@ -149,7 +149,7 @@ module.exports = function (deployer, network, accounts) { console.log(MasterFactory.address); MasterInstance = await Master.deployed(); MasterFactoryInstance = await MasterFactory.deployed(); - await MasterInstance.updateFactoryAdress(MasterFactoryInstance.address); + await MasterInstance.updateFactoryAddress(MasterFactoryInstance.address); fa = await MasterInstance.getFactoryAddress(); console.log("factory address"); console.log(fa); @@ -168,6 +168,10 @@ module.exports = function (deployer, network, accounts) { intID_calc = await InterfaceInstance.calculateIERC721Enumarable(); console.log("Interface If for ERC721Enumerable calculated:"); console.log(intID_calc); + intID_calc1 = await InterfaceInstance.calculateIERC721(); + console.log("Interface Id for ERC721 calculated:"); + console.log(intID_calc1); + return; }).then(async () => { From b9d8bd73c07eb61551ee42b1f733e9716ed1fad7 Mon Sep 17 00:00:00 2001 From: Bekket Date: Sun, 12 Dec 2021 19:56:24 +0300 Subject: [PATCH 26/38] added events when update authorship, minor bug fix --- contracts/721/singleton/MSNFT.sol | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/contracts/721/singleton/MSNFT.sol b/contracts/721/singleton/MSNFT.sol index bc64959..d3e7692 100644 --- a/contracts/721/singleton/MSNFT.sol +++ b/contracts/721/singleton/MSNFT.sol @@ -39,6 +39,9 @@ contract MSNFT is ERC721Enumerable, Ownable { //Mint new token event MintNewToken(address to, uint m_master_id, uint item_id); + // transfer authorship + event AuthorshipTransferred(address old_author, address new_author, uint master_id); + // Service event for debug event MasterIdReserved(address indexed author, uint256 indexed master_id); @@ -344,23 +347,27 @@ contract MSNFT is ERC721Enumerable, Ownable { /** * @dev transfer authorship of mastercopy. authorship allow getting royalties from MetaMarketplace. There are no restriction to rarity type */ - function transferAuthorship(uint master_id_) public { + function transferAuthorship(uint master_id_, address new_author_) public { require(authors[master_id_] == msg.sender, "MSNFT: you are not author of this master_id"); - authors[master_id_] = payable(msg.sender); + address old_author_ = msg.sender; + authors[master_id_] = payable(new_author_); + emit AuthorshipTransferred(old_author_, new_author_, master_id_); } /** - * @dev update authorship for *unique* rarity token (setting owner of token to author) + * @dev update authorship for *unique* rarity token (setting owner of token to author), authors have privelege to */ function updateAuthorsip(uint tokenId) internal { uint _master_id = ItemToMaster[tokenId]; + address old_author_ = authors[_master_id]; RarityType rarity_ = get_rarity(_master_id); if (rarity_ == RarityType.Unique) { address owner_ = ownerOf(tokenId); authors[_master_id] = payable(owner_); + emit AuthorshipTransferred(old_author_, owner_, _master_id); } } From 1f47af4962f8011fbeb0aa0bdaea7093f604ddbd Mon Sep 17 00:00:00 2001 From: Bekket Date: Mon, 13 Dec 2021 21:59:10 +0300 Subject: [PATCH 27/38] WBTC as a currency --- contracts/721/singleton/CurrenciesERC20.sol | 8 +++++--- .../721/singleton/TokenSaleSingleton.sol | 2 +- contracts/test_erc20_tokens/WBTC.sol | 19 +++++++++++++++++++ migrations/2_deploy_contracts.js | 9 +++++++-- 4 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 contracts/test_erc20_tokens/WBTC.sol diff --git a/contracts/721/singleton/CurrenciesERC20.sol b/contracts/721/singleton/CurrenciesERC20.sol index fb144f1..4535188 100644 --- a/contracts/721/singleton/CurrenciesERC20.sol +++ b/contracts/721/singleton/CurrenciesERC20.sol @@ -32,7 +32,7 @@ contract CurrenciesERC20 is ReentrancyGuard, Ownable { /** * @dev Hardcoded (not-extetiable after deploy) erc20 currencies */ - enum CurrencyERC20 {USDT, USDC, DAI, MST, WETH} + enum CurrencyERC20 {USDT, USDC, DAI, MST, WETH, WBTC} struct CurrencyERC20_Custom { address contract_address; @@ -80,14 +80,15 @@ contract CurrenciesERC20 is ReentrancyGuard, Ownable { } - constructor(address US_Tether, address US_Circle, address DAI, address W_Ethereum, address MST) { + constructor(address US_Tether, address US_Circle, address DAI, address W_Ethereum, address MST, address WBTC) { require(US_Tether != address(0), "USDT contract address is zero!"); require(US_Circle != address(0), "US_Circle contract address is zero!"); require(DAI != address(0), "DAI contract address is zero!"); require(W_Ethereum != address(0), "W_Ethereum contract address is zero!"); - require(MST != address(0), "MST contract address is zero!"); + require(WBTC != address(0), "MST contract address is zero!"); + require(WBTC != address(0), "MST contract address is zero!"); @@ -98,6 +99,7 @@ contract CurrenciesERC20 is ReentrancyGuard, Ownable { _currencies_hardcoded[CurrencyERC20.DAI] = IERC20Metadata(DAI); _currencies_hardcoded[CurrencyERC20.WETH] = IERC20Metadata(W_Ethereum); _currencies_hardcoded[CurrencyERC20.MST] = IERC20Metadata(MST); + _currencies_hardcoded[CurrencyERC20.WBTC] = IERC20Metadata(WBTC); diff --git a/contracts/721/singleton/TokenSaleSingleton.sol b/contracts/721/singleton/TokenSaleSingleton.sol index 54e76a3..2126e2b 100644 --- a/contracts/721/singleton/TokenSaleSingleton.sol +++ b/contracts/721/singleton/TokenSaleSingleton.sol @@ -394,7 +394,7 @@ contract TokenSaleSingleton is Context, ReentrancyGuard { */ function closeCrowdsale(uint master_id_) public { require(msg.sender == wallet(master_id_), "Crowdsale: unauthorized closing sale"); - for (uint8 i = 0; i <= 4;i++) { + for (uint8 i = 0; i <= 5;i++) { IERC20Metadata currency_token = get_currency(CurrenciesERC20.CurrencyERC20(i)); if (currency_token.balanceOf(address(this)) > 0) { withDrawFunds(CurrenciesERC20.CurrencyERC20(i),master_id_); diff --git a/contracts/test_erc20_tokens/WBTC.sol b/contracts/test_erc20_tokens/WBTC.sol new file mode 100644 index 0000000..663b740 --- /dev/null +++ b/contracts/test_erc20_tokens/WBTC.sol @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + + + + +import "./TestTokenERC20.sol"; + +// this contract is exist cause we need to deploy ERC20 test tokens by truffle deployer, so we need js artifacts for that purpose (which can't be created otherway cause OZ is in node_modules) + contract WBTC is TestTokenERC20 { + + constructor(string memory name_, string memory symbol_) TestTokenERC20(name_,symbol_) {} + + + + +} + + \ No newline at end of file diff --git a/migrations/2_deploy_contracts.js b/migrations/2_deploy_contracts.js index dccf640..e47c95b 100644 --- a/migrations/2_deploy_contracts.js +++ b/migrations/2_deploy_contracts.js @@ -18,6 +18,7 @@ var USDC = artifacts.require("./test_erc20_tokens/USDC.sol"); var DAI = artifacts.require("./test_erc20_tokens/DAI.sol"); var WETH = artifacts.require("./test_erc20_tokens/WETH.sol"); var MST = artifacts.require("./test_erc20_tokens/MST.sol"); +var WBTC = artifacts.require("./test_erc20_tokens/WBTC.sol"); // Ropsten addresses var usdt_address = web3.utils.toChecksumAddress('0x6ee856ae55b6e1a249f04cd3b947141bc146273c'); @@ -52,6 +53,8 @@ module.exports = function (deployer, network, accounts) { DAI = await DAI.deployed(); await deployer.deploy(WETH,"WETH","WETH"); WETH = await WETH.deployed(); + await deployer.deploy(WBTC,"WBTC","WBTC"); + WBTC = await WBTC.deployed(); */ await deployer.deploy(MST, "SONM", "MST"); MST = await MST.deployed(); @@ -117,15 +120,17 @@ module.exports = function (deployer, network, accounts) { USDC = await USDC.deployed(); await deployer.deploy(DAI, "DAI", "DAI"); DAI = await DAI.deployed(); - await deployer.deploy(WETH, "WETH", "WETH"); + await deployer.deploy(WETH, "Wrapped_Ethereum", "WETH"); WETH = await WETH.deployed(); + await deployer.deploy(WBTC,"Wrapped_Bitcoin", "WBTC") await deployer.deploy(MST, "SONM", "MST"); MST = await MST.deployed(); + //... }).then(function () { - return deployer.deploy(Currencies, USDT.address, USDC.address, DAI.address, WETH.address, MST.address, { + return deployer.deploy(Currencies, USDT.address, USDC.address, DAI.address, WETH.address, MST.address, WBTC.address, { gasPrice: wei_gas_price, from: accounts[0] }); From ad209015daa60f3acc5186c409c2f26b8df41d87 Mon Sep 17 00:00:00 2001 From: Bekket Date: Tue, 14 Dec 2021 02:03:14 +0300 Subject: [PATCH 28/38] Label (whitelist draft) --- contracts/721/singleton/Label.sol | 90 +++++++++++++++++++ .../721/singleton/TokenSaleSingleton.sol | 8 +- 2 files changed, 94 insertions(+), 4 deletions(-) create mode 100644 contracts/721/singleton/Label.sol diff --git a/contracts/721/singleton/Label.sol b/contracts/721/singleton/Label.sol new file mode 100644 index 0000000..9d7d65e --- /dev/null +++ b/contracts/721/singleton/Label.sol @@ -0,0 +1,90 @@ +//SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.0; + +import './CurrenciesERC20.sol'; +import "../../../node_modules/@openzeppelin/contracts/access/Ownable.sol"; +import "../../../node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol"; + + + +// whitelist +contract Label is Ownable +{ + + + + +mapping (address => uint256) locked_balances; + +mapping (address => bool) public authorized_status; + +mapping (address => bool) public block_list; + + + +// WL -- those, who submitted by us, bail list -- those, who deposit bail, kyc -- appendix for future work +enum AuthorizationType {white_list, bail_list, kyc, blocked} + + +mapping (address => AuthorizationType) MetaAuthorization; + +uint256 price; +CurrenciesERC20.CurrencyERC20 _currency; +address _treasure_fund; + + // Currencies lib + CurrenciesERC20 _currency_contract; + + + + // Constructor + constructor (address payable treasure_fund_, address currency_contract_, uint bond_price_) + { + require(treasure_fund_ != address(0), "Label: wallet is the zero address"); + require(currency_contract_ != address(0), "Label: currency is the zero address"); + _treasure_fund = treasure_fund_; + _currency_contract = CurrenciesERC20(currency_contract_); + // _currency = CurrenciesERC20.CurrencyERC20.DAI; + setBond(CurrenciesERC20.CurrencyERC20.DAI, bond_price_); + } + + + + function whiteList(address author_) public onlyOwner { + authorized_status[author_] = true; + MetaAuthorization[author_] = AuthorizationType.white_list; + } + + + function place_bail() public { + + IERC20Metadata currency_token = get_currency(_currency); + require(currency_token.transferFrom(msg.sender, address(this), price), "Label: ERC20: transferFrom buyer to label contract failed "); + locked_balances[msg.sender] = price; + authorized_status[msg.sender] = true; + MetaAuthorization[msg.sender] = AuthorizationType.bail_list; + } + + function blacklist(address author_) public onlyOwner { + IERC20Metadata currency_token = get_currency(_currency); + uint amount = locked_balances[author_]; + require(currency_token.transferFrom(address(this), msg.sender , amount), "Label: ERC20: transferFrom label to owner failed "); + locked_balances[author_] = 0; + authorized_status[author_] = false; + MetaAuthorization[author_] = AuthorizationType.blocked; + block_list[author_] = true; + } + + function setBond(CurrenciesERC20.CurrencyERC20 currency_, uint price_) public onlyOwner { + _currency = currency_; + price = price_; + } + + function get_currency(CurrenciesERC20.CurrencyERC20 currency) public view returns (IERC20Metadata) { + return _currency_contract.get_hardcoded_currency(currency); + } + + function get_meta_authorization(address author_) public view returns (AuthorizationType) { + return MetaAuthorization[author_]; + } +} \ No newline at end of file diff --git a/contracts/721/singleton/TokenSaleSingleton.sol b/contracts/721/singleton/TokenSaleSingleton.sol index 2126e2b..e6a620b 100644 --- a/contracts/721/singleton/TokenSaleSingleton.sol +++ b/contracts/721/singleton/TokenSaleSingleton.sol @@ -89,13 +89,13 @@ contract TokenSaleSingleton is Context, ReentrancyGuard { * * @dev Constructor of TokenSale721 * @param i_token Address of the Master Contract (nft - enumerable) - * @param _treasure_fund This is our wallet to collect fees + * @param treasure_fund_ This is our wallet to collect fees * @param currency_contract_ Address of currency registry contract (CurrenciesERC20.sol) */ - constructor ( MSNFT i_token, address payable _treasure_fund, address currency_contract_) { - require(_treasure_fund != address(0), "Crowdsale: wallet is the zero address"); + constructor ( MSNFT i_token, address payable treasure_fund_, address currency_contract_) { + require(treasure_fund_ != address(0), "Crowdsale: wallet is the zero address"); require(address(i_token) != address(0), "Crowdsale: token is the zero address"); - treasure_fund = _treasure_fund; + treasure_fund = treasure_fund_; _token = i_token; _currency_contract = CurrenciesERC20(currency_contract_); } From fff9fe7bad28454144fe255919ada86b63a70257 Mon Sep 17 00:00:00 2001 From: Bekket Date: Tue, 14 Dec 2021 02:09:30 +0300 Subject: [PATCH 29/38] events --- contracts/721/singleton/Label.sol | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/contracts/721/singleton/Label.sol b/contracts/721/singleton/Label.sol index 9d7d65e..e31edc7 100644 --- a/contracts/721/singleton/Label.sol +++ b/contracts/721/singleton/Label.sol @@ -12,26 +12,25 @@ contract Label is Ownable { - - mapping (address => uint256) locked_balances; - mapping (address => bool) public authorized_status; - mapping (address => bool) public block_list; - // WL -- those, who submitted by us, bail list -- those, who deposit bail, kyc -- appendix for future work enum AuthorizationType {white_list, bail_list, kyc, blocked} - - mapping (address => AuthorizationType) MetaAuthorization; uint256 price; CurrenciesERC20.CurrencyERC20 _currency; address _treasure_fund; +//events +event AuthorizationSubmit(address author_, AuthorizationType authorization_type, address authorizer); +event Blocked(address author_); + + + // Currencies lib CurrenciesERC20 _currency_contract; @@ -53,6 +52,7 @@ address _treasure_fund; function whiteList(address author_) public onlyOwner { authorized_status[author_] = true; MetaAuthorization[author_] = AuthorizationType.white_list; + emit AuthorizationSubmit(author_,AuthorizationType.white_list, msg.sender); } @@ -63,6 +63,7 @@ address _treasure_fund; locked_balances[msg.sender] = price; authorized_status[msg.sender] = true; MetaAuthorization[msg.sender] = AuthorizationType.bail_list; + emit AuthorizationSubmit(msg.sender, AuthorizationType.bail_list, msg.sender); } function blacklist(address author_) public onlyOwner { @@ -73,6 +74,7 @@ address _treasure_fund; authorized_status[author_] = false; MetaAuthorization[author_] = AuthorizationType.blocked; block_list[author_] = true; + emit Blocked(author_); } function setBond(CurrenciesERC20.CurrencyERC20 currency_, uint price_) public onlyOwner { From a93497c7668b08bac4590ab1df51d66d766b200e Mon Sep 17 00:00:00 2001 From: Bekket Date: Tue, 14 Dec 2021 02:18:46 +0300 Subject: [PATCH 30/38] cleanup --- .../721/singleton/{Label.sol => Gatekeeper.sol} | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) rename contracts/721/singleton/{Label.sol => Gatekeeper.sol} (88%) diff --git a/contracts/721/singleton/Label.sol b/contracts/721/singleton/Gatekeeper.sol similarity index 88% rename from contracts/721/singleton/Label.sol rename to contracts/721/singleton/Gatekeeper.sol index e31edc7..26a08f1 100644 --- a/contracts/721/singleton/Label.sol +++ b/contracts/721/singleton/Gatekeeper.sol @@ -7,8 +7,14 @@ import "../../../node_modules/@openzeppelin/contracts/token/ERC20/extensions/IER -// whitelist -contract Label is Ownable +/** +* @title Gatekeeper contract with white_list and block_list functionality +*------------ YOU SHALL NOT PASS!-------------------------------------- +* @notice we can whitelist user (explicit yes) +* OR user can make a bail deposit (which can be taken for broke rules) (non-explicit yes) +* also anyone can be blocked (и раскулачен) + */ +contract Gatekeeper is Ownable { @@ -30,12 +36,10 @@ event AuthorizationSubmit(address author_, AuthorizationType authorization_type, event Blocked(address author_); - // Currencies lib CurrenciesERC20 _currency_contract; - // Constructor constructor (address payable treasure_fund_, address currency_contract_, uint bond_price_) { From 0e82dcfb22765f9d9d16d8b90455b5d4607f203c Mon Sep 17 00:00:00 2001 From: Bekket Date: Tue, 14 Dec 2021 02:34:50 +0300 Subject: [PATCH 31/38] minor clean --- contracts/721/singleton/InterfaceRegister.sol | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts/721/singleton/InterfaceRegister.sol b/contracts/721/singleton/InterfaceRegister.sol index 6657a2d..0071883 100644 --- a/contracts/721/singleton/InterfaceRegister.sol +++ b/contracts/721/singleton/InterfaceRegister.sol @@ -14,7 +14,7 @@ contract InterfaceRegister { bytes4 public _INTERFACE_ID_IERC721ENUMERABLE; // should be 0x780e9d63 // bytes4 private _INTERFACE_ID_ERC721METADATA = 0x5b5e139f; // 0x5b5e139f bytes4 public _INTERFACE_ID_IERC721METADATA; // 0x5b5e139f - bytes4 public _INTERFACE_ID_IERC721; // 0x7aa5391d -- @WARN -- MAY BE *WRONG* should be eqal 0x80ac58cd + bytes4 public _INTERFACE_ID_IERC721; // 0x80ac58cd function getInterfaceEnumerable() public view returns (bytes4) { @@ -59,7 +59,7 @@ contract InterfaceRegister { _INTERFACE_ID_IERC721ENUMERABLE = calculateIERC721Enumarable(); _INTERFACE_ID_IERC721METADATA = calculateIERC721Metadata(); - _INTERFACE_ID_IERC721 = calculateIERC721(); // hardcode is not the best way to do it but + _INTERFACE_ID_IERC721 = calculateIERC721(); } From d03b1703020fee4bde3e47c0c92acaacf20b78e5 Mon Sep 17 00:00:00 2001 From: Takeshi Date: Thu, 16 Dec 2021 06:20:50 -0800 Subject: [PATCH 32/38] some problems with rarity types (enum) --- contracts/721/singleton/MSNFT.sol | 11 +- contracts/721/singleton/MetaMarketplace.sol | 4 +- .../721/singleton/TokenSaleSingleton.sol | 2 +- test/metaMarketplace.js | 332 ++++++++++++------ test/metaMarketplaceNftTemplate.js | 21 +- truffle-config.js | 58 +-- 6 files changed, 265 insertions(+), 163 deletions(-) diff --git a/contracts/721/singleton/MSNFT.sol b/contracts/721/singleton/MSNFT.sol index d3e7692..680974e 100644 --- a/contracts/721/singleton/MSNFT.sol +++ b/contracts/721/singleton/MSNFT.sol @@ -55,7 +55,6 @@ contract MSNFT is ERC721Enumerable, Ownable { * @param link -- link to a file in CDN */ event MaterCopyCreated(address indexed author, uint256 master_id, string indexed description, string indexed link); - event MasterCopyCreatedHuman(address author, uint256 indexed master_id, string description, string link); /** @@ -83,6 +82,8 @@ contract MSNFT is ERC721Enumerable, Ownable { */ enum RarityType {Unique, Limited, Unlimited} + event MasterCopyCreatedHuman(address author, uint256 indexed master_id, string description, string link, uint m_totalSupply, RarityType rarity); + // map from mastercopy_id to itemsale address mapping(uint256 => address) public mastersales; @@ -154,7 +155,6 @@ contract MSNFT is ERC721Enumerable, Ownable { // ERC721Enumerable._registerInterface(_INTERFACE_ID_IERC721ENUMERABLE); } - //@todo should be changed visibility to external? /** * @dev This function 'plug' itemsale contract from factory to mastersales map (works only for MoonShard NFT, should be called after MasterCopy creation) * @param organizer -- address of seller (author) @@ -222,7 +222,7 @@ contract MSNFT is ERC721Enumerable, Ownable { links[link] = mid; author_masterids[_author].push(mid); emit MaterCopyCreated(_author, mid, _description, link); - emit MasterCopyCreatedHuman(_author,mid,_description,link); + emit MasterCopyCreatedHuman(_author,mid,_description,link, m_totalSupply, _rarity); // return mastercopy id return mid; } @@ -321,8 +321,6 @@ contract MSNFT is ERC721Enumerable, Ownable { Mint(to, m_master_id, item_id,file_order_); } - - // @todo -- make external instead of public? /** * @dev external function for buying items, should be invoked from tokensale contract * @param buyer address of buyer @@ -358,7 +356,7 @@ contract MSNFT is ERC721Enumerable, Ownable { /** * @dev update authorship for *unique* rarity token (setting owner of token to author), authors have privelege to */ - function updateAuthorsip(uint tokenId) internal { + function updateAuthorsip(uint tokenId) public { uint _master_id = ItemToMaster[tokenId]; address old_author_ = authors[_master_id]; @@ -404,7 +402,6 @@ contract MSNFT is ERC721Enumerable, Ownable { uint256 tokenId, bytes memory _data ) public virtual override { - super.safeTransferFrom(from,to,tokenId, _data); updateAuthorsip(tokenId); } diff --git a/contracts/721/singleton/MetaMarketplace.sol b/contracts/721/singleton/MetaMarketplace.sol index bc329f3..11b070b 100644 --- a/contracts/721/singleton/MetaMarketplace.sol +++ b/contracts/721/singleton/MetaMarketplace.sol @@ -376,7 +376,7 @@ contract MetaMarketplace { // And transfer nft token to the buyer - IERC721 token = IERC721(token_contract_); + MSNFT token = MSNFT(token_contract_); token.safeTransferFrom(msg.sender,currentBuyer,tokenId); // Broadcast the sale @@ -425,7 +425,7 @@ contract MetaMarketplace { uint256 r_amount; (r_reciver,r_amount) = _deductRoyalties(nft_contract_,tokenId,amount); - uint256 net_amount = amount - fees - r_amount; // @todo check calculation in tests + uint256 net_amount = amount - fees - r_amount; require(_currency_token.transferFrom(from_, address(this), amount), "MetaMarketplace: ERC20: transferFrom buyer to metamarketplace contract failed "); // pull funds _currency_token.transfer(to_, net_amount); // forward funds to seller _currency_token.transfer(_treasure_fund, fees); // collect fees diff --git a/contracts/721/singleton/TokenSaleSingleton.sol b/contracts/721/singleton/TokenSaleSingleton.sol index e6a620b..3ff7e2c 100644 --- a/contracts/721/singleton/TokenSaleSingleton.sol +++ b/contracts/721/singleton/TokenSaleSingleton.sol @@ -352,7 +352,7 @@ contract TokenSaleSingleton is Context, ReentrancyGuard { * @return price how much we need to pay, could be zero if wrong currency, but will fail at pre-validation */ function getWeiAmount(CurrenciesERC20.CurrencyERC20 currency, uint master_id_) public view returns(uint256){ - uint256 price = get_price(currency,master_id_); // @todo: WARNING -- it can be 0 if buyer mismatch currency, but such transaction will fail at pre-validate purchase check! + uint256 price = get_price(currency,master_id_); //: WARNING -- it can be 0 if buyer mismatch currency, but such transaction will fail at pre-validate purchase check! // uint256 weiAmount = price * tokenAmountToBuy; return price; } diff --git a/test/metaMarketplace.js b/test/metaMarketplace.js index 60eeab3..ddefa71 100644 --- a/test/metaMarketplace.js +++ b/test/metaMarketplace.js @@ -8,7 +8,8 @@ const WETHcontract = artifacts.require('WETH'); const MetaMarketplace = artifacts.require('MetaMarketplace'); const { - time + time, + expectEvent } = require('@openzeppelin/test-helpers'); function makeRandomLink(length) { @@ -22,16 +23,24 @@ function makeRandomLink(length) { return result; } +function getTotalItems() { + const json = '{"item_1": 1, "item_2": 2, "item_3": 3}'; + const obj = JSON.parse(json); + let count = Object.keys(obj).length; + return count; +} + contract('MetaMarketplace', accounts => { let factory, nft, mst, mMarket; let network; - let tokenIdUnlimitOne, tokenIdUnlimitTwo, tokenIdUnlimitThree, tokenIdUniue; + let tokenIdUnlimitOne, tokenIdUnlimitTwo, tokenIdUnlimitThree, tokenIdUniue, tokenIdLimited; let admin, userone, royaltyaddress, userthree; const desc = 'Lorem ipsum dolor sit amet'; let linkOne, linkTwo, linkThree; - let midUnique, midLimited; + let midUnique, midUnlimit; let tokensTotal = '100'; - const [unique, limited, unlimit] = [1, 2, 0]; + let lim = getTotalItems(); + const [unique, unlimit, limited] = [1, 0, lim]; const [MoonShard, Enum, Meta, Common] = [0, 1, 2, 3]; const [USDT, USDC, DAI, MST, WETH] = [0, 1, 2, 3, 4]; before(async () => { @@ -39,8 +48,8 @@ contract('MetaMarketplace', accounts => { nft = await MSNFT.deployed(); mMarket = await MetaMarketplace.deployed(); linkOne = 'https://google.com/' + makeRandomLink(20); - linkTwo = 'https://google.com/' + makeRandomLink(20); - linkThree = 'https://google.com/' + makeRandomLink(20); + linkTwo = 'https://google.com/' + makeRandomLink(21); + linkThree = 'https://google.com/' + makeRandomLink(22); network = process.env.NETWORK; mst = await MSTcontract.deployed(); if (network == 'development' || network == 'ganache') { @@ -159,16 +168,74 @@ contract('MetaMarketplace', accounts => { } }); + it('should create master copy with unique supply type', async () => { + const createItemUnique = await factory.createMasterItem(linkTwo, desc, unique); + + assert.equal(createItemUnique.receipt.logs.length, 1, 'triggers one event'); + assert.equal(createItemUnique.receipt.logs[0].event, 'CreateMasterItem', 'should be the CreateMasterItem event'); + + midUnique = createItemUnique.receipt.logs[0].args.master_id; + + const receiptFirstEvent = await expectEvent.inTransaction(createItemUnique.tx, nft, 'MasterCopyCreatedHuman', { + author: admin, + master_id: midUnique, + description: desc, + link: linkTwo + }); + + console.log(receiptFirstEvent); + + const uniqueLink = createItemUnique.receipt.logs[0].args.link; + assert(uniqueLink == linkTwo); + + const mintUniqueToken = await nft.EmitItem(admin, midUnique, 0); + assert.equal(mintUniqueToken.receipt.logs.length, 2, 'triggers two events'); + assert.equal(mintUniqueToken.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); + assert.equal(mintUniqueToken.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); + tokenIdUniue = mintUniqueToken.receipt.logs[0].args.tokenId.toNumber(); + }); + + it('should create master copy with limited supply type', async () => { + const createItemLimited = await factory.createMasterItem(linkThree, desc, limited); + + assert.equal(createItemLimited.receipt.logs.length, 1, 'triggers one event'); + assert.equal(createItemLimited.receipt.logs[0].event, 'CreateMasterItem', 'should be the CreateMasterItem event'); + + midLimited = createItemLimited.receipt.logs[0].args.master_id; + + const receiptFirstEvent = await expectEvent.inTransaction(createItemLimited.tx, nft, 'MasterCopyCreatedHuman', { + author: admin, + master_id: midLimited, + description: desc, + link: linkThree + }); + + console.log(receiptFirstEvent); + + const limitedLink = createItemLimited.receipt.logs[0].args.link; + assert(limitedLink == linkThree); + + const mintLimitedToken = await nft.EmitItem(admin, midLimited, 1); + assert.equal(mintLimitedToken.receipt.logs.length, 2, 'triggers two events'); + assert.equal(mintLimitedToken.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); + assert.equal(mintLimitedToken.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); + tokenIdLimited = mintLimitedToken.receipt.logs[0].args.tokenId.toNumber(); + }); + it('should create master copy with unlimit supply type', async () => { const createItemUnlimit = await factory.createMasterItem(linkOne, desc, unlimit); assert.equal(createItemUnlimit.receipt.logs.length, 1, 'triggers one event'); assert.equal(createItemUnlimit.receipt.logs[0].event, 'CreateMasterItem', 'should be the CreateMasterItem event'); - if (network == 'development' || network == 'ganache') { - midUnlimit = '1'; - } else { - midUnlimit = createItemUnlimit.receipt.logs[0].args.master_id; - } + midUnlimit = createItemUnlimit.receipt.logs[0].args.master_id; + + const receiptFirstEvent = await expectEvent.inTransaction(createItemUnlimit.tx, nft, 'MasterCopyCreatedHuman', { + author: admin, + master_id: midUnlimit, + description: desc, + link: linkOne + }); + console.log(receiptFirstEvent); const firstLink = createItemUnlimit.receipt.logs[0].args.link; assert(firstLink == linkOne); @@ -190,7 +257,7 @@ contract('MetaMarketplace', accounts => { assert.equal(mintUnlimitTokenThree.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); assert.equal(mintUnlimitTokenThree.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); tokenIdUnlimitThree = mintUnlimitTokenThree.receipt.logs[0].args.tokenId.toNumber(); - + const mintUnlimitTokenFour = await nft.EmitItem(admin, midUnlimit, 0); assert.equal(mintUnlimitTokenFour.receipt.logs.length, 2, 'triggers two events'); assert.equal(mintUnlimitTokenFour.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); @@ -198,27 +265,6 @@ contract('MetaMarketplace', accounts => { tokenIdUnlimitFour = mintUnlimitTokenFour.receipt.logs[0].args.tokenId.toNumber(); }); - it('should create master copy with unique supply type', async () => { - const createItemUnique = await factory.createMasterItem(linkTwo, desc, unique); - assert.equal(createItemUnique.receipt.logs.length, 1, 'triggers one event'); - assert.equal(createItemUnique.receipt.logs[0].event, 'CreateMasterItem', 'should be the CreateMasterItem event'); - - if (network == 'development' || network == 'ganache') { - midUnique = '2'; - } else { - midUnique = createItemUnique.receipt.logs[0].args.master_id; - } - - const uniqueLink = createItemUnique.receipt.logs[0].args.link; - assert(uniqueLink == linkTwo); - - const mintUniqueToken = await nft.EmitItem(admin, midUnique, 0); - assert.equal(mintUniqueToken.receipt.logs.length, 2, 'triggers two events'); - assert.equal(mintUniqueToken.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); - assert.equal(mintUniqueToken.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); - tokenIdUniue = mintUniqueToken.receipt.logs[0].args.tokenId.toNumber(); - }); - // Unlimited cases //*****************************************/ @@ -273,26 +319,39 @@ contract('MetaMarketplace', accounts => { from: admin }); - assert.equal(acceptOfferByOwner.receipt.logs.length, 2, 'triggers two events'); - assert.equal(acceptOfferByOwner.receipt.logs[0].event, 'CalculatedFees', 'must be the CalculatedFees event'); - assert.equal(acceptOfferByOwner.receipt.logs[1].event, 'Sale', 'must be the Sale event'); + assert.equal(acceptOfferByOwner.receipt.logs.length, 3, 'triggers three events'); + assert.equal(acceptOfferByOwner.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); + assert.equal(acceptOfferByOwner.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); + assert.equal(acceptOfferByOwner.receipt.logs[2].event, 'Sale', 'must be the Sale event'); + + // console.log("args 1 =================="); + // console.log(acceptOfferByOwner.receipt.logs[0].args); const mMstBalance = await mst.balanceOf(mMarket.address); const uMstBalance = await mst.balanceOf(userone); const royaltyMstBalance = await mst.balanceOf(royaltyaddress); const aMstBalance = await mst.balanceOf(admin); - - assert.equal(acceptOfferByOwner.receipt.logs[0].args.fees.toString(), royaltyMstBalance.toString(), 'must be equal'); - assert.equal(acceptOfferByOwner.receipt.logs[0].args.feeAddress, royaltyaddress,'must be admin address to get royalty'); - const authorBalance = acceptOfferByOwner.receipt.logs[0].args.transfered_amount - acceptOfferByOwner.receipt.logs[0].args.fees; + + + assert.equal(acceptOfferByOwner.receipt.logs[0].args.nft_contract_, nft.address, 'must be nft contract address'); + assert.equal(acceptOfferByOwner.receipt.logs[0].args.tokenId, tokenIdUnlimitOne, 'must be equal'); + assert.equal(acceptOfferByOwner.receipt.logs[0].args.recepient, admin, 'recepient must be admin'); + assert.equal(acceptOfferByOwner.receipt.logs[0].args.value.toString(), royaltyMstBalance.toString(), 'must be equal'); + + assert.equal(acceptOfferByOwner.receipt.logs[1].args.fees.toString(), royaltyMstBalance.toString(), 'must be equal'); + assert.equal(acceptOfferByOwner.receipt.logs[1].args.feeAddress, royaltyaddress, 'must be admin address to get royalty'); + const authorBalance = tokenMstPrice - acceptOfferByOwner.receipt.logs[1].args.fees; assert.equal(authorBalance.toString(), aMstBalance.toString(), 'must be equal'); assert.equal(mMstBalance.toString(), 0, 'must be zero after buy offer acception'); - - assert.equal(acceptOfferByOwner.receipt.logs[1].args.nft_contract_, nft.address, 'must be nft contract address'); - assert.equal(acceptOfferByOwner.receipt.logs[1].args.tokenId, tokenIdUnlimitOne, 'must be equal'); - assert.equal(acceptOfferByOwner.receipt.logs[1].args.seller, admin, 'seller must be admin'); - assert.equal(acceptOfferByOwner.receipt.logs[1].args.buyer, userone, 'buyer must be userone'); - assert.equal(acceptOfferByOwner.receipt.logs[1].args.value.toString(), tokenMstPrice.toString(), 'must be equal'); + + assert.equal(acceptOfferByOwner.receipt.logs[2].args.nft_contract_, nft.address, 'must be nft contract address'); + assert.equal(acceptOfferByOwner.receipt.logs[2].args.tokenId, tokenIdUnlimitOne, 'must be equal'); + assert.equal(acceptOfferByOwner.receipt.logs[2].args.seller, admin, 'seller must be admin'); + assert.equal(acceptOfferByOwner.receipt.logs[2].args.buyer, userone, 'buyer must be userone'); + assert.equal(acceptOfferByOwner.receipt.logs[2].args.value.toString(), tokenMstPrice.toString(), 'must be equal'); + + const ownership = await nft.ownerOf(tokenIdUnlimitOne); + console.log(ownership); } }); @@ -304,9 +363,11 @@ contract('MetaMarketplace', accounts => { assert.equal(owner, admin, "owned by admin"); // Approve nft token from admin to meta market address - const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitTwo, {from: admin}); + const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitTwo, { + from: admin + }); assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); - assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'should be the Approval event'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); assert.equal(tokenIdUnlimitTwo.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); @@ -320,7 +381,7 @@ contract('MetaMarketplace', accounts => { from: userone }); assert.equal(approveDaiTokens.receipt.logs.length, 1, 'triggers one events'); - assert.equal(approveDaiTokens.receipt.logs[0].event, 'Approval', 'should be the Approval event'); + assert.equal(approveDaiTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); assert.equal(userone, approveDaiTokens.logs[0].args.owner, 'must be owner'); assert.equal(mMarket.address, approveDaiTokens.logs[0].args.spender, 'must be spender'); assert.equal(tokenDaiPrice.toString(), approveDaiTokens.logs[0].args.value.toString(), 'must be equal'); @@ -358,7 +419,7 @@ contract('MetaMarketplace', accounts => { from: admin }); assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); - assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'should be the Approval event'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); assert.equal(tokenIdUnlimitThree.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); @@ -367,7 +428,7 @@ contract('MetaMarketplace', accounts => { from: admin }); assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); - assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'should be the NewSellOffer event'); + assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'must be the NewSellOffer event'); assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); assert.equal(admin, selloffer.logs[0].args.seller, 'admin must seller'); assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); @@ -376,7 +437,7 @@ contract('MetaMarketplace', accounts => { from: admin }); assert.equal(withdrawselloffer.receipt.logs.length, 1, 'triggers one events'); - assert.equal(withdrawselloffer.receipt.logs[0].event, 'SellOfferWithdrawn', 'should be the SellOfferWithdrawn event'); + assert.equal(withdrawselloffer.receipt.logs[0].event, 'SellOfferWithdrawn', 'must be the SellOfferWithdrawn event'); assert.equal(withdrawselloffer.receipt.logs[0].args.tokenId, tokenIdUnlimitThree, 'must be equal'); assert.equal(withdrawselloffer.receipt.logs[0].args.seller, admin, 'seller must be admin'); }); @@ -391,7 +452,7 @@ contract('MetaMarketplace', accounts => { from: admin }); assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); - assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'should be the Approval event'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); assert.equal(tokenIdUnlimitThree.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); @@ -400,7 +461,7 @@ contract('MetaMarketplace', accounts => { from: admin }); assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); - assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'should be the NewSellOffer event'); + assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'must be the NewSellOffer event'); assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); assert.equal(admin, selloffer.logs[0].args.seller, 'admin must seller'); assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); @@ -409,7 +470,7 @@ contract('MetaMarketplace', accounts => { from: userone }); assert.equal(approveWethTokens.receipt.logs.length, 1, 'triggers one events'); - assert.equal(approveWethTokens.receipt.logs[0].event, 'Approval', 'should be the Approval event'); + assert.equal(approveWethTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); assert.equal(userone, approveWethTokens.logs[0].args.owner, 'must be owner'); assert.equal(mMarket.address, approveWethTokens.logs[0].args.spender, 'must be spender'); assert.equal(tokenWethPrice.toString(), approveWethTokens.logs[0].args.value.toString(), 'must be equal'); @@ -427,21 +488,31 @@ contract('MetaMarketplace', accounts => { const royaltyWethBalance = await weth.balanceOf(royaltyaddress); const aWethBalance = await weth.balanceOf(admin); - assert.equal(purchase.receipt.logs.length, 2, 'triggers one events'); - assert.equal(purchase.receipt.logs[0].event, 'CalculatedFees', 'should be the CalculatedFees event'); - assert.equal(purchase.receipt.logs[0].args.fees.toString(), royaltyWethBalance.toString(), 'should be the CalculatedFees event'); - assert.equal(purchase.receipt.logs[0].args.feeAddress, royaltyaddress, 'should be the CalculatedFees event'); + assert.equal(purchase.receipt.logs.length, 3, 'triggers three events'); - const authorBalance = purchase.receipt.logs[0].args.transfered_amount - purchase.receipt.logs[0].args.fees; + assert.equal(purchase.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); + assert.equal(purchase.receipt.logs[0].args.nft_contract_, nft.address, 'must be nft contract address'); + assert.equal(purchase.receipt.logs[0].args.tokenId, tokenIdUnlimitThree, 'must be equal'); + assert.equal(purchase.receipt.logs[0].args.recepient, admin, 'recepient must be admin'); + assert.equal(purchase.receipt.logs[0].args.value.toString(), royaltyWethBalance.toString(), 'must be equal'); + + assert.equal(purchase.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); + assert.equal(purchase.receipt.logs[1].args.fees.toString(), royaltyWethBalance.toString(), 'must be the CalculatedFees event'); + assert.equal(purchase.receipt.logs[1].args.feeAddress, royaltyaddress, 'must be the CalculatedFees event'); + + const authorBalance = tokenWethPrice - purchase.receipt.logs[1].args.fees; assert.equal(authorBalance.toString(), aWethBalance.toString(), 'must be equal'); assert.equal(mWethBalance.toString(), 0, 'must be zero after buy offer acception'); - assert.equal(purchase.receipt.logs[1].event, 'Sale', 'should be the Sale event'); - assert.equal(purchase.receipt.logs[1].args.nft_contract_, nft.address, 'must be nft contract address'); - assert.equal(purchase.receipt.logs[1].args.tokenId, tokenIdUnlimitThree, 'must be equal'); - assert.equal(purchase.receipt.logs[1].args.seller, admin, 'seller must be admin'); - assert.equal(purchase.receipt.logs[1].args.buyer, userone, 'buyer must be userone'); - assert.equal(purchase.receipt.logs[1].args.value.toString(), tokenWethPrice.toString(), 'must be equal'); + assert.equal(purchase.receipt.logs[2].event, 'Sale', 'must be the Sale event'); + assert.equal(purchase.receipt.logs[2].args.nft_contract_, nft.address, 'must be nft contract address'); + assert.equal(purchase.receipt.logs[2].args.tokenId, tokenIdUnlimitThree, 'must be equal'); + assert.equal(purchase.receipt.logs[2].args.seller, admin, 'seller must be admin'); + assert.equal(purchase.receipt.logs[2].args.buyer, userone, 'buyer must be userone'); + assert.equal(purchase.receipt.logs[2].args.value.toString(), tokenWethPrice.toString(), 'must be equal'); + + const ownership = await nft.ownerOf(tokenIdUnlimitThree); + console.log("ownership " + ownership); }); @@ -455,7 +526,7 @@ contract('MetaMarketplace', accounts => { from: userone }); assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); - assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'should be the Approval event'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); assert.equal(userone, approveNftToken.logs[0].args.owner, 'must be equal'); assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); assert.equal(tokenIdUnlimitThree.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); @@ -464,29 +535,16 @@ contract('MetaMarketplace', accounts => { from: userone }); assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); - assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'should be the NewSellOffer event'); + assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'must be the NewSellOffer event'); assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); assert.equal(userone, selloffer.logs[0].args.seller, 'userone must seller'); assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); - // const approveUsdcTokens = await usdc.approve(mMarket.address, tokenUsdcPrice, { - // from: admin - // }); - // assert.equal(approveUsdcTokens.receipt.logs.length, 1, 'triggers one events'); - // assert.equal(approveUsdcTokens.receipt.logs[0].event, 'Approval', 'should be the Approval event'); - // assert.equal(admin, approveUsdcTokens.logs[0].args.owner, 'must be owner'); - // assert.equal(mMarket.address, approveUsdcTokens.logs[0].args.spender, 'must be spender'); - // assert.equal(tokenUsdcPrice.toString(), approveUsdcTokens.logs[0].args.value.toString(), 'must be equal'); - - //Check approved value - // const checkAllowance = await usdc.allowance(admin, mMarket.address); - // assert.equal(checkAllowance.toString(), tokenUsdcPrice.toString()); - const withdrawselloffer = await mMarket.withdrawSellOffer(nft.address, tokenIdUnlimitThree, { from: userone }); assert.equal(withdrawselloffer.receipt.logs.length, 1, 'triggers one events'); - assert.equal(withdrawselloffer.receipt.logs[0].event, 'SellOfferWithdrawn', 'should be the SellOfferWithdrawn event'); + assert.equal(withdrawselloffer.receipt.logs[0].event, 'SellOfferWithdrawn', 'must be the SellOfferWithdrawn event'); }); @@ -500,7 +558,7 @@ contract('MetaMarketplace', accounts => { from: userone }); assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); - assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'should be the Approval event'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); assert.equal(userone, approveNftToken.logs[0].args.owner, 'must be equal'); assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); assert.equal(tokenIdUnlimitThree.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); @@ -509,7 +567,7 @@ contract('MetaMarketplace', accounts => { from: admin }); assert.equal(approveUsdcTokens.receipt.logs.length, 1, 'triggers one events'); - assert.equal(approveUsdcTokens.receipt.logs[0].event, 'Approval', 'should be the Approval event'); + assert.equal(approveUsdcTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); assert.equal(admin, approveUsdcTokens.logs[0].args.owner, 'must be owner'); assert.equal(mMarket.address, approveUsdcTokens.logs[0].args.spender, 'must be spender'); assert.equal(tokenWethPrice.toString(), approveUsdcTokens.logs[0].args.value.toString(), 'must be equal'); @@ -521,7 +579,7 @@ contract('MetaMarketplace', accounts => { from: userone }); assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); - assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'should be the NewSellOffer event'); + assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'must be the NewSellOffer event'); assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); assert.equal(userone, selloffer.logs[0].args.seller, 'userone must seller'); assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); @@ -529,9 +587,10 @@ contract('MetaMarketplace', accounts => { const purchase = await mMarket.purchase(nft.address, tokenIdUnlimitThree, WETH, tokenWethPrice, { from: admin }); - assert.equal(purchase.receipt.logs.length, 2, 'triggers one events'); - assert.equal(purchase.receipt.logs[0].event, 'CalculatedFees', 'should be the CalculatedFees event'); - assert.equal(purchase.receipt.logs[1].event, 'Sale', 'should be the Sale event'); + assert.equal(purchase.receipt.logs.length, 3, 'triggers three events'); + assert.equal(purchase.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); + assert.equal(purchase.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); + assert.equal(purchase.receipt.logs[2].event, 'Sale', 'must be the Sale event'); }); @@ -549,14 +608,19 @@ contract('MetaMarketplace', accounts => { const tokenMstPriceStr = '10'; let tokenMstPrice = web3.utils.toWei(web3.utils.toBN(tokenMstPriceStr)); const owner = await nft.ownerOf(tokenIdUniue); + console.log("owner before " + owner); assert.equal(owner, admin, "owned by admin"); + const getAuthorBeforePurchase = await nft.get_author(midUnique); + console.log("author before " + getAuthorBeforePurchase); + assert.equal(getAuthorBeforePurchase, admin, "must be equal"); + // Approve mst tokens from userone to meta market address const approveMstTokens = await mst.approve(mMarket.address, tokenMstPrice, { from: userone }); assert.equal(approveMstTokens.receipt.logs.length, 1, 'triggers one events'); - assert.equal(approveMstTokens.receipt.logs[0].event, 'Approval', 'should be the Approval event'); + assert.equal(approveMstTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); assert.equal(userone, approveMstTokens.logs[0].args.owner, 'must be owner'); assert.equal(mMarket.address, approveMstTokens.logs[0].args.spender, 'must be spender'); assert.equal(tokenMstPrice.toString(), approveMstTokens.logs[0].args.value.toString(), 'must be equal'); @@ -570,7 +634,7 @@ contract('MetaMarketplace', accounts => { from: userone }); assert.equal(saleoffer.receipt.logs.length, 1, 'triggers one events'); - assert.equal(saleoffer.receipt.logs[0].event, 'NewBuyOffer', 'should be the NewBuyOffer event'); + assert.equal(saleoffer.receipt.logs[0].event, 'NewBuyOffer', 'must be the NewBuyOffer event'); assert.equal(tokenIdUniue, saleoffer.logs[0].args.tokenId, 'must be equal'); assert.equal(userone, saleoffer.logs[0].args.buyer, 'offer must be called by userone'); assert.equal(tokenMstPrice.toString(), saleoffer.logs[0].args.value.toString(), 'must be equal'); @@ -580,7 +644,7 @@ contract('MetaMarketplace', accounts => { from: admin }); assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); - assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'should be the Approval event'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); assert.equal(tokenIdUniue.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); @@ -588,42 +652,70 @@ contract('MetaMarketplace', accounts => { //Check approved address const approvedAddress = await nft.getApproved(tokenIdUniue); assert.equal(mMarket.address, approvedAddress, 'must be equal'); - + + const rarity = await nft.get_rarity(midUnique); + console.log("rarity " + rarity.toString()); + const acceptOfferByOwner = await mMarket.acceptBuyOffer(nft.address, tokenIdUniue, MST, { from: admin }); - assert.equal(acceptOfferByOwner.receipt.logs.length, 2, 'triggers two events'); - assert.equal(acceptOfferByOwner.receipt.logs[0].event, 'CalculatedFees', 'must be the CalculatedFees event'); - assert.equal(acceptOfferByOwner.receipt.logs[1].event, 'Sale', 'must be the Sale event'); + const newOwner = await nft.ownerOf(tokenIdUniue); + console.log("owner after " + newOwner); + + assert.equal(acceptOfferByOwner.receipt.logs.length, 3, 'triggers two events'); + assert.equal(acceptOfferByOwner.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); + assert.equal(acceptOfferByOwner.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); + assert.equal(acceptOfferByOwner.receipt.logs[2].event, 'Sale', 'must be the Sale event'); const mMstBalance = await mst.balanceOf(mMarket.address); const royaltyMstBalance = await mst.balanceOf(royaltyaddress); - assert.equal(acceptOfferByOwner.receipt.logs[0].args.fees.toString(), (royaltyMstBalance/2).toString(), 'must be equal'); - assert.equal(acceptOfferByOwner.receipt.logs[0].args.feeAddress, royaltyaddress,'must be admin address to get royalty'); + assert.equal(acceptOfferByOwner.receipt.logs[0].args.nft_contract_, nft.address, 'must be nft contract address'); + assert.equal(acceptOfferByOwner.receipt.logs[0].args.tokenId, tokenIdUniue, 'must be equal'); + assert.equal(acceptOfferByOwner.receipt.logs[0].args.recepient, admin, 'recepient must be admin'); + assert.equal(acceptOfferByOwner.receipt.logs[0].args.value.toString(), (royaltyMstBalance / 2).toString(), 'must be equal'); + + assert.equal(acceptOfferByOwner.receipt.logs[1].args.fees.toString(), (royaltyMstBalance / 2).toString(), 'must be equal'); + assert.equal(acceptOfferByOwner.receipt.logs[1].args.feeAddress, royaltyaddress, 'must be admin address to get royalty'); assert.equal(mMstBalance.toString(), 0, 'must be zero after buy offer acception'); - - assert.equal(acceptOfferByOwner.receipt.logs[1].args.nft_contract_, nft.address, 'must be nft contract address'); - assert.equal(acceptOfferByOwner.receipt.logs[1].args.tokenId, tokenIdUniue, 'must be equal'); - assert.equal(acceptOfferByOwner.receipt.logs[1].args.seller, admin, 'seller must be admin'); - assert.equal(acceptOfferByOwner.receipt.logs[1].args.buyer, userone, 'buyer must be userone'); - assert.equal(acceptOfferByOwner.receipt.logs[1].args.value.toString(), tokenMstPrice.toString(), 'must be equal'); + + assert.equal(acceptOfferByOwner.receipt.logs[2].args.nft_contract_, nft.address, 'must be nft contract address'); + assert.equal(acceptOfferByOwner.receipt.logs[2].args.tokenId, tokenIdUniue, 'must be equal'); + assert.equal(acceptOfferByOwner.receipt.logs[2].args.seller, admin, 'seller must be admin'); + assert.equal(acceptOfferByOwner.receipt.logs[2].args.buyer, userone, 'buyer must be userone'); + assert.equal(acceptOfferByOwner.receipt.logs[2].args.value.toString(), tokenMstPrice.toString(), 'must be equal'); + + // await nft.updateAuthorsip(tokenIdUniue); + // assert.equal(transferAuthorship.receipt.logs.length, 2, 'triggers one event'); + // assert.equal(transferAuthorship.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + // assert.equal(transferAuthorship.receipt.logs[1].event, 'Transfer', 'must be the Transfer event'); + // console.log(transferAuthorship.receipt.logs.length); + + // assert.equal(transferAuthorship.receipt.logs[0].args.old_author, admin, "admin must be an old owner"); + // assert.equal(transferAuthorship.receipt.logs[0].args.new_author, userone, "userone must be an new owner"); + // assert.equal(transferAuthorship.receipt.logs[0].args.master_id, midUnique, "must be equal"); + + const getAuthorAfterPurchase = await nft.get_author(midUnique); + console.log("author after " + getAuthorAfterPurchase); + // assert.equal(getAuthorAfterPurchase, userone, "must be a new author"); } }); - it('should make sell offer with unique supply type and withdraw it', async () => { const tokenWethPriceStr = '10'; let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); const owner = await nft.ownerOf(tokenIdUniue); assert.equal(owner, userone, "owned by admin"); + // const getAuthorBeforePurchase = await nft.get_author(midUnique); + // assert.equal(getAuthorBeforePurchase, userone, "must be equal"); + const approveNftToken = await nft.approve(mMarket.address, tokenIdUniue, { from: userone }); assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); - assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'should be the Approval event'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); assert.equal(userone, approveNftToken.logs[0].args.owner, 'must be equal'); assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); assert.equal(tokenIdUniue.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); @@ -632,7 +724,7 @@ contract('MetaMarketplace', accounts => { from: userone }); assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); - assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'should be the NewSellOffer event'); + assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'must be the NewSellOffer event'); assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); assert.equal(userone, selloffer.logs[0].args.seller, 'admin must seller'); assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); @@ -650,11 +742,14 @@ contract('MetaMarketplace', accounts => { const owner = await nft.ownerOf(tokenIdUniue); assert.equal(owner, userone, "owned by admin"); + // const getAuthorBeforePurchase = await nft.get_author(midUnique); + // assert.equal(getAuthorBeforePurchase, userone, "must be equal"); + const approveNftToken = await nft.approve(mMarket.address, tokenIdUniue, { from: userone }); assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); - assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'should be the Approval event'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); assert.equal(userone, approveNftToken.logs[0].args.owner, 'must be equal'); assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); assert.equal(tokenIdUniue.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); @@ -672,7 +767,7 @@ contract('MetaMarketplace', accounts => { from: admin }); assert.equal(approveWethTokens.receipt.logs.length, 1, 'triggers one events'); - assert.equal(approveWethTokens.receipt.logs[0].event, 'Approval', 'should be the Approval event'); + assert.equal(approveWethTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); assert.equal(admin, approveWethTokens.logs[0].args.owner, 'must be owner'); assert.equal(mMarket.address, approveWethTokens.logs[0].args.spender, 'must be spender'); assert.equal(tokenWethPrice.toString(), approveWethTokens.logs[0].args.value.toString(), 'must be equal'); @@ -681,15 +776,24 @@ contract('MetaMarketplace', accounts => { const checkAllowance = await weth.allowance(admin, mMarket.address); assert.equal(checkAllowance.toString(), tokenWethPrice.toString()); - const uBalanceBefore = await weth.balanceOf(admin); - - console.log(uBalanceBefore.toString()); const purchase = await mMarket.purchase(nft.address, tokenIdUniue, WETH, tokenWethPrice, { from: admin }); - assert.equal(purchase.receipt.logs.length, 2, 'triggers one events'); - assert.equal(purchase.receipt.logs[0].event, 'CalculatedFees', 'should be the CalculatedFees event'); - assert.equal(purchase.receipt.logs[1].event, 'Sale', 'should be the Sale event'); + assert.equal(purchase.receipt.logs.length, 3, 'triggers three events'); + assert.equal(purchase.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); + assert.equal(purchase.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); + assert.equal(purchase.receipt.logs[2].event, 'Sale', 'must be the Sale event'); + + // const transferAuthorship = await nft.transferAuthorship(midUnique, admin, {from: userone}); + + // assert.equal(transferAuthorship.receipt.logs.length, 1, 'triggers one event'); + // assert.equal(transferAuthorship.receipt.logs[0].event, 'AuthorshipTransferred', 'must be the AuthorshipTransferred event'); + // assert.equal(transferAuthorship.receipt.logs[0].args.old_author, userone, "userone must be an old owner"); + // assert.equal(transferAuthorship.receipt.logs[0].args.new_author, admin, "admin must be an new owner"); + // assert.equal(transferAuthorship.receipt.logs[0].args.master_id, midUnique, "must be equal"); + + const getAuthorAfterPurchase = await nft.get_author(midUnique); + assert.equal(getAuthorAfterPurchase, admin, "must be a new author"); }); }); \ No newline at end of file diff --git a/test/metaMarketplaceNftTemplate.js b/test/metaMarketplaceNftTemplate.js index cde1934..38953b9 100644 --- a/test/metaMarketplaceNftTemplate.js +++ b/test/metaMarketplaceNftTemplate.js @@ -24,6 +24,7 @@ function makeRandomLink(length) { contract('MetaMarketplace', accounts => { let factory, nft, mst, mMarket; + let tokenId; let network; let tokenIdUnlimitOne, tokenIdUnlimitTwo, tokenIdUnlimitThree, tokenIdLimit, tokenIdUniue; let admin, userone, royaltyaddress, userthree; @@ -158,16 +159,15 @@ contract('MetaMarketplace', accounts => { assert.equal(userWethTokenBalanceAfter.toString(), wethTokensToMint.toString(), 'admins token balance after mint'); } }); - it('should create nft', async () => { + it('should create nft', async () => { const createItemUnlimit = await nft.mintNft(admin); - const tokenId = createItemUnlimit.logs[1].args.tokenId; - console.log(createItemUnlimit.logs[0].args); - console.log(createItemUnlimit.logs[1].args.tokenId); - + tokenId = createItemUnlimit.logs[1].args.tokenId; const balance = await nft.balanceOf(admin); - console.log(balance.toString()); + assert.equal(balance, 1, "must be owner of one nft token"); + }); + it('should make buy offer to token with unique supply type without created sale and accept it by owner', async () => { //Set token price const tokenMstPriceStr = '2'; let tokenMstPrice = web3.utils.toWei(web3.utils.toBN(tokenMstPriceStr)); @@ -223,18 +223,19 @@ contract('MetaMarketplace', accounts => { const aMstBalance = await mst.balanceOf(admin); assert.equal(acceptOfferByOwner.receipt.logs.length, 2, 'triggers two events'); - assert.equal(acceptOfferByOwner.receipt.logs[0].event, 'CalculatedFees', 'should be the CalculatedFees event'); - assert.equal(acceptOfferByOwner.receipt.logs[1].event, 'Sale', 'should be the Sale event'); + // assert.equal(acceptOfferByOwner.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); + assert.equal(acceptOfferByOwner.receipt.logs[0].event, 'CalculatedFees', 'must be the CalculatedFees event'); + assert.equal(acceptOfferByOwner.receipt.logs[1].event, 'Sale', 'must be the Sale event'); assert.equal(acceptOfferByOwner.receipt.logs[0].args.fees.toString(), royaltyMstBalance.toString(), 'must be equal'); assert.equal(acceptOfferByOwner.receipt.logs[0].args.feeAddress, royaltyaddress, 'must be admin address to get royalty'); - const authorBalance = acceptOfferByOwner.receipt.logs[0].args.transfered_amount - acceptOfferByOwner.receipt.logs[0].args.fees; + const authorBalance = tokenMstPrice - acceptOfferByOwner.receipt.logs[0].args.fees; assert.equal(authorBalance.toString(), aMstBalance.toString(), 'must be equal'); assert.equal(mMstBalance.toString(), 0, 'must be zero after buy offer acception'); const expectedTokenId = acceptOfferByOwner.receipt.logs[1].args.tokenId; assert.equal(acceptOfferByOwner.receipt.logs[1].args.nft_contract_, nft.address, 'must be nft contract address'); - // assert.equal(expectedTokenId, tokenId, 'must be equal'); + assert.equal(expectedTokenId.toString(), tokenId.toString(), 'must be equal'); assert.equal(acceptOfferByOwner.receipt.logs[1].args.seller, admin, 'seller must be admin'); assert.equal(acceptOfferByOwner.receipt.logs[1].args.buyer, userone, 'buyer must be userone'); assert.equal(acceptOfferByOwner.receipt.logs[1].args.value.toString(), tokenMstPrice.toString(), 'must be equal'); diff --git a/truffle-config.js b/truffle-config.js index ce1a2b1..8a38c6c 100644 --- a/truffle-config.js +++ b/truffle-config.js @@ -25,8 +25,8 @@ // const mnemonic = fs.readFileSync(".secret").toString().trim(); // const path = require("path"); -//const { projectId, privateKeys, coinmarketcupKey , etherscanApiKey} = require('./secret.json'); -//const HDWalletProvider = require('@truffle/hdwallet-provider'); +const { projectId, privateKeys, coinmarketcupKey , etherscanApiKey} = require('./secret.json'); +// const HDWalletProvider = require('@truffle/hdwallet-provider'); module.exports = { /** * Networks define how you connect to your ethereum client and let you set the @@ -89,44 +89,44 @@ module.exports = { gasPrice: '20000000000', network_id: "*" }, - ropsten: { - provider: () => new HDWalletProvider(privateKeys, `wss://ropsten.infura.io/ws/v3/${projectId}`), - network_id: 3, // Ropsten's id - gas: 7900000, // Ropsten has a lower block limit than mainnet - gasLimit: '7999999', - gasPrice: '10000000000', - websocket: true, - confirmations: 2, // # of confs to wait between deployments. (default: 0) - timeoutBlocks: 50000, // # of blocks before a deployment times out (minimum/default: 50) - skipDryRun: false, // Skip dry run before migrations? (default: false for public nets ) - networkCheckTimeout: 1000000 - }, + // ropsten: { + // provider: () => new HDWalletProvider(privateKeys, `wss://ropsten.infura.io/ws/v3/${projectId}`), + // network_id: 3, // Ropsten's id + // gas: 7900000, // Ropsten has a lower block limit than mainnet + // gasLimit: '7999999', + // gasPrice: '10000000000', + // websocket: true, + // confirmations: 2, // # of confs to wait between deployments. (default: 0) + // timeoutBlocks: 50000, // # of blocks before a deployment times out (minimum/default: 50) + // skipDryRun: false, // Skip dry run before migrations? (default: false for public nets ) + // networkCheckTimeout: 1000000 + // }, }, // Set default mocha options here, use special reporters etc. mocha: { - enableTimeouts: false - // reporter: 'eth-gas-reporter', - // reporterOptions : { - // currency: 'EUR', - // url:'http://127.0.0.1:8545', - // coinmarketcap: coinmarketcupKey, - // onlyCalledMethods: true, - // showTimeSpent: true, - // excludeContracts: ['Migrations'], - // showMethodSig: true, - // } // See options below - // timeout: 100000 + enableTimeouts: false, + reporter: 'eth-gas-reporter', + reporterOptions : { + currency: 'EUR', + url:'http://127.0.0.1:7545', + coinmarketcap: coinmarketcupKey, + onlyCalledMethods: true, + showTimeSpent: true, + excludeContracts: ['Migrations'], + showMethodSig: true, + }, // See options below + timeout: 100000 }, plugins: [ 'truffle-plugin-verify' ], - //api_keys: { - //etherscan: etherscanApiKey - //}, + api_keys: { + etherscan: etherscanApiKey + }, // Configure your compilers compilers: { From 986adee7e3d4a6d895a9a01adc4326314d9f6aa4 Mon Sep 17 00:00:00 2001 From: Takeshi Date: Fri, 17 Dec 2021 04:49:33 -0800 Subject: [PATCH 33/38] fix set rarity function and update authorship function --- contracts/721/singleton/MSNFT.sol | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/contracts/721/singleton/MSNFT.sol b/contracts/721/singleton/MSNFT.sol index 680974e..2e8eb9a 100644 --- a/contracts/721/singleton/MSNFT.sol +++ b/contracts/721/singleton/MSNFT.sol @@ -238,8 +238,7 @@ contract MSNFT is ERC721Enumerable, Ownable { if (_supplyType == 1) { // Only one token exist _rarity = RarityType.Unique; - } - if (_supplyType == 0) { // Unlimited sale + }else if(_supplyType == 0) { _rarity = RarityType.Unlimited; } else { _rarity = RarityType.Limited; // Limited sale From a819e031ae2013726bea2a1f295be3b4f77fbabb Mon Sep 17 00:00:00 2001 From: Takeshi Date: Fri, 17 Dec 2021 05:02:00 -0800 Subject: [PATCH 34/38] make update authorship function internal again --- contracts/721/singleton/MSNFT.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/721/singleton/MSNFT.sol b/contracts/721/singleton/MSNFT.sol index 2e8eb9a..89e408b 100644 --- a/contracts/721/singleton/MSNFT.sol +++ b/contracts/721/singleton/MSNFT.sol @@ -355,7 +355,7 @@ contract MSNFT is ERC721Enumerable, Ownable { /** * @dev update authorship for *unique* rarity token (setting owner of token to author), authors have privelege to */ - function updateAuthorsip(uint tokenId) public { + function updateAuthorsip(uint tokenId) internal { uint _master_id = ItemToMaster[tokenId]; address old_author_ = authors[_master_id]; From 5e37e3f72b1bb549d92809b93a69d6eb6ac79860 Mon Sep 17 00:00:00 2001 From: Takeshi Date: Tue, 21 Dec 2021 02:35:29 -0800 Subject: [PATCH 35/38] msnft limited test cases --- test/metaMarketplace.js | 1138 +++++++++++++++++----------- test/metaMarketplaceNftTemplate.js | 5 +- 2 files changed, 679 insertions(+), 464 deletions(-) diff --git a/test/metaMarketplace.js b/test/metaMarketplace.js index ddefa71..c9b3ea3 100644 --- a/test/metaMarketplace.js +++ b/test/metaMarketplace.js @@ -33,11 +33,11 @@ function getTotalItems() { contract('MetaMarketplace', accounts => { let factory, nft, mst, mMarket; let network; - let tokenIdUnlimitOne, tokenIdUnlimitTwo, tokenIdUnlimitThree, tokenIdUniue, tokenIdLimited; + let tokenIdUnlimitOne, tokenIdUnlimitTwo, tokenIdUnlimitThree, tokenIdUniue, tokenIdLimitedOne, tokenIdLimitedTwo, tokenIdLimitedThree; let admin, userone, royaltyaddress, userthree; const desc = 'Lorem ipsum dolor sit amet'; let linkOne, linkTwo, linkThree; - let midUnique, midUnlimit; + let midUnique, midUnlimit, midLimited; let tokensTotal = '100'; let lim = getTotalItems(); const [unique, unlimit, limited] = [1, 0, lim]; @@ -49,7 +49,9 @@ contract('MetaMarketplace', accounts => { mMarket = await MetaMarketplace.deployed(); linkOne = 'https://google.com/' + makeRandomLink(20); linkTwo = 'https://google.com/' + makeRandomLink(21); - linkThree = 'https://google.com/' + makeRandomLink(22); + + //Folder link + linkThree = 'https://ipfs.io/ipfs/QmPriFNWQmciNy8ENHagJSA8rovq6dkKDR8aXeGg67MYq3'; network = process.env.NETWORK; mst = await MSTcontract.deployed(); if (network == 'development' || network == 'ganache') { @@ -168,33 +170,6 @@ contract('MetaMarketplace', accounts => { } }); - it('should create master copy with unique supply type', async () => { - const createItemUnique = await factory.createMasterItem(linkTwo, desc, unique); - - assert.equal(createItemUnique.receipt.logs.length, 1, 'triggers one event'); - assert.equal(createItemUnique.receipt.logs[0].event, 'CreateMasterItem', 'should be the CreateMasterItem event'); - - midUnique = createItemUnique.receipt.logs[0].args.master_id; - - const receiptFirstEvent = await expectEvent.inTransaction(createItemUnique.tx, nft, 'MasterCopyCreatedHuman', { - author: admin, - master_id: midUnique, - description: desc, - link: linkTwo - }); - - console.log(receiptFirstEvent); - - const uniqueLink = createItemUnique.receipt.logs[0].args.link; - assert(uniqueLink == linkTwo); - - const mintUniqueToken = await nft.EmitItem(admin, midUnique, 0); - assert.equal(mintUniqueToken.receipt.logs.length, 2, 'triggers two events'); - assert.equal(mintUniqueToken.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); - assert.equal(mintUniqueToken.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); - tokenIdUniue = mintUniqueToken.receipt.logs[0].args.tokenId.toNumber(); - }); - it('should create master copy with limited supply type', async () => { const createItemLimited = await factory.createMasterItem(linkThree, desc, limited); @@ -215,68 +190,624 @@ contract('MetaMarketplace', accounts => { const limitedLink = createItemLimited.receipt.logs[0].args.link; assert(limitedLink == linkThree); - const mintLimitedToken = await nft.EmitItem(admin, midLimited, 1); - assert.equal(mintLimitedToken.receipt.logs.length, 2, 'triggers two events'); - assert.equal(mintLimitedToken.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); - assert.equal(mintLimitedToken.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); - tokenIdLimited = mintLimitedToken.receipt.logs[0].args.tokenId.toNumber(); - }); - - it('should create master copy with unlimit supply type', async () => { - const createItemUnlimit = await factory.createMasterItem(linkOne, desc, unlimit); - assert.equal(createItemUnlimit.receipt.logs.length, 1, 'triggers one event'); - assert.equal(createItemUnlimit.receipt.logs[0].event, 'CreateMasterItem', 'should be the CreateMasterItem event'); - - midUnlimit = createItemUnlimit.receipt.logs[0].args.master_id; - - const receiptFirstEvent = await expectEvent.inTransaction(createItemUnlimit.tx, nft, 'MasterCopyCreatedHuman', { - author: admin, - master_id: midUnlimit, - description: desc, - link: linkOne - }); - console.log(receiptFirstEvent); - - const firstLink = createItemUnlimit.receipt.logs[0].args.link; - assert(firstLink == linkOne); - - const mintUnlimitTokenOne = await nft.EmitItem(admin, midUnlimit, 0); - assert.equal(mintUnlimitTokenOne.receipt.logs.length, 2, 'triggers two events'); - assert.equal(mintUnlimitTokenOne.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); - assert.equal(mintUnlimitTokenOne.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); - tokenIdUnlimitOne = mintUnlimitTokenOne.receipt.logs[0].args.tokenId.toNumber(); - - const mintUnlimitTokenTwo = await nft.EmitItem(admin, midUnlimit, 0); - assert.equal(mintUnlimitTokenTwo.receipt.logs.length, 2, 'triggers two events'); - assert.equal(mintUnlimitTokenTwo.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); - assert.equal(mintUnlimitTokenTwo.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); - tokenIdUnlimitTwo = mintUnlimitTokenTwo.receipt.logs[0].args.tokenId.toNumber(); - - const mintUnlimitTokenThree = await nft.EmitItem(admin, midUnlimit, 0); - assert.equal(mintUnlimitTokenThree.receipt.logs.length, 2, 'triggers two events'); - assert.equal(mintUnlimitTokenThree.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); - assert.equal(mintUnlimitTokenThree.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); - tokenIdUnlimitThree = mintUnlimitTokenThree.receipt.logs[0].args.tokenId.toNumber(); - - const mintUnlimitTokenFour = await nft.EmitItem(admin, midUnlimit, 0); - assert.equal(mintUnlimitTokenFour.receipt.logs.length, 2, 'triggers two events'); - assert.equal(mintUnlimitTokenFour.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); - assert.equal(mintUnlimitTokenFour.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); - tokenIdUnlimitFour = mintUnlimitTokenFour.receipt.logs[0].args.tokenId.toNumber(); + const mintLimOneToken = await nft.EmitItem(admin, midLimited, 1); + assert.equal(mintLimOneToken.receipt.logs.length, 2, 'triggers two events'); + assert.equal(mintLimOneToken.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); + assert.equal(mintLimOneToken.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); + tokenIdLimitedOne = mintLimOneToken.receipt.logs[0].args.tokenId.toNumber(); + + const mintLimTwoToken = await nft.EmitItem(admin, midLimited, 2); + assert.equal(mintLimTwoToken.receipt.logs.length, 2, 'triggers two events'); + assert.equal(mintLimTwoToken.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); + assert.equal(mintLimTwoToken.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); + tokenIdLimitedTwo = mintLimTwoToken.receipt.logs[0].args.tokenId.toNumber(); + + const mintLimThreeToken = await nft.EmitItem(admin, midLimited, 3); + assert.equal(mintLimThreeToken.receipt.logs.length, 2, 'triggers two events'); + assert.equal(mintLimThreeToken.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); + assert.equal(mintLimThreeToken.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); + tokenIdLimitedThree = mintLimThreeToken.receipt.logs[0].args.tokenId.toNumber(); + + // const mintLimFourToken = await nft.EmitItem(admin, midLimited, 4); + // assert.equal(mintLimFourToken.receipt.logs.length, 2, 'triggers two events'); + // assert.equal(mintLimFourToken.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); + // assert.equal(mintLimFourToken.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); + // // tokenIdLimitedThree = mintLimThreeToken.receipt.logs[0].args.tokenId.toNumber(); }); - // Unlimited cases + // it('should create master copy with unique supply type', async () => { + // const createItemUnique = await factory.createMasterItem(linkTwo, desc, unique); + + // assert.equal(createItemUnique.receipt.logs.length, 1, 'triggers one event'); + // assert.equal(createItemUnique.receipt.logs[0].event, 'CreateMasterItem', 'should be the CreateMasterItem event'); + + // midUnique = createItemUnique.receipt.logs[0].args.master_id; + + // const receiptFirstEvent = await expectEvent.inTransaction(createItemUnique.tx, nft, 'MasterCopyCreatedHuman', { + // author: admin, + // master_id: midUnique, + // description: desc, + // link: linkTwo + // }); + + // // console.log(receiptFirstEvent); + + // const uniqueLink = createItemUnique.receipt.logs[0].args.link; + // assert(uniqueLink == linkTwo); + + // const mintUniqueToken = await nft.EmitItem(admin, midUnique, 0); + // assert.equal(mintUniqueToken.receipt.logs.length, 2, 'triggers two events'); + // assert.equal(mintUniqueToken.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); + // assert.equal(mintUniqueToken.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); + // tokenIdUniue = mintUniqueToken.receipt.logs[0].args.tokenId.toNumber(); + // }); + + // it('should create master copy with unlimit supply type', async () => { + // const createItemUnlimit = await factory.createMasterItem(linkOne, desc, unlimit); + // assert.equal(createItemUnlimit.receipt.logs.length, 1, 'triggers one event'); + // assert.equal(createItemUnlimit.receipt.logs[0].event, 'CreateMasterItem', 'should be the CreateMasterItem event'); + + // midUnlimit = createItemUnlimit.receipt.logs[0].args.master_id; + + // const receiptFirstEvent = await expectEvent.inTransaction(createItemUnlimit.tx, nft, 'MasterCopyCreatedHuman', { + // author: admin, + // master_id: midUnlimit, + // description: desc, + // link: linkOne + // }); + // // console.log(receiptFirstEvent); + + // const firstLink = createItemUnlimit.receipt.logs[0].args.link; + // assert(firstLink == linkOne); + + // const mintUnlimitTokenOne = await nft.EmitItem(admin, midUnlimit, 0); + // assert.equal(mintUnlimitTokenOne.receipt.logs.length, 2, 'triggers two events'); + // assert.equal(mintUnlimitTokenOne.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); + // assert.equal(mintUnlimitTokenOne.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); + // tokenIdUnlimitOne = mintUnlimitTokenOne.receipt.logs[0].args.tokenId.toNumber(); + + // const mintUnlimitTokenTwo = await nft.EmitItem(admin, midUnlimit, 0); + // assert.equal(mintUnlimitTokenTwo.receipt.logs.length, 2, 'triggers two events'); + // assert.equal(mintUnlimitTokenTwo.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); + // assert.equal(mintUnlimitTokenTwo.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); + // tokenIdUnlimitTwo = mintUnlimitTokenTwo.receipt.logs[0].args.tokenId.toNumber(); + + // const mintUnlimitTokenThree = await nft.EmitItem(admin, midUnlimit, 0); + // assert.equal(mintUnlimitTokenThree.receipt.logs.length, 2, 'triggers two events'); + // assert.equal(mintUnlimitTokenThree.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); + // assert.equal(mintUnlimitTokenThree.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); + // tokenIdUnlimitThree = mintUnlimitTokenThree.receipt.logs[0].args.tokenId.toNumber(); + + // const mintUnlimitTokenFour = await nft.EmitItem(admin, midUnlimit, 0); + // assert.equal(mintUnlimitTokenFour.receipt.logs.length, 2, 'triggers two events'); + // assert.equal(mintUnlimitTokenFour.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); + // assert.equal(mintUnlimitTokenFour.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); + // tokenIdUnlimitFour = mintUnlimitTokenFour.receipt.logs[0].args.tokenId.toNumber(); + // }); + + // // Unlimited cases + + // //*****************************************/ + + // it('should make buy offer to token with unlimit supply type without created sale and accept it by owner', async () => { + // if (network == 'development' || network == 'ganache') { + // //Set token price + // const tokenMstPriceStr = '10'; + // let tokenMstPrice = web3.utils.toWei(web3.utils.toBN(tokenMstPriceStr)); + // const owner = await nft.ownerOf(tokenIdUnlimitOne); + // assert.equal(owner, admin, "owned by admin"); + + // // Approve mst tokens from userone to meta market address + // const approveMstTokens = await mst.approve(mMarket.address, tokenMstPrice, { + // from: userone + // }); + // assert.equal(approveMstTokens.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(approveMstTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + // assert.equal(userone, approveMstTokens.logs[0].args.owner, 'must be owner'); + // assert.equal(mMarket.address, approveMstTokens.logs[0].args.spender, 'must be spender'); + // assert.equal(tokenMstPrice.toString(), approveMstTokens.logs[0].args.value.toString(), 'must be equal'); + + // //Check approved value + // const checkAllowance = await mst.allowance(userone, mMarket.address); + // assert.equal(checkAllowance.toString(), tokenMstPrice.toString()); + + // //Userone make buy offer + // const saleoffer = await mMarket.makeBuyOffer(nft.address, tokenIdUnlimitOne, MST, tokenMstPrice, { + // from: userone + // }); + // assert.equal(saleoffer.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(saleoffer.receipt.logs[0].event, 'NewBuyOffer', 'must be the NewBuyOffer event'); + // assert.equal(tokenIdUnlimitOne, saleoffer.logs[0].args.tokenId, 'must be equal'); + // assert.equal(userone, saleoffer.logs[0].args.buyer, 'offer must be called by userone'); + // assert.equal(tokenMstPrice.toString(), saleoffer.logs[0].args.value.toString(), 'must be equal'); + + // // Approve nft token from admin to meta market address + // const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitOne, { + // from: admin + // }); + // assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + // assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); + // assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + // assert.equal(tokenIdUnlimitOne.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + // //Check approved address + // const approvedAddress = await nft.getApproved(tokenIdUnlimitOne); + // assert.equal(mMarket.address, approvedAddress, 'must be equal'); + + // const acceptOfferByOwner = await mMarket.acceptBuyOffer(nft.address, tokenIdUnlimitOne, MST, { + // from: admin + // }); + + // assert.equal(acceptOfferByOwner.receipt.logs.length, 3, 'triggers three events'); + // assert.equal(acceptOfferByOwner.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); + // assert.equal(acceptOfferByOwner.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); + // assert.equal(acceptOfferByOwner.receipt.logs[2].event, 'Sale', 'must be the Sale event'); + + // // console.log("args 1 =================="); + // // console.log(acceptOfferByOwner.receipt.logs[0].args); + + // const mMstBalance = await mst.balanceOf(mMarket.address); + // const uMstBalance = await mst.balanceOf(userone); + // const royaltyMstBalance = await mst.balanceOf(royaltyaddress); + // const aMstBalance = await mst.balanceOf(admin); + + + // assert.equal(acceptOfferByOwner.receipt.logs[0].args.nft_contract_, nft.address, 'must be nft contract address'); + // assert.equal(acceptOfferByOwner.receipt.logs[0].args.tokenId, tokenIdUnlimitOne, 'must be equal'); + // assert.equal(acceptOfferByOwner.receipt.logs[0].args.recepient, admin, 'recepient must be admin'); + // assert.equal(acceptOfferByOwner.receipt.logs[0].args.value.toString(), royaltyMstBalance.toString(), 'must be equal'); + + // assert.equal(acceptOfferByOwner.receipt.logs[1].args.fees.toString(), royaltyMstBalance.toString(), 'must be equal'); + // assert.equal(acceptOfferByOwner.receipt.logs[1].args.feeAddress, royaltyaddress, 'must be admin address to get royalty'); + // const authorBalance = tokenMstPrice - acceptOfferByOwner.receipt.logs[1].args.fees; + // assert.equal(authorBalance.toString(), aMstBalance.toString(), 'must be equal'); + // assert.equal(mMstBalance.toString(), 0, 'must be zero after buy offer acception'); + + // assert.equal(acceptOfferByOwner.receipt.logs[2].args.nft_contract_, nft.address, 'must be nft contract address'); + // assert.equal(acceptOfferByOwner.receipt.logs[2].args.tokenId, tokenIdUnlimitOne, 'must be equal'); + // assert.equal(acceptOfferByOwner.receipt.logs[2].args.seller, admin, 'seller must be admin'); + // assert.equal(acceptOfferByOwner.receipt.logs[2].args.buyer, userone, 'buyer must be userone'); + // assert.equal(acceptOfferByOwner.receipt.logs[2].args.value.toString(), tokenMstPrice.toString(), 'must be equal'); + + // const ownership = await nft.ownerOf(tokenIdUnlimitOne); + // console.log(ownership); + // } + // }); + + // it('should withdraw buy offer with unlimit supply type without created sale', async () => { + // if (network == 'development' || network == 'ganache') { + // const tokenDaiPriceStr = '10'; + // let tokenDaiPrice = web3.utils.toWei(web3.utils.toBN(tokenDaiPriceStr)); + // const owner = await nft.ownerOf(tokenIdUnlimitTwo); + // assert.equal(owner, admin, "owned by admin"); + + // // Approve nft token from admin to meta market address + // const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitTwo, { + // from: admin + // }); + // assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + // assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); + // assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + // assert.equal(tokenIdUnlimitTwo.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + // //Check approved address + // const approvedAddress = await nft.getApproved(tokenIdUnlimitTwo); + // assert.equal(mMarket.address, approvedAddress, 'must be equal'); + + // // Approve mst tokens from userone to meta market address + // const approveDaiTokens = await dai.approve(mMarket.address, tokenDaiPrice, { + // from: userone + // }); + // assert.equal(approveDaiTokens.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(approveDaiTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + // assert.equal(userone, approveDaiTokens.logs[0].args.owner, 'must be owner'); + // assert.equal(mMarket.address, approveDaiTokens.logs[0].args.spender, 'must be spender'); + // assert.equal(tokenDaiPrice.toString(), approveDaiTokens.logs[0].args.value.toString(), 'must be equal'); + + // //Check approved value + // const checkAllowance = await dai.allowance(userone, mMarket.address); + // assert.equal(checkAllowance.toString(), tokenDaiPrice.toString()); + + // //User make buy offer + // const saleoffer = await mMarket.makeBuyOffer(nft.address, tokenIdUnlimitTwo, DAI, tokenDaiPrice, { + // from: userone + // }); + // assert.equal(tokenIdUnlimitTwo, saleoffer.logs[0].args.tokenId, 'must be equal'); + // assert.equal(userone, saleoffer.logs[0].args.buyer, 'offer must be called by userone'); + // assert.equal(tokenDaiPrice.toString(), saleoffer.logs[0].args.value.toString(), 'must be equal'); + + // await time.increase(time.duration.days(2)); + // const withdrawBuyOffer = await mMarket.withdrawBuyOffer(nft.address, tokenIdUnlimitTwo, DAI, { + // from: userone + // }); + // assert.equal(withdrawBuyOffer.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(withdrawBuyOffer.receipt.logs[0].event, 'BuyOfferWithdrawn', 'must be the BuyOfferWithdrawn event'); + // assert.equal(tokenIdUnlimitTwo, withdrawBuyOffer.receipt.logs[0].args.tokenId, 'must be owner'); + // assert.equal(userone, withdrawBuyOffer.receipt.logs[0].args.buyer, 'userone must be buyer'); + // } + // }); + + // it('should make sell offer with unlimit supply type and withdraw it', async () => { + // const tokenWethPriceStr = '10'; + // let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); + // const owner = await nft.ownerOf(tokenIdUnlimitThree); + // assert.equal(owner, admin, "owned by admin"); + + // const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitThree, { + // from: admin + // }); + // assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + // assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); + // assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + // assert.equal(tokenIdUnlimitThree.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + // const selloffer = await mMarket.makeSellOffer(tokenIdUnlimitThree, tokenWethPrice, nft.address, WETH, { + // from: admin + // }); + // assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'must be the NewSellOffer event'); + // assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); + // assert.equal(admin, selloffer.logs[0].args.seller, 'admin must seller'); + // assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); + + // const withdrawselloffer = await mMarket.withdrawSellOffer(nft.address, tokenIdUnlimitThree, { + // from: admin + // }); + // assert.equal(withdrawselloffer.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(withdrawselloffer.receipt.logs[0].event, 'SellOfferWithdrawn', 'must be the SellOfferWithdrawn event'); + // assert.equal(withdrawselloffer.receipt.logs[0].args.tokenId, tokenIdUnlimitThree, 'must be equal'); + // assert.equal(withdrawselloffer.receipt.logs[0].args.seller, admin, 'seller must be admin'); + // }); + + // it('should make sell offer with unlimit supply type', async () => { + // const tokenWethPriceStr = '10'; + // let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); + // const owner = await nft.ownerOf(tokenIdUnlimitThree); + // assert.equal(owner, admin, "owned by admin"); + + // const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitThree, { + // from: admin + // }); + // assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + // assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); + // assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + // assert.equal(tokenIdUnlimitThree.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + // const selloffer = await mMarket.makeSellOffer(tokenIdUnlimitThree, tokenWethPrice, nft.address, WETH, { + // from: admin + // }); + // assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'must be the NewSellOffer event'); + // assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); + // assert.equal(admin, selloffer.logs[0].args.seller, 'admin must seller'); + // assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); + + // const approveWethTokens = await weth.approve(mMarket.address, tokenWethPrice, { + // from: userone + // }); + // assert.equal(approveWethTokens.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(approveWethTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + // assert.equal(userone, approveWethTokens.logs[0].args.owner, 'must be owner'); + // assert.equal(mMarket.address, approveWethTokens.logs[0].args.spender, 'must be spender'); + // assert.equal(tokenWethPrice.toString(), approveWethTokens.logs[0].args.value.toString(), 'must be equal'); + + // //Check approved value + // const checkAllowance = await weth.allowance(userone, mMarket.address); + // assert.equal(checkAllowance.toString(), tokenWethPrice.toString()); + + // const purchase = await mMarket.purchase(nft.address, tokenIdUnlimitThree, WETH, tokenWethPrice, { + // from: userone + // }); + + // const mWethBalance = await weth.balanceOf(mMarket.address); + // const uMstBalance = await weth.balanceOf(userone); + // const royaltyWethBalance = await weth.balanceOf(royaltyaddress); + // const aWethBalance = await weth.balanceOf(admin); + + // assert.equal(purchase.receipt.logs.length, 3, 'triggers three events'); + + // assert.equal(purchase.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); + // assert.equal(purchase.receipt.logs[0].args.nft_contract_, nft.address, 'must be nft contract address'); + // assert.equal(purchase.receipt.logs[0].args.tokenId, tokenIdUnlimitThree, 'must be equal'); + // assert.equal(purchase.receipt.logs[0].args.recepient, admin, 'recepient must be admin'); + // assert.equal(purchase.receipt.logs[0].args.value.toString(), royaltyWethBalance.toString(), 'must be equal'); + + // assert.equal(purchase.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); + // assert.equal(purchase.receipt.logs[1].args.fees.toString(), royaltyWethBalance.toString(), 'must be the CalculatedFees event'); + // assert.equal(purchase.receipt.logs[1].args.feeAddress, royaltyaddress, 'must be the CalculatedFees event'); + + // const authorBalance = tokenWethPrice - purchase.receipt.logs[1].args.fees; + // assert.equal(authorBalance.toString(), aWethBalance.toString(), 'must be equal'); + // assert.equal(mWethBalance.toString(), 0, 'must be zero after buy offer acception'); + + // assert.equal(purchase.receipt.logs[2].event, 'Sale', 'must be the Sale event'); + // assert.equal(purchase.receipt.logs[2].args.nft_contract_, nft.address, 'must be nft contract address'); + // assert.equal(purchase.receipt.logs[2].args.tokenId, tokenIdUnlimitThree, 'must be equal'); + // assert.equal(purchase.receipt.logs[2].args.seller, admin, 'seller must be admin'); + // assert.equal(purchase.receipt.logs[2].args.buyer, userone, 'buyer must be userone'); + // assert.equal(purchase.receipt.logs[2].args.value.toString(), tokenWethPrice.toString(), 'must be equal'); + + // const ownership = await nft.ownerOf(tokenIdUnlimitThree); + // console.log("ownership " + ownership); + + // }); + + // it('should make sell offer with unlimit supply type by new owner and withdraw it', async () => { + // const tokenWethPriceStr = '2'; + // let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); + // const owner = await nft.ownerOf(tokenIdUnlimitThree); + // assert.equal(owner, userone, "owned by userone"); + + // const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitThree, { + // from: userone + // }); + // assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + // assert.equal(userone, approveNftToken.logs[0].args.owner, 'must be equal'); + // assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + // assert.equal(tokenIdUnlimitThree.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + // const selloffer = await mMarket.makeSellOffer(tokenIdUnlimitThree, tokenWethPrice, nft.address, WETH, { + // from: userone + // }); + // assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'must be the NewSellOffer event'); + // assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); + // assert.equal(userone, selloffer.logs[0].args.seller, 'userone must seller'); + // assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); + + // const withdrawselloffer = await mMarket.withdrawSellOffer(nft.address, tokenIdUnlimitThree, { + // from: userone + // }); + // assert.equal(withdrawselloffer.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(withdrawselloffer.receipt.logs[0].event, 'SellOfferWithdrawn', 'must be the SellOfferWithdrawn event'); + + // }); + + // it('should make sell offer with unlimit supply type by new owner', async () => { + // const tokenWethPriceStr = '2'; + // let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); + // const owner = await nft.ownerOf(tokenIdUnlimitThree); + // assert.equal(owner, userone, "owned by userone"); + + // const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitThree, { + // from: userone + // }); + // assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + // assert.equal(userone, approveNftToken.logs[0].args.owner, 'must be equal'); + // assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + // assert.equal(tokenIdUnlimitThree.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + // const approveUsdcTokens = await weth.approve(mMarket.address, tokenWethPrice, { + // from: admin + // }); + // assert.equal(approveUsdcTokens.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(approveUsdcTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + // assert.equal(admin, approveUsdcTokens.logs[0].args.owner, 'must be owner'); + // assert.equal(mMarket.address, approveUsdcTokens.logs[0].args.spender, 'must be spender'); + // assert.equal(tokenWethPrice.toString(), approveUsdcTokens.logs[0].args.value.toString(), 'must be equal'); + // //Check approved value + // const checkAllowance = await weth.allowance(admin, mMarket.address); + // assert.equal(checkAllowance.toString(), tokenWethPrice.toString()); + + // const selloffer = await mMarket.makeSellOffer(tokenIdUnlimitThree, tokenWethPrice, nft.address, WETH, { + // from: userone + // }); + // assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'must be the NewSellOffer event'); + // assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); + // assert.equal(userone, selloffer.logs[0].args.seller, 'userone must seller'); + // assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); + + // const purchase = await mMarket.purchase(nft.address, tokenIdUnlimitThree, WETH, tokenWethPrice, { + // from: admin + // }); + // assert.equal(purchase.receipt.logs.length, 3, 'triggers three events'); + // assert.equal(purchase.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); + // assert.equal(purchase.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); + // assert.equal(purchase.receipt.logs[2].event, 'Sale', 'must be the Sale event'); + + // }); + + + + // // Unique cases + + // //*****************************************/ + + + // it('should make buy offer to token with unique supply type without created sale and accept it by owner', async () => { + // if (network == 'development' || network == 'ganache') { + // //Set token price + // const tokenMstPriceStr = '10'; + // let tokenMstPrice = web3.utils.toWei(web3.utils.toBN(tokenMstPriceStr)); + // const owner = await nft.ownerOf(tokenIdUniue); + // console.log("owner before " + owner); + // assert.equal(owner, admin, "owned by admin"); + + // const getAuthorBeforePurchase = await nft.get_author(midUnique); + // console.log("author before " + getAuthorBeforePurchase); + // assert.equal(getAuthorBeforePurchase, admin, "must be equal"); + + // // Approve mst tokens from userone to meta market address + // const approveMstTokens = await mst.approve(mMarket.address, tokenMstPrice, { + // from: userone + // }); + // assert.equal(approveMstTokens.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(approveMstTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + // assert.equal(userone, approveMstTokens.logs[0].args.owner, 'must be owner'); + // assert.equal(mMarket.address, approveMstTokens.logs[0].args.spender, 'must be spender'); + // assert.equal(tokenMstPrice.toString(), approveMstTokens.logs[0].args.value.toString(), 'must be equal'); + + // //Check approved value + // const checkAllowance = await mst.allowance(userone, mMarket.address); + // assert.equal(checkAllowance.toString(), tokenMstPrice.toString()); + + // //Userone make buy offer + // const saleoffer = await mMarket.makeBuyOffer(nft.address, tokenIdUniue, MST, tokenMstPrice, { + // from: userone + // }); + // assert.equal(saleoffer.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(saleoffer.receipt.logs[0].event, 'NewBuyOffer', 'must be the NewBuyOffer event'); + // assert.equal(tokenIdUniue, saleoffer.logs[0].args.tokenId, 'must be equal'); + // assert.equal(userone, saleoffer.logs[0].args.buyer, 'offer must be called by userone'); + // assert.equal(tokenMstPrice.toString(), saleoffer.logs[0].args.value.toString(), 'must be equal'); + + // // Approve nft token from admin to meta market address + // const approveNftToken = await nft.approve(mMarket.address, tokenIdUniue, { + // from: admin + // }); + // assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + // assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); + // assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + // assert.equal(tokenIdUniue.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + // //Check approved address + // const approvedAddress = await nft.getApproved(tokenIdUniue); + // assert.equal(mMarket.address, approvedAddress, 'must be equal'); + + // const rarity = await nft.get_rarity(midUnique); + // console.log("rarity " + rarity.toString()); + + // const acceptOfferByOwner = await mMarket.acceptBuyOffer(nft.address, tokenIdUniue, MST, { + // from: admin + // }); + + // const newOwner = await nft.ownerOf(tokenIdUniue); + // console.log("owner after " + newOwner); + + // assert.equal(acceptOfferByOwner.receipt.logs.length, 3, 'triggers two events'); + // assert.equal(acceptOfferByOwner.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); + // assert.equal(acceptOfferByOwner.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); + // assert.equal(acceptOfferByOwner.receipt.logs[2].event, 'Sale', 'must be the Sale event'); + + // const mMstBalance = await mst.balanceOf(mMarket.address); + // const royaltyMstBalance = await mst.balanceOf(royaltyaddress); + + // assert.equal(acceptOfferByOwner.receipt.logs[0].args.nft_contract_, nft.address, 'must be nft contract address'); + // assert.equal(acceptOfferByOwner.receipt.logs[0].args.tokenId, tokenIdUniue, 'must be equal'); + // assert.equal(acceptOfferByOwner.receipt.logs[0].args.recepient, admin, 'recepient must be admin'); + // assert.equal(acceptOfferByOwner.receipt.logs[0].args.value.toString(), (royaltyMstBalance / 2).toString(), 'must be equal'); + + // assert.equal(acceptOfferByOwner.receipt.logs[1].args.fees.toString(), (royaltyMstBalance / 2).toString(), 'must be equal'); + // assert.equal(acceptOfferByOwner.receipt.logs[1].args.feeAddress, royaltyaddress, 'must be admin address to get royalty'); + // assert.equal(mMstBalance.toString(), 0, 'must be zero after buy offer acception'); + + // assert.equal(acceptOfferByOwner.receipt.logs[2].args.nft_contract_, nft.address, 'must be nft contract address'); + // assert.equal(acceptOfferByOwner.receipt.logs[2].args.tokenId, tokenIdUniue, 'must be equal'); + // assert.equal(acceptOfferByOwner.receipt.logs[2].args.seller, admin, 'seller must be admin'); + // assert.equal(acceptOfferByOwner.receipt.logs[2].args.buyer, userone, 'buyer must be userone'); + // assert.equal(acceptOfferByOwner.receipt.logs[2].args.value.toString(), tokenMstPrice.toString(), 'must be equal'); + + // const getAuthorAfterPurchase = await nft.get_author(midUnique); + // assert.equal(getAuthorAfterPurchase, userone, "must be a new author"); + // } + // }); + + // it('should make sell offer with unique supply type and withdraw it', async () => { + // const tokenWethPriceStr = '10'; + // let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); + // const owner = await nft.ownerOf(tokenIdUniue); + // assert.equal(owner, userone, "owned by admin"); + + // const approveNftToken = await nft.approve(mMarket.address, tokenIdUniue, { + // from: userone + // }); + // assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + // assert.equal(userone, approveNftToken.logs[0].args.owner, 'must be equal'); + // assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + // assert.equal(tokenIdUniue.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + // const selloffer = await mMarket.makeSellOffer(tokenIdUniue, tokenWethPrice, nft.address, WETH, { + // from: userone + // }); + // assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'must be the NewSellOffer event'); + // assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); + // assert.equal(userone, selloffer.logs[0].args.seller, 'admin must seller'); + // assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); + + // const withdrawselloffer = await mMarket.withdrawSellOffer(nft.address, tokenIdUniue, { + // from: userone + // }); + // assert.equal(withdrawselloffer.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(withdrawselloffer.receipt.logs[0].event, 'SellOfferWithdrawn', 'should be the SellOfferWithdrawn event'); + // }); + + // it('should make sell offer with unique supply type', async () => { + // const tokenWethPriceStr = '1'; + // let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); + // const owner = await nft.ownerOf(tokenIdUniue); + // assert.equal(owner, userone, "owned by admin"); + + // const approveNftToken = await nft.approve(mMarket.address, tokenIdUniue, { + // from: userone + // }); + // assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + // assert.equal(userone, approveNftToken.logs[0].args.owner, 'must be equal'); + // assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + // assert.equal(tokenIdUniue.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + // const selloffer = await mMarket.makeSellOffer(tokenIdUniue, tokenWethPrice, nft.address, WETH, { + // from: userone + // }); + // assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'should be the NewSellOffer event'); + // assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); + // assert.equal(userone, selloffer.logs[0].args.seller, 'admin must seller'); + // assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); + + // const approveWethTokens = await weth.approve(mMarket.address, tokenWethPrice, { + // from: admin + // }); + // assert.equal(approveWethTokens.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(approveWethTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + // assert.equal(admin, approveWethTokens.logs[0].args.owner, 'must be owner'); + // assert.equal(mMarket.address, approveWethTokens.logs[0].args.spender, 'must be spender'); + // assert.equal(tokenWethPrice.toString(), approveWethTokens.logs[0].args.value.toString(), 'must be equal'); + + // //Check approved value + // const checkAllowance = await weth.allowance(admin, mMarket.address); + // assert.equal(checkAllowance.toString(), tokenWethPrice.toString()); + + // const purchase = await mMarket.purchase(nft.address, tokenIdUniue, WETH, tokenWethPrice, { + // from: admin + // }); + // assert.equal(purchase.receipt.logs.length, 3, 'triggers three events'); + // assert.equal(purchase.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); + // assert.equal(purchase.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); + // assert.equal(purchase.receipt.logs[2].event, 'Sale', 'must be the Sale event'); + + // const getAuthorAfterPurchase = await nft.get_author(midUnique); + // assert.equal(getAuthorAfterPurchase, admin, "must be a new author"); + // }); + + + // Limited cases //*****************************************/ - it('should make buy offer to token with unlimit supply type without created sale and accept it by owner', async () => { + it('should make buy offer to token with limited supply type without created sale and accept it by owner', async () => { if (network == 'development' || network == 'ganache') { //Set token price const tokenMstPriceStr = '10'; let tokenMstPrice = web3.utils.toWei(web3.utils.toBN(tokenMstPriceStr)); - const owner = await nft.ownerOf(tokenIdUnlimitOne); + const owner = await nft.ownerOf(tokenIdLimitedOne); + console.log("owner before " + owner); assert.equal(owner, admin, "owned by admin"); + const getAuthorBeforePurchase = await nft.get_author(midLimited); + console.log("author before " + getAuthorBeforePurchase); + assert.equal(getAuthorBeforePurchase, admin, "must be equal"); + // Approve mst tokens from userone to meta market address const approveMstTokens = await mst.approve(mMarket.address, tokenMstPrice, { from: userone @@ -292,139 +823,87 @@ contract('MetaMarketplace', accounts => { assert.equal(checkAllowance.toString(), tokenMstPrice.toString()); //Userone make buy offer - const saleoffer = await mMarket.makeBuyOffer(nft.address, tokenIdUnlimitOne, MST, tokenMstPrice, { + const saleoffer = await mMarket.makeBuyOffer(nft.address, tokenIdLimitedOne, MST, tokenMstPrice, { from: userone }); assert.equal(saleoffer.receipt.logs.length, 1, 'triggers one events'); assert.equal(saleoffer.receipt.logs[0].event, 'NewBuyOffer', 'must be the NewBuyOffer event'); - assert.equal(tokenIdUnlimitOne, saleoffer.logs[0].args.tokenId, 'must be equal'); + assert.equal(tokenIdLimitedOne, saleoffer.logs[0].args.tokenId, 'must be equal'); assert.equal(userone, saleoffer.logs[0].args.buyer, 'offer must be called by userone'); assert.equal(tokenMstPrice.toString(), saleoffer.logs[0].args.value.toString(), 'must be equal'); // Approve nft token from admin to meta market address - const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitOne, { + const approveNftToken = await nft.approve(mMarket.address, tokenIdLimitedOne, { from: admin }); assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); - assert.equal(tokenIdUnlimitOne.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + assert.equal(tokenIdLimitedOne.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); //Check approved address - const approvedAddress = await nft.getApproved(tokenIdUnlimitOne); + const approvedAddress = await nft.getApproved(tokenIdLimitedOne); assert.equal(mMarket.address, approvedAddress, 'must be equal'); - const acceptOfferByOwner = await mMarket.acceptBuyOffer(nft.address, tokenIdUnlimitOne, MST, { + const balanceOfAdmin = await nft.balanceOf(admin); + console.log(balanceOfAdmin); + + // const rarity = await nft.get_rarity(midUnique); + // console.log("rarity " + rarity.toString()); + + const acceptOfferByOwner = await mMarket.acceptBuyOffer(nft.address, tokenIdLimitedOne, MST, { from: admin }); - assert.equal(acceptOfferByOwner.receipt.logs.length, 3, 'triggers three events'); + const newOwner = await nft.ownerOf(tokenIdLimitedOne); + console.log("owner after " + newOwner); + + assert.equal(acceptOfferByOwner.receipt.logs.length, 3, 'triggers two events'); assert.equal(acceptOfferByOwner.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); assert.equal(acceptOfferByOwner.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); assert.equal(acceptOfferByOwner.receipt.logs[2].event, 'Sale', 'must be the Sale event'); - // console.log("args 1 =================="); - // console.log(acceptOfferByOwner.receipt.logs[0].args); - const mMstBalance = await mst.balanceOf(mMarket.address); - const uMstBalance = await mst.balanceOf(userone); const royaltyMstBalance = await mst.balanceOf(royaltyaddress); - const aMstBalance = await mst.balanceOf(admin); - assert.equal(acceptOfferByOwner.receipt.logs[0].args.nft_contract_, nft.address, 'must be nft contract address'); - assert.equal(acceptOfferByOwner.receipt.logs[0].args.tokenId, tokenIdUnlimitOne, 'must be equal'); + assert.equal(acceptOfferByOwner.receipt.logs[0].args.tokenId, tokenIdLimitedOne, 'must be equal'); assert.equal(acceptOfferByOwner.receipt.logs[0].args.recepient, admin, 'recepient must be admin'); - assert.equal(acceptOfferByOwner.receipt.logs[0].args.value.toString(), royaltyMstBalance.toString(), 'must be equal'); + // assert.equal(acceptOfferByOwner.receipt.logs[0].args.value.toString(), (royaltyMstBalance / 3).toString(), 'must be equal'); - assert.equal(acceptOfferByOwner.receipt.logs[1].args.fees.toString(), royaltyMstBalance.toString(), 'must be equal'); + // assert.equal(acceptOfferByOwner.receipt.logs[1].args.fees.toString(), (royaltyMstBalance / 3).toString(), 'must be equal'); assert.equal(acceptOfferByOwner.receipt.logs[1].args.feeAddress, royaltyaddress, 'must be admin address to get royalty'); - const authorBalance = tokenMstPrice - acceptOfferByOwner.receipt.logs[1].args.fees; - assert.equal(authorBalance.toString(), aMstBalance.toString(), 'must be equal'); assert.equal(mMstBalance.toString(), 0, 'must be zero after buy offer acception'); assert.equal(acceptOfferByOwner.receipt.logs[2].args.nft_contract_, nft.address, 'must be nft contract address'); - assert.equal(acceptOfferByOwner.receipt.logs[2].args.tokenId, tokenIdUnlimitOne, 'must be equal'); + assert.equal(acceptOfferByOwner.receipt.logs[2].args.tokenId, tokenIdLimitedOne, 'must be equal'); assert.equal(acceptOfferByOwner.receipt.logs[2].args.seller, admin, 'seller must be admin'); assert.equal(acceptOfferByOwner.receipt.logs[2].args.buyer, userone, 'buyer must be userone'); assert.equal(acceptOfferByOwner.receipt.logs[2].args.value.toString(), tokenMstPrice.toString(), 'must be equal'); - const ownership = await nft.ownerOf(tokenIdUnlimitOne); - console.log(ownership); - } - }); - - it('should withdraw buy offer with unlimit supply type without created sale', async () => { - if (network == 'development' || network == 'ganache') { - const tokenDaiPriceStr = '10'; - let tokenDaiPrice = web3.utils.toWei(web3.utils.toBN(tokenDaiPriceStr)); - const owner = await nft.ownerOf(tokenIdUnlimitTwo); - assert.equal(owner, admin, "owned by admin"); - - // Approve nft token from admin to meta market address - const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitTwo, { - from: admin - }); - assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); - assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); - assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); - assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); - assert.equal(tokenIdUnlimitTwo.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); - - //Check approved address - const approvedAddress = await nft.getApproved(tokenIdUnlimitTwo); - assert.equal(mMarket.address, approvedAddress, 'must be equal'); - - // Approve mst tokens from userone to meta market address - const approveDaiTokens = await dai.approve(mMarket.address, tokenDaiPrice, { - from: userone - }); - assert.equal(approveDaiTokens.receipt.logs.length, 1, 'triggers one events'); - assert.equal(approveDaiTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); - assert.equal(userone, approveDaiTokens.logs[0].args.owner, 'must be owner'); - assert.equal(mMarket.address, approveDaiTokens.logs[0].args.spender, 'must be spender'); - assert.equal(tokenDaiPrice.toString(), approveDaiTokens.logs[0].args.value.toString(), 'must be equal'); - - //Check approved value - const checkAllowance = await dai.allowance(userone, mMarket.address); - assert.equal(checkAllowance.toString(), tokenDaiPrice.toString()); - - //User make buy offer - const saleoffer = await mMarket.makeBuyOffer(nft.address, tokenIdUnlimitTwo, DAI, tokenDaiPrice, { - from: userone - }); - assert.equal(tokenIdUnlimitTwo, saleoffer.logs[0].args.tokenId, 'must be equal'); - assert.equal(userone, saleoffer.logs[0].args.buyer, 'offer must be called by userone'); - assert.equal(tokenDaiPrice.toString(), saleoffer.logs[0].args.value.toString(), 'must be equal'); - - await time.increase(time.duration.days(2)); - const withdrawBuyOffer = await mMarket.withdrawBuyOffer(nft.address, tokenIdUnlimitTwo, DAI, { - from: userone - }); - assert.equal(withdrawBuyOffer.receipt.logs.length, 1, 'triggers one events'); - assert.equal(withdrawBuyOffer.receipt.logs[0].event, 'BuyOfferWithdrawn', 'must be the BuyOfferWithdrawn event'); - assert.equal(tokenIdUnlimitTwo, withdrawBuyOffer.receipt.logs[0].args.tokenId, 'must be owner'); - assert.equal(userone, withdrawBuyOffer.receipt.logs[0].args.buyer, 'userone must be buyer'); + const getOwnerOfToken = await nft.ownerOf(tokenIdLimitedOne); + console.log(getOwnerOfToken); + // assert.equal(getAuthorAfterPurchase, admin, "must be a new author"); } }); - it('should make sell offer with unlimit supply type and withdraw it', async () => { + it('should make sell offer with limited supply type and withdraw it', async () => { const tokenWethPriceStr = '10'; let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); - const owner = await nft.ownerOf(tokenIdUnlimitThree); + const owner = await nft.ownerOf(tokenIdLimitedTwo); assert.equal(owner, admin, "owned by admin"); - const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitThree, { + const approveNftToken = await nft.approve(mMarket.address, tokenIdLimitedTwo, { from: admin }); assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); - assert.equal(tokenIdUnlimitThree.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + assert.equal(tokenIdLimitedTwo.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); - const selloffer = await mMarket.makeSellOffer(tokenIdUnlimitThree, tokenWethPrice, nft.address, WETH, { + const selloffer = await mMarket.makeSellOffer(tokenIdLimitedTwo, tokenWethPrice, nft.address, WETH, { from: admin }); assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); @@ -433,367 +912,106 @@ contract('MetaMarketplace', accounts => { assert.equal(admin, selloffer.logs[0].args.seller, 'admin must seller'); assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); - const withdrawselloffer = await mMarket.withdrawSellOffer(nft.address, tokenIdUnlimitThree, { + const withdrawselloffer = await mMarket.withdrawSellOffer(nft.address, tokenIdLimitedTwo, { from: admin }); assert.equal(withdrawselloffer.receipt.logs.length, 1, 'triggers one events'); - assert.equal(withdrawselloffer.receipt.logs[0].event, 'SellOfferWithdrawn', 'must be the SellOfferWithdrawn event'); - assert.equal(withdrawselloffer.receipt.logs[0].args.tokenId, tokenIdUnlimitThree, 'must be equal'); - assert.equal(withdrawselloffer.receipt.logs[0].args.seller, admin, 'seller must be admin'); + assert.equal(withdrawselloffer.receipt.logs[0].event, 'SellOfferWithdrawn', 'should be the SellOfferWithdrawn event'); }); - - it('should make sell offer with unlimit supply type', async () => { - const tokenWethPriceStr = '10'; - let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); - const owner = await nft.ownerOf(tokenIdUnlimitThree); + + it('should make sell offer with limited supply type', async () => { + const tokenUsdtPriceStr = '1'; + let tokenUsdtPrice = tokenUsdtPriceStr * 1e6; + const owner = await nft.ownerOf(tokenIdLimitedThree); assert.equal(owner, admin, "owned by admin"); - const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitThree, { + const approveNftToken = await nft.approve(mMarket.address, tokenIdLimitedThree, { from: admin }); assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); - assert.equal(tokenIdUnlimitThree.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + assert.equal(tokenIdLimitedThree.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); - const selloffer = await mMarket.makeSellOffer(tokenIdUnlimitThree, tokenWethPrice, nft.address, WETH, { + const selloffer = await mMarket.makeSellOffer(tokenIdLimitedThree, tokenUsdtPrice, nft.address, USDT, { from: admin }); assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); - assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'must be the NewSellOffer event'); + assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'should be the NewSellOffer event'); assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); assert.equal(admin, selloffer.logs[0].args.seller, 'admin must seller'); - assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); + assert.equal(tokenUsdtPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); - const approveWethTokens = await weth.approve(mMarket.address, tokenWethPrice, { + const approveUsdtTokens = await usdt.approve(mMarket.address, tokenUsdtPrice, { from: userone }); - assert.equal(approveWethTokens.receipt.logs.length, 1, 'triggers one events'); - assert.equal(approveWethTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); - assert.equal(userone, approveWethTokens.logs[0].args.owner, 'must be owner'); - assert.equal(mMarket.address, approveWethTokens.logs[0].args.spender, 'must be spender'); - assert.equal(tokenWethPrice.toString(), approveWethTokens.logs[0].args.value.toString(), 'must be equal'); + assert.equal(approveUsdtTokens.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveUsdtTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(userone, approveUsdtTokens.logs[0].args.owner, 'must be owner'); + assert.equal(mMarket.address, approveUsdtTokens.logs[0].args.spender, 'must be spender'); + assert.equal(tokenUsdtPrice.toString(), approveUsdtTokens.logs[0].args.value.toString(), 'must be equal'); //Check approved value - const checkAllowance = await weth.allowance(userone, mMarket.address); - assert.equal(checkAllowance.toString(), tokenWethPrice.toString()); - - const purchase = await mMarket.purchase(nft.address, tokenIdUnlimitThree, WETH, tokenWethPrice, { - from: userone - }); + const checkAllowance = await usdt.allowance(userone, mMarket.address); + assert.equal(checkAllowance.toString(), tokenUsdtPrice.toString()); - const mWethBalance = await weth.balanceOf(mMarket.address); - const uMstBalance = await weth.balanceOf(userone); - const royaltyWethBalance = await weth.balanceOf(royaltyaddress); - const aWethBalance = await weth.balanceOf(admin); + const userBalance = await usdt.balanceOf(userone); + console.log(userBalance); - assert.equal(purchase.receipt.logs.length, 3, 'triggers three events'); - - assert.equal(purchase.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); - assert.equal(purchase.receipt.logs[0].args.nft_contract_, nft.address, 'must be nft contract address'); - assert.equal(purchase.receipt.logs[0].args.tokenId, tokenIdUnlimitThree, 'must be equal'); - assert.equal(purchase.receipt.logs[0].args.recepient, admin, 'recepient must be admin'); - assert.equal(purchase.receipt.logs[0].args.value.toString(), royaltyWethBalance.toString(), 'must be equal'); - - assert.equal(purchase.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); - assert.equal(purchase.receipt.logs[1].args.fees.toString(), royaltyWethBalance.toString(), 'must be the CalculatedFees event'); - assert.equal(purchase.receipt.logs[1].args.feeAddress, royaltyaddress, 'must be the CalculatedFees event'); - - const authorBalance = tokenWethPrice - purchase.receipt.logs[1].args.fees; - assert.equal(authorBalance.toString(), aWethBalance.toString(), 'must be equal'); - assert.equal(mWethBalance.toString(), 0, 'must be zero after buy offer acception'); - - assert.equal(purchase.receipt.logs[2].event, 'Sale', 'must be the Sale event'); - assert.equal(purchase.receipt.logs[2].args.nft_contract_, nft.address, 'must be nft contract address'); - assert.equal(purchase.receipt.logs[2].args.tokenId, tokenIdUnlimitThree, 'must be equal'); - assert.equal(purchase.receipt.logs[2].args.seller, admin, 'seller must be admin'); - assert.equal(purchase.receipt.logs[2].args.buyer, userone, 'buyer must be userone'); - assert.equal(purchase.receipt.logs[2].args.value.toString(), tokenWethPrice.toString(), 'must be equal'); - - const ownership = await nft.ownerOf(tokenIdUnlimitThree); - console.log("ownership " + ownership); - - }); - - it('should make sell offer with unlimit supply type by new owner and withdraw it', async () => { - const tokenWethPriceStr = '2'; - let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); - const owner = await nft.ownerOf(tokenIdUnlimitThree); - assert.equal(owner, userone, "owned by userone"); - - const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitThree, { + const purchase = await mMarket.purchase(nft.address, tokenIdLimitedThree, USDT, tokenUsdtPrice, { from: userone }); - assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); - assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); - assert.equal(userone, approveNftToken.logs[0].args.owner, 'must be equal'); - assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); - assert.equal(tokenIdUnlimitThree.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); - - const selloffer = await mMarket.makeSellOffer(tokenIdUnlimitThree, tokenWethPrice, nft.address, WETH, { - from: userone - }); - assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); - assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'must be the NewSellOffer event'); - assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); - assert.equal(userone, selloffer.logs[0].args.seller, 'userone must seller'); - assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); - - const withdrawselloffer = await mMarket.withdrawSellOffer(nft.address, tokenIdUnlimitThree, { - from: userone - }); - assert.equal(withdrawselloffer.receipt.logs.length, 1, 'triggers one events'); - assert.equal(withdrawselloffer.receipt.logs[0].event, 'SellOfferWithdrawn', 'must be the SellOfferWithdrawn event'); - - }); - - it('should make sell offer with unlimit supply type by new owner', async () => { - const tokenWethPriceStr = '2'; - let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); - const owner = await nft.ownerOf(tokenIdUnlimitThree); - assert.equal(owner, userone, "owned by userone"); - - const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitThree, { - from: userone - }); - assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); - assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); - assert.equal(userone, approveNftToken.logs[0].args.owner, 'must be equal'); - assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); - assert.equal(tokenIdUnlimitThree.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); - - const approveUsdcTokens = await weth.approve(mMarket.address, tokenWethPrice, { - from: admin - }); - assert.equal(approveUsdcTokens.receipt.logs.length, 1, 'triggers one events'); - assert.equal(approveUsdcTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); - assert.equal(admin, approveUsdcTokens.logs[0].args.owner, 'must be owner'); - assert.equal(mMarket.address, approveUsdcTokens.logs[0].args.spender, 'must be spender'); - assert.equal(tokenWethPrice.toString(), approveUsdcTokens.logs[0].args.value.toString(), 'must be equal'); - //Check approved value - const checkAllowance = await weth.allowance(admin, mMarket.address); - assert.equal(checkAllowance.toString(), tokenWethPrice.toString()); - - const selloffer = await mMarket.makeSellOffer(tokenIdUnlimitThree, tokenWethPrice, nft.address, WETH, { - from: userone - }); - assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); - assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'must be the NewSellOffer event'); - assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); - assert.equal(userone, selloffer.logs[0].args.seller, 'userone must seller'); - assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); - - const purchase = await mMarket.purchase(nft.address, tokenIdUnlimitThree, WETH, tokenWethPrice, { - from: admin - }); assert.equal(purchase.receipt.logs.length, 3, 'triggers three events'); assert.equal(purchase.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); assert.equal(purchase.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); assert.equal(purchase.receipt.logs[2].event, 'Sale', 'must be the Sale event'); - }); - - - // Unique cases - - - //*****************************************/ - - - it('should make buy offer to token with unique supply type without created sale and accept it by owner', async () => { - if (network == 'development' || network == 'ganache') { - //Set token price - const tokenMstPriceStr = '10'; - let tokenMstPrice = web3.utils.toWei(web3.utils.toBN(tokenMstPriceStr)); - const owner = await nft.ownerOf(tokenIdUniue); - console.log("owner before " + owner); - assert.equal(owner, admin, "owned by admin"); - - const getAuthorBeforePurchase = await nft.get_author(midUnique); - console.log("author before " + getAuthorBeforePurchase); - assert.equal(getAuthorBeforePurchase, admin, "must be equal"); - - // Approve mst tokens from userone to meta market address - const approveMstTokens = await mst.approve(mMarket.address, tokenMstPrice, { - from: userone - }); - assert.equal(approveMstTokens.receipt.logs.length, 1, 'triggers one events'); - assert.equal(approveMstTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); - assert.equal(userone, approveMstTokens.logs[0].args.owner, 'must be owner'); - assert.equal(mMarket.address, approveMstTokens.logs[0].args.spender, 'must be spender'); - assert.equal(tokenMstPrice.toString(), approveMstTokens.logs[0].args.value.toString(), 'must be equal'); - - //Check approved value - const checkAllowance = await mst.allowance(userone, mMarket.address); - assert.equal(checkAllowance.toString(), tokenMstPrice.toString()); - - //Userone make buy offer - const saleoffer = await mMarket.makeBuyOffer(nft.address, tokenIdUniue, MST, tokenMstPrice, { - from: userone - }); - assert.equal(saleoffer.receipt.logs.length, 1, 'triggers one events'); - assert.equal(saleoffer.receipt.logs[0].event, 'NewBuyOffer', 'must be the NewBuyOffer event'); - assert.equal(tokenIdUniue, saleoffer.logs[0].args.tokenId, 'must be equal'); - assert.equal(userone, saleoffer.logs[0].args.buyer, 'offer must be called by userone'); - assert.equal(tokenMstPrice.toString(), saleoffer.logs[0].args.value.toString(), 'must be equal'); - - // Approve nft token from admin to meta market address - const approveNftToken = await nft.approve(mMarket.address, tokenIdUniue, { - from: admin - }); - assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); - assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); - assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); - assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); - assert.equal(tokenIdUniue.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); - - //Check approved address - const approvedAddress = await nft.getApproved(tokenIdUniue); - assert.equal(mMarket.address, approvedAddress, 'must be equal'); - - const rarity = await nft.get_rarity(midUnique); - console.log("rarity " + rarity.toString()); - - const acceptOfferByOwner = await mMarket.acceptBuyOffer(nft.address, tokenIdUniue, MST, { - from: admin - }); - - const newOwner = await nft.ownerOf(tokenIdUniue); - console.log("owner after " + newOwner); - - assert.equal(acceptOfferByOwner.receipt.logs.length, 3, 'triggers two events'); - assert.equal(acceptOfferByOwner.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); - assert.equal(acceptOfferByOwner.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); - assert.equal(acceptOfferByOwner.receipt.logs[2].event, 'Sale', 'must be the Sale event'); - - const mMstBalance = await mst.balanceOf(mMarket.address); - const royaltyMstBalance = await mst.balanceOf(royaltyaddress); - - assert.equal(acceptOfferByOwner.receipt.logs[0].args.nft_contract_, nft.address, 'must be nft contract address'); - assert.equal(acceptOfferByOwner.receipt.logs[0].args.tokenId, tokenIdUniue, 'must be equal'); - assert.equal(acceptOfferByOwner.receipt.logs[0].args.recepient, admin, 'recepient must be admin'); - assert.equal(acceptOfferByOwner.receipt.logs[0].args.value.toString(), (royaltyMstBalance / 2).toString(), 'must be equal'); - - assert.equal(acceptOfferByOwner.receipt.logs[1].args.fees.toString(), (royaltyMstBalance / 2).toString(), 'must be equal'); - assert.equal(acceptOfferByOwner.receipt.logs[1].args.feeAddress, royaltyaddress, 'must be admin address to get royalty'); - assert.equal(mMstBalance.toString(), 0, 'must be zero after buy offer acception'); - - assert.equal(acceptOfferByOwner.receipt.logs[2].args.nft_contract_, nft.address, 'must be nft contract address'); - assert.equal(acceptOfferByOwner.receipt.logs[2].args.tokenId, tokenIdUniue, 'must be equal'); - assert.equal(acceptOfferByOwner.receipt.logs[2].args.seller, admin, 'seller must be admin'); - assert.equal(acceptOfferByOwner.receipt.logs[2].args.buyer, userone, 'buyer must be userone'); - assert.equal(acceptOfferByOwner.receipt.logs[2].args.value.toString(), tokenMstPrice.toString(), 'must be equal'); - - // await nft.updateAuthorsip(tokenIdUniue); - // assert.equal(transferAuthorship.receipt.logs.length, 2, 'triggers one event'); - // assert.equal(transferAuthorship.receipt.logs[0].event, 'Approval', 'must be the Approval event'); - // assert.equal(transferAuthorship.receipt.logs[1].event, 'Transfer', 'must be the Transfer event'); - // console.log(transferAuthorship.receipt.logs.length); - - // assert.equal(transferAuthorship.receipt.logs[0].args.old_author, admin, "admin must be an old owner"); - // assert.equal(transferAuthorship.receipt.logs[0].args.new_author, userone, "userone must be an new owner"); - // assert.equal(transferAuthorship.receipt.logs[0].args.master_id, midUnique, "must be equal"); - - const getAuthorAfterPurchase = await nft.get_author(midUnique); - console.log("author after " + getAuthorAfterPurchase); - // assert.equal(getAuthorAfterPurchase, userone, "must be a new author"); - } - }); - - it('should make sell offer with unique supply type and withdraw it', async () => { - const tokenWethPriceStr = '10'; - let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); - const owner = await nft.ownerOf(tokenIdUniue); - assert.equal(owner, userone, "owned by admin"); - - // const getAuthorBeforePurchase = await nft.get_author(midUnique); - // assert.equal(getAuthorBeforePurchase, userone, "must be equal"); - - const approveNftToken = await nft.approve(mMarket.address, tokenIdUniue, { - from: userone - }); - assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); - assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); - assert.equal(userone, approveNftToken.logs[0].args.owner, 'must be equal'); - assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); - assert.equal(tokenIdUniue.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); - - const selloffer = await mMarket.makeSellOffer(tokenIdUniue, tokenWethPrice, nft.address, WETH, { - from: userone - }); - assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); - assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'must be the NewSellOffer event'); - assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); - assert.equal(userone, selloffer.logs[0].args.seller, 'admin must seller'); - assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); - - const withdrawselloffer = await mMarket.withdrawSellOffer(nft.address, tokenIdUniue, { - from: userone - }); - assert.equal(withdrawselloffer.receipt.logs.length, 1, 'triggers one events'); - assert.equal(withdrawselloffer.receipt.logs[0].event, 'SellOfferWithdrawn', 'should be the SellOfferWithdrawn event'); - }); - - it('should make sell offer with unique supply type', async () => { + it('should make sell offer with limited supply type', async () => { const tokenWethPriceStr = '1'; let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); - const owner = await nft.ownerOf(tokenIdUniue); - assert.equal(owner, userone, "owned by admin"); - - // const getAuthorBeforePurchase = await nft.get_author(midUnique); - // assert.equal(getAuthorBeforePurchase, userone, "must be equal"); + const owner = await nft.ownerOf(tokenIdLimitedTwo); + assert.equal(owner, admin, "owned by admin"); - const approveNftToken = await nft.approve(mMarket.address, tokenIdUniue, { - from: userone + const approveNftToken = await nft.approve(mMarket.address, tokenIdLimitedTwo, { + from: admin }); assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); - assert.equal(userone, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); - assert.equal(tokenIdUniue.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + assert.equal(tokenIdLimitedTwo.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); - const selloffer = await mMarket.makeSellOffer(tokenIdUniue, tokenWethPrice, nft.address, WETH, { - from: userone + const selloffer = await mMarket.makeSellOffer(tokenIdLimitedTwo, tokenWethPrice, nft.address, WETH, { + from: admin }); assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'should be the NewSellOffer event'); assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); - assert.equal(userone, selloffer.logs[0].args.seller, 'admin must seller'); + assert.equal(admin, selloffer.logs[0].args.seller, 'admin must seller'); assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); const approveWethTokens = await weth.approve(mMarket.address, tokenWethPrice, { - from: admin + from: userone }); assert.equal(approveWethTokens.receipt.logs.length, 1, 'triggers one events'); assert.equal(approveWethTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); - assert.equal(admin, approveWethTokens.logs[0].args.owner, 'must be owner'); + assert.equal(userone, approveWethTokens.logs[0].args.owner, 'must be owner'); assert.equal(mMarket.address, approveWethTokens.logs[0].args.spender, 'must be spender'); assert.equal(tokenWethPrice.toString(), approveWethTokens.logs[0].args.value.toString(), 'must be equal'); //Check approved value - const checkAllowance = await weth.allowance(admin, mMarket.address); + const checkAllowance = await weth.allowance(userone, mMarket.address); assert.equal(checkAllowance.toString(), tokenWethPrice.toString()); - const purchase = await mMarket.purchase(nft.address, tokenIdUniue, WETH, tokenWethPrice, { - from: admin + const purchase = await mMarket.purchase(nft.address, tokenIdLimitedTwo, WETH, tokenWethPrice, { + from: userone }); assert.equal(purchase.receipt.logs.length, 3, 'triggers three events'); assert.equal(purchase.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); assert.equal(purchase.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); assert.equal(purchase.receipt.logs[2].event, 'Sale', 'must be the Sale event'); - - // const transferAuthorship = await nft.transferAuthorship(midUnique, admin, {from: userone}); - - // assert.equal(transferAuthorship.receipt.logs.length, 1, 'triggers one event'); - // assert.equal(transferAuthorship.receipt.logs[0].event, 'AuthorshipTransferred', 'must be the AuthorshipTransferred event'); - // assert.equal(transferAuthorship.receipt.logs[0].args.old_author, userone, "userone must be an old owner"); - // assert.equal(transferAuthorship.receipt.logs[0].args.new_author, admin, "admin must be an new owner"); - // assert.equal(transferAuthorship.receipt.logs[0].args.master_id, midUnique, "must be equal"); - - const getAuthorAfterPurchase = await nft.get_author(midUnique); - assert.equal(getAuthorAfterPurchase, admin, "must be a new author"); }); }); \ No newline at end of file diff --git a/test/metaMarketplaceNftTemplate.js b/test/metaMarketplaceNftTemplate.js index 38953b9..588c93a 100644 --- a/test/metaMarketplaceNftTemplate.js +++ b/test/metaMarketplaceNftTemplate.js @@ -1,4 +1,3 @@ -const MasterFactory721 = artifacts.require('MasterFactory721'); const NftTemplate = artifacts.require('NftTemplate'); const USDTcontract = artifacts.require('TestUSDT'); const USDCcontract = artifacts.require('USDC'); @@ -23,10 +22,9 @@ function makeRandomLink(length) { } contract('MetaMarketplace', accounts => { - let factory, nft, mst, mMarket; + let nft, mst, mMarket; let tokenId; let network; - let tokenIdUnlimitOne, tokenIdUnlimitTwo, tokenIdUnlimitThree, tokenIdLimit, tokenIdUniue; let admin, userone, royaltyaddress, userthree; const desc = 'Lorem ipsum dolor sit amet'; let linkOne, linkTwo, linkThree; @@ -36,7 +34,6 @@ contract('MetaMarketplace', accounts => { const [MoonShard, Enum, Meta, Common] = [0, 1, 2, 3]; const [USDT, USDC, DAI, MST, WETH] = [0, 1, 2, 3, 4]; before(async () => { - factory = await MasterFactory721.deployed(); nft = await NftTemplate.deployed(); mMarket = await MetaMarketplace.deployed(); linkOne = 'https://google.com/' + makeRandomLink(20); From 014744ce31968accecd44d462819cf7888c93675 Mon Sep 17 00:00:00 2001 From: Takeshi Date: Wed, 22 Dec 2021 02:17:59 -0800 Subject: [PATCH 36/38] added default contract erc1155 | tests failed because we dont provide such functionality --- contracts/1155/ERC1155Item.sol | 22 ++++++++ migrations/2_deploy_contracts.js | 2 + test/metaMarketplaceNftTemplate.js | 88 +++++++++++++++++++++++++++++- 3 files changed, 109 insertions(+), 3 deletions(-) create mode 100644 contracts/1155/ERC1155Item.sol diff --git a/contracts/1155/ERC1155Item.sol b/contracts/1155/ERC1155Item.sol new file mode 100644 index 0000000..d499be0 --- /dev/null +++ b/contracts/1155/ERC1155Item.sol @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; + +import "@openzeppelin/contracts/token/ERC1155/ERC1155.sol"; + +// this contract is exist cause we need to deploy ERC20 test tokens by truffle deployer, so we need js artifacts for that purpose (which can't be created otherway cause OZ is in node_modules) + contract ERC1155Item is ERC1155 { + uint256 public itemsCount; + + constructor() public ERC1155("") { + itemsCount = 0; + } + + function addNewItem(uint256 initialSupply) external { + itemsCount++; + uint256 itemTokenClassId = itemsCount; + _mint(msg.sender, itemTokenClassId, initialSupply, ""); + } + + + +} \ No newline at end of file diff --git a/migrations/2_deploy_contracts.js b/migrations/2_deploy_contracts.js index e47c95b..7ef49d3 100644 --- a/migrations/2_deploy_contracts.js +++ b/migrations/2_deploy_contracts.js @@ -5,6 +5,7 @@ var Master = artifacts.require("./721/singleton/MSNFT.sol"); // var limitGas = web3.eth.getBlock("latest").gasLimit; var SVC = artifacts.require("./SVC.sol"); var NFTTemplate = artifacts.require("./721/singleton/NftTemplate.sol"); +var ERC1155Item = artifacts.require("./1155/ERC1155Item.sol"); var InterfaceR = artifacts.require("./721/singleton/InterfaceRegister.sol"); var MetaMarket = artifacts.require("./721/singleton/MetaMarketplace.sol"); @@ -113,6 +114,7 @@ module.exports = function (deployer, network, accounts) { // console.log(string_gas_price); deployer.then(async () => { + await deployer.deploy(ERC1155Item); await deployer.deploy(NFTTemplate, "NFT template", "NTMP"); await deployer.deploy(SVC, "v0.0.0"); await deployer.deploy(USDT, "USDT", "USDT"); diff --git a/test/metaMarketplaceNftTemplate.js b/test/metaMarketplaceNftTemplate.js index 588c93a..1213b50 100644 --- a/test/metaMarketplaceNftTemplate.js +++ b/test/metaMarketplaceNftTemplate.js @@ -5,7 +5,7 @@ const DAIcontract = artifacts.require('DAI'); const MSTcontract = artifacts.require('MST'); const WETHcontract = artifacts.require('WETH'); const MetaMarketplace = artifacts.require('MetaMarketplace'); - +const ERC1155Item = artifacts.require('ERC1155Item'); const { time } = require('@openzeppelin/test-helpers'); @@ -22,8 +22,8 @@ function makeRandomLink(length) { } contract('MetaMarketplace', accounts => { - let nft, mst, mMarket; - let tokenId; + let nft, mst, mMarket, multi; + let tokenId, tokenIdMulty; let network; let admin, userone, royaltyaddress, userthree; const desc = 'Lorem ipsum dolor sit amet'; @@ -35,6 +35,7 @@ contract('MetaMarketplace', accounts => { const [USDT, USDC, DAI, MST, WETH] = [0, 1, 2, 3, 4]; before(async () => { nft = await NftTemplate.deployed(); + multi = await ERC1155Item.deployed(); mMarket = await MetaMarketplace.deployed(); linkOne = 'https://google.com/' + makeRandomLink(20); linkTwo = 'https://google.com/' + makeRandomLink(20); @@ -164,6 +165,14 @@ contract('MetaMarketplace', accounts => { assert.equal(balance, 1, "must be owner of one nft token"); }); + it('should create multi', async () => { + const createItemMulti = await multi.addNewItem(5); + console.log(createItemMulti.logs[0].args); + tokenIdMulty = createItemMulti.logs[0].args.id.toString(); + const balance = await multi.balanceOf(admin,tokenIdMulty); + assert.equal(balance, 5, "must be owner of one nft token"); + }); + it('should make buy offer to token with unique supply type without created sale and accept it by owner', async () => { //Set token price const tokenMstPriceStr = '2'; @@ -238,4 +247,77 @@ contract('MetaMarketplace', accounts => { assert.equal(acceptOfferByOwner.receipt.logs[1].args.value.toString(), tokenMstPrice.toString(), 'must be equal'); }); + + it('should make buy offer to token with limited supply type without created sale and accept it by owner', async () => { + //Set token price + const tokenMstPriceStr = '2'; + let tokenMstPrice = web3.utils.toWei(web3.utils.toBN(tokenMstPriceStr)); + + await mMarket.SetUpMarketplace(multi.address, Enum); + + // Approve mst tokens from userone to meta market address + const approveMstTokens = await mst.approve(mMarket.address, tokenMstPrice, { + from: userone + }); + assert.equal(approveMstTokens.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveMstTokens.receipt.logs[0].event, 'Approval', 'should be the Approval event'); + assert.equal(userone, approveMstTokens.logs[0].args.owner, 'must be owner'); + assert.equal(mMarket.address, approveMstTokens.logs[0].args.spender, 'must be spender'); + assert.equal(tokenMstPrice.toString(), approveMstTokens.logs[0].args.value.toString(), 'must be equal'); + + //Check approved value + const checkAllowance = await mst.allowance(userone, mMarket.address); + assert.equal(checkAllowance.toString(), tokenMstPrice.toString()); + + //Userone make buy offer + const saleoffer = await mMarket.makeBuyOffer(multi.address, tokenIdMulty, MST, tokenMstPrice, { + from: userone + }); + + assert.equal(saleoffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(saleoffer.receipt.logs[0].event, 'NewBuyOffer', 'should be the NewBuyOffer event'); + assert.equal(tokenIdMulty.toString(), saleoffer.logs[0].args.tokenId.toString(), 'must be equal'); + assert.equal(userone, saleoffer.logs[0].args.buyer, 'offer must be called by userone'); + assert.equal(tokenMstPrice.toString(), saleoffer.logs[0].args.value.toString(), 'must be equal'); + + const approveNftToken = await nft.approve(mMarket.address, tokenIdMulty, { + from: admin + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'should be the Approval event'); + assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdMulty.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + //Check approved address + const approvedAddress = await nft.getApproved(tokenIdMulty); + assert.equal(mMarket.address, approvedAddress, 'must be equal'); + + const acceptOfferByOwner = await mMarket.acceptBuyOffer(multi.address, tokenIdMulty, MST, { + from: admin + }); + + const mMstBalance = await mst.balanceOf(mMarket.address); + const royaltyMstBalance = await mst.balanceOf(royaltyaddress); + const aMstBalance = await mst.balanceOf(admin); + + assert.equal(acceptOfferByOwner.receipt.logs.length, 2, 'triggers two events'); + // assert.equal(acceptOfferByOwner.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); + assert.equal(acceptOfferByOwner.receipt.logs[0].event, 'CalculatedFees', 'must be the CalculatedFees event'); + assert.equal(acceptOfferByOwner.receipt.logs[1].event, 'Sale', 'must be the Sale event'); + + assert.equal(acceptOfferByOwner.receipt.logs[0].args.fees.toString(), royaltyMstBalance.toString(), 'must be equal'); + assert.equal(acceptOfferByOwner.receipt.logs[0].args.feeAddress, royaltyaddress, 'must be admin address to get royalty'); + const authorBalance = tokenMstPrice - acceptOfferByOwner.receipt.logs[0].args.fees; + assert.equal(authorBalance.toString(), aMstBalance.toString(), 'must be equal'); + assert.equal(mMstBalance.toString(), 0, 'must be zero after buy offer acception'); + + const expectedTokenId = acceptOfferByOwner.receipt.logs[1].args.tokenId; + assert.equal(acceptOfferByOwner.receipt.logs[1].args.nft_contract_, nft.address, 'must be nft contract address'); + assert.equal(expectedTokenId.toString(), tokenIdMulty.toString(), 'must be equal'); + assert.equal(acceptOfferByOwner.receipt.logs[1].args.seller, admin, 'seller must be admin'); + assert.equal(acceptOfferByOwner.receipt.logs[1].args.buyer, userone, 'buyer must be userone'); + assert.equal(acceptOfferByOwner.receipt.logs[1].args.value.toString(), tokenMstPrice.toString(), 'must be equal'); + }); + }); \ No newline at end of file From 3a580130936f50ca0e6534d0583d95daa5b22076 Mon Sep 17 00:00:00 2001 From: Takeshi Date: Thu, 23 Dec 2021 08:46:15 -0800 Subject: [PATCH 37/38] add ropsten tests --- contracts/721/singleton/CurrenciesERC20.sol | 4 +- migrations/2_deploy_contracts.js | 33 +- test/metaMarketplace.js | 2090 ++++++++++++------- test/metaMarketplaceNftTemplate.js | 138 +- truffle-config.js | 47 +- 5 files changed, 1498 insertions(+), 814 deletions(-) diff --git a/contracts/721/singleton/CurrenciesERC20.sol b/contracts/721/singleton/CurrenciesERC20.sol index 4535188..da4905c 100644 --- a/contracts/721/singleton/CurrenciesERC20.sol +++ b/contracts/721/singleton/CurrenciesERC20.sol @@ -87,8 +87,8 @@ contract CurrenciesERC20 is ReentrancyGuard, Ownable { require(US_Circle != address(0), "US_Circle contract address is zero!"); require(DAI != address(0), "DAI contract address is zero!"); require(W_Ethereum != address(0), "W_Ethereum contract address is zero!"); - require(WBTC != address(0), "MST contract address is zero!"); - require(WBTC != address(0), "MST contract address is zero!"); + require(MST != address(0), "MST contract address is zero!"); + require(WBTC != address(0), "WBTC contract address is zero!"); diff --git a/migrations/2_deploy_contracts.js b/migrations/2_deploy_contracts.js index 7ef49d3..803e483 100644 --- a/migrations/2_deploy_contracts.js +++ b/migrations/2_deploy_contracts.js @@ -26,6 +26,7 @@ var usdt_address = web3.utils.toChecksumAddress('0x6ee856ae55b6e1a249f04cd3b9471 var usdc_address = web3.utils.toChecksumAddress('0xfe724a829fdf12f7012365db98730eee33742ea2'); var dai_address = web3.utils.toChecksumAddress('0xad6d458402f60fd3bd25163575031acdce07538d'); var weth_address = web3.utils.toChecksumAddress('0xc778417e063141139fce010982780140aa0cd5ab'); +var wbtc_address = web3.utils.toChecksumAddress('0x65058d7081fcdc3cd8727dbb7f8f9d52cefdd291'); var deposit_value = '50000'; // deposit INITIAL exchange market cup (turn capital) var deposit_value_wei = web3.utils.toWei(deposit_value,'ether'); @@ -59,6 +60,7 @@ module.exports = function (deployer, network, accounts) { */ await deployer.deploy(MST, "SONM", "MST"); MST = await MST.deployed(); + await deployer.deploy(SVC, "v0.0.0"); console.log("MST dummy address:"); console.log(MST.address); //... @@ -67,7 +69,7 @@ module.exports = function (deployer, network, accounts) { console.log(usdt_address); console.log("weth address:"); console.log(weth_address); - return deployer.deploy(Currencies, usdt_address, usdc_address, dai_address, weth_address, MST.address, { + return deployer.deploy(Currencies, usdt_address, usdc_address, dai_address, weth_address, MST.address, wbtc_address, { gasPrice: wei_gas_price, from: accounts[0] }); @@ -96,7 +98,34 @@ module.exports = function (deployer, network, accounts) { console.log(fa); return; }).then(async () => { + + return deployer.deploy(InterfaceR, { + gasPrice: wei_gas_price, + from: accounts[0] + }); + }).then(async () => { + InterfaceInstance = await InterfaceR.deployed(); + intId = await InterfaceInstance.getInterfaceEnumerable(); + console.log("Interface Id for ERC721Enumerable: "); + console.log(intId); + intID_calc = await InterfaceInstance.calculateIERC721Enumarable(); + console.log("Interface If for ERC721Enumerable calculated:"); + console.log(intID_calc); + intID_calc1 = await InterfaceInstance.calculateIERC721(); + console.log("Interface Id for ERC721 calculated:"); + console.log(intID_calc1); + return; + }).then(async () => { + + return deployer.deploy(MetaMarket, Currencies.address, Master.address, accounts[0], { + gasPrice: wei_gas_price, + from: accounts[0] + }); + }).then(async () => { + MetaMarketInstance = await MetaMarket.deployed(); + console.log("MetaMarket address:"); + console.log(MetaMarketInstance.address); }); } // end of ropsten deployment @@ -124,7 +153,7 @@ module.exports = function (deployer, network, accounts) { DAI = await DAI.deployed(); await deployer.deploy(WETH, "Wrapped_Ethereum", "WETH"); WETH = await WETH.deployed(); - await deployer.deploy(WBTC,"Wrapped_Bitcoin", "WBTC") + await deployer.deploy(WBTC,"Wrapped_Bitcoin", "WBTC"); await deployer.deploy(MST, "SONM", "MST"); MST = await MST.deployed(); diff --git a/test/metaMarketplace.js b/test/metaMarketplace.js index c9b3ea3..99ad6f3 100644 --- a/test/metaMarketplace.js +++ b/test/metaMarketplace.js @@ -47,11 +47,11 @@ contract('MetaMarketplace', accounts => { factory = await MasterFactory721.deployed(); nft = await MSNFT.deployed(); mMarket = await MetaMarketplace.deployed(); - linkOne = 'https://google.com/' + makeRandomLink(20); - linkTwo = 'https://google.com/' + makeRandomLink(21); + linkOne = 'https://ipfs.io/ipfs/' + makeRandomLink(20); + linkTwo = 'https://ipfs.io/ipfs/' + makeRandomLink(21); //Folder link - linkThree = 'https://ipfs.io/ipfs/QmPriFNWQmciNy8ENHagJSA8rovq6dkKDR8aXeGg67MYq3'; + linkThree = 'https://ipfs.io/ipfs/' + makeRandomLink(20); network = process.env.NETWORK; mst = await MSTcontract.deployed(); if (network == 'development' || network == 'ganache') { @@ -167,6 +167,15 @@ contract('MetaMarketplace', accounts => { from: admin }); assert.equal(userWethTokenBalanceAfter.toString(), wethTokensToMint.toString(), 'admins token balance after mint'); + } else { + let tokensToMint = web3.utils.toWei(web3.utils.toBN(tokensTotal)); + + const receipt = await mst.MintERC20(userone, tokensToMint, { + from: admin + }); + assert.equal(receipt.logs.length, 1, 'triggers one event'); + assert.equal(receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); + assert.equal(receipt.logs[0].address, mst.address, 'minted tokens are transferred from'); } }); @@ -215,599 +224,88 @@ contract('MetaMarketplace', accounts => { // // tokenIdLimitedThree = mintLimThreeToken.receipt.logs[0].args.tokenId.toNumber(); }); - // it('should create master copy with unique supply type', async () => { - // const createItemUnique = await factory.createMasterItem(linkTwo, desc, unique); - - // assert.equal(createItemUnique.receipt.logs.length, 1, 'triggers one event'); - // assert.equal(createItemUnique.receipt.logs[0].event, 'CreateMasterItem', 'should be the CreateMasterItem event'); - - // midUnique = createItemUnique.receipt.logs[0].args.master_id; - - // const receiptFirstEvent = await expectEvent.inTransaction(createItemUnique.tx, nft, 'MasterCopyCreatedHuman', { - // author: admin, - // master_id: midUnique, - // description: desc, - // link: linkTwo - // }); - - // // console.log(receiptFirstEvent); - - // const uniqueLink = createItemUnique.receipt.logs[0].args.link; - // assert(uniqueLink == linkTwo); - - // const mintUniqueToken = await nft.EmitItem(admin, midUnique, 0); - // assert.equal(mintUniqueToken.receipt.logs.length, 2, 'triggers two events'); - // assert.equal(mintUniqueToken.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); - // assert.equal(mintUniqueToken.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); - // tokenIdUniue = mintUniqueToken.receipt.logs[0].args.tokenId.toNumber(); - // }); - - // it('should create master copy with unlimit supply type', async () => { - // const createItemUnlimit = await factory.createMasterItem(linkOne, desc, unlimit); - // assert.equal(createItemUnlimit.receipt.logs.length, 1, 'triggers one event'); - // assert.equal(createItemUnlimit.receipt.logs[0].event, 'CreateMasterItem', 'should be the CreateMasterItem event'); - - // midUnlimit = createItemUnlimit.receipt.logs[0].args.master_id; - - // const receiptFirstEvent = await expectEvent.inTransaction(createItemUnlimit.tx, nft, 'MasterCopyCreatedHuman', { - // author: admin, - // master_id: midUnlimit, - // description: desc, - // link: linkOne - // }); - // // console.log(receiptFirstEvent); - - // const firstLink = createItemUnlimit.receipt.logs[0].args.link; - // assert(firstLink == linkOne); - - // const mintUnlimitTokenOne = await nft.EmitItem(admin, midUnlimit, 0); - // assert.equal(mintUnlimitTokenOne.receipt.logs.length, 2, 'triggers two events'); - // assert.equal(mintUnlimitTokenOne.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); - // assert.equal(mintUnlimitTokenOne.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); - // tokenIdUnlimitOne = mintUnlimitTokenOne.receipt.logs[0].args.tokenId.toNumber(); - - // const mintUnlimitTokenTwo = await nft.EmitItem(admin, midUnlimit, 0); - // assert.equal(mintUnlimitTokenTwo.receipt.logs.length, 2, 'triggers two events'); - // assert.equal(mintUnlimitTokenTwo.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); - // assert.equal(mintUnlimitTokenTwo.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); - // tokenIdUnlimitTwo = mintUnlimitTokenTwo.receipt.logs[0].args.tokenId.toNumber(); - - // const mintUnlimitTokenThree = await nft.EmitItem(admin, midUnlimit, 0); - // assert.equal(mintUnlimitTokenThree.receipt.logs.length, 2, 'triggers two events'); - // assert.equal(mintUnlimitTokenThree.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); - // assert.equal(mintUnlimitTokenThree.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); - // tokenIdUnlimitThree = mintUnlimitTokenThree.receipt.logs[0].args.tokenId.toNumber(); - - // const mintUnlimitTokenFour = await nft.EmitItem(admin, midUnlimit, 0); - // assert.equal(mintUnlimitTokenFour.receipt.logs.length, 2, 'triggers two events'); - // assert.equal(mintUnlimitTokenFour.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); - // assert.equal(mintUnlimitTokenFour.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); - // tokenIdUnlimitFour = mintUnlimitTokenFour.receipt.logs[0].args.tokenId.toNumber(); - // }); - - // // Unlimited cases + it('should create master copy with unique supply type', async () => { + const createItemUnique = await factory.createMasterItem(linkTwo, desc, unique); - // //*****************************************/ + assert.equal(createItemUnique.receipt.logs.length, 1, 'triggers one event'); + assert.equal(createItemUnique.receipt.logs[0].event, 'CreateMasterItem', 'should be the CreateMasterItem event'); + + midUnique = createItemUnique.receipt.logs[0].args.master_id; + + const receiptFirstEvent = await expectEvent.inTransaction(createItemUnique.tx, nft, 'MasterCopyCreatedHuman', { + author: admin, + master_id: midUnique, + description: desc, + link: linkTwo + }); - // it('should make buy offer to token with unlimit supply type without created sale and accept it by owner', async () => { - // if (network == 'development' || network == 'ganache') { - // //Set token price - // const tokenMstPriceStr = '10'; - // let tokenMstPrice = web3.utils.toWei(web3.utils.toBN(tokenMstPriceStr)); - // const owner = await nft.ownerOf(tokenIdUnlimitOne); - // assert.equal(owner, admin, "owned by admin"); - - // // Approve mst tokens from userone to meta market address - // const approveMstTokens = await mst.approve(mMarket.address, tokenMstPrice, { - // from: userone - // }); - // assert.equal(approveMstTokens.receipt.logs.length, 1, 'triggers one events'); - // assert.equal(approveMstTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); - // assert.equal(userone, approveMstTokens.logs[0].args.owner, 'must be owner'); - // assert.equal(mMarket.address, approveMstTokens.logs[0].args.spender, 'must be spender'); - // assert.equal(tokenMstPrice.toString(), approveMstTokens.logs[0].args.value.toString(), 'must be equal'); - - // //Check approved value - // const checkAllowance = await mst.allowance(userone, mMarket.address); - // assert.equal(checkAllowance.toString(), tokenMstPrice.toString()); - - // //Userone make buy offer - // const saleoffer = await mMarket.makeBuyOffer(nft.address, tokenIdUnlimitOne, MST, tokenMstPrice, { - // from: userone - // }); - // assert.equal(saleoffer.receipt.logs.length, 1, 'triggers one events'); - // assert.equal(saleoffer.receipt.logs[0].event, 'NewBuyOffer', 'must be the NewBuyOffer event'); - // assert.equal(tokenIdUnlimitOne, saleoffer.logs[0].args.tokenId, 'must be equal'); - // assert.equal(userone, saleoffer.logs[0].args.buyer, 'offer must be called by userone'); - // assert.equal(tokenMstPrice.toString(), saleoffer.logs[0].args.value.toString(), 'must be equal'); - - // // Approve nft token from admin to meta market address - // const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitOne, { - // from: admin - // }); - // assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); - // assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); - // assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); - // assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); - // assert.equal(tokenIdUnlimitOne.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); - - // //Check approved address - // const approvedAddress = await nft.getApproved(tokenIdUnlimitOne); - // assert.equal(mMarket.address, approvedAddress, 'must be equal'); - - // const acceptOfferByOwner = await mMarket.acceptBuyOffer(nft.address, tokenIdUnlimitOne, MST, { - // from: admin - // }); - - // assert.equal(acceptOfferByOwner.receipt.logs.length, 3, 'triggers three events'); - // assert.equal(acceptOfferByOwner.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); - // assert.equal(acceptOfferByOwner.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); - // assert.equal(acceptOfferByOwner.receipt.logs[2].event, 'Sale', 'must be the Sale event'); - - // // console.log("args 1 =================="); - // // console.log(acceptOfferByOwner.receipt.logs[0].args); - - // const mMstBalance = await mst.balanceOf(mMarket.address); - // const uMstBalance = await mst.balanceOf(userone); - // const royaltyMstBalance = await mst.balanceOf(royaltyaddress); - // const aMstBalance = await mst.balanceOf(admin); - - - // assert.equal(acceptOfferByOwner.receipt.logs[0].args.nft_contract_, nft.address, 'must be nft contract address'); - // assert.equal(acceptOfferByOwner.receipt.logs[0].args.tokenId, tokenIdUnlimitOne, 'must be equal'); - // assert.equal(acceptOfferByOwner.receipt.logs[0].args.recepient, admin, 'recepient must be admin'); - // assert.equal(acceptOfferByOwner.receipt.logs[0].args.value.toString(), royaltyMstBalance.toString(), 'must be equal'); - - // assert.equal(acceptOfferByOwner.receipt.logs[1].args.fees.toString(), royaltyMstBalance.toString(), 'must be equal'); - // assert.equal(acceptOfferByOwner.receipt.logs[1].args.feeAddress, royaltyaddress, 'must be admin address to get royalty'); - // const authorBalance = tokenMstPrice - acceptOfferByOwner.receipt.logs[1].args.fees; - // assert.equal(authorBalance.toString(), aMstBalance.toString(), 'must be equal'); - // assert.equal(mMstBalance.toString(), 0, 'must be zero after buy offer acception'); - - // assert.equal(acceptOfferByOwner.receipt.logs[2].args.nft_contract_, nft.address, 'must be nft contract address'); - // assert.equal(acceptOfferByOwner.receipt.logs[2].args.tokenId, tokenIdUnlimitOne, 'must be equal'); - // assert.equal(acceptOfferByOwner.receipt.logs[2].args.seller, admin, 'seller must be admin'); - // assert.equal(acceptOfferByOwner.receipt.logs[2].args.buyer, userone, 'buyer must be userone'); - // assert.equal(acceptOfferByOwner.receipt.logs[2].args.value.toString(), tokenMstPrice.toString(), 'must be equal'); - - // const ownership = await nft.ownerOf(tokenIdUnlimitOne); - // console.log(ownership); - // } - // }); - - // it('should withdraw buy offer with unlimit supply type without created sale', async () => { - // if (network == 'development' || network == 'ganache') { - // const tokenDaiPriceStr = '10'; - // let tokenDaiPrice = web3.utils.toWei(web3.utils.toBN(tokenDaiPriceStr)); - // const owner = await nft.ownerOf(tokenIdUnlimitTwo); - // assert.equal(owner, admin, "owned by admin"); - - // // Approve nft token from admin to meta market address - // const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitTwo, { - // from: admin - // }); - // assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); - // assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); - // assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); - // assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); - // assert.equal(tokenIdUnlimitTwo.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); - - // //Check approved address - // const approvedAddress = await nft.getApproved(tokenIdUnlimitTwo); - // assert.equal(mMarket.address, approvedAddress, 'must be equal'); - - // // Approve mst tokens from userone to meta market address - // const approveDaiTokens = await dai.approve(mMarket.address, tokenDaiPrice, { - // from: userone - // }); - // assert.equal(approveDaiTokens.receipt.logs.length, 1, 'triggers one events'); - // assert.equal(approveDaiTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); - // assert.equal(userone, approveDaiTokens.logs[0].args.owner, 'must be owner'); - // assert.equal(mMarket.address, approveDaiTokens.logs[0].args.spender, 'must be spender'); - // assert.equal(tokenDaiPrice.toString(), approveDaiTokens.logs[0].args.value.toString(), 'must be equal'); - - // //Check approved value - // const checkAllowance = await dai.allowance(userone, mMarket.address); - // assert.equal(checkAllowance.toString(), tokenDaiPrice.toString()); - - // //User make buy offer - // const saleoffer = await mMarket.makeBuyOffer(nft.address, tokenIdUnlimitTwo, DAI, tokenDaiPrice, { - // from: userone - // }); - // assert.equal(tokenIdUnlimitTwo, saleoffer.logs[0].args.tokenId, 'must be equal'); - // assert.equal(userone, saleoffer.logs[0].args.buyer, 'offer must be called by userone'); - // assert.equal(tokenDaiPrice.toString(), saleoffer.logs[0].args.value.toString(), 'must be equal'); - - // await time.increase(time.duration.days(2)); - // const withdrawBuyOffer = await mMarket.withdrawBuyOffer(nft.address, tokenIdUnlimitTwo, DAI, { - // from: userone - // }); - // assert.equal(withdrawBuyOffer.receipt.logs.length, 1, 'triggers one events'); - // assert.equal(withdrawBuyOffer.receipt.logs[0].event, 'BuyOfferWithdrawn', 'must be the BuyOfferWithdrawn event'); - // assert.equal(tokenIdUnlimitTwo, withdrawBuyOffer.receipt.logs[0].args.tokenId, 'must be owner'); - // assert.equal(userone, withdrawBuyOffer.receipt.logs[0].args.buyer, 'userone must be buyer'); - // } - // }); - - // it('should make sell offer with unlimit supply type and withdraw it', async () => { - // const tokenWethPriceStr = '10'; - // let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); - // const owner = await nft.ownerOf(tokenIdUnlimitThree); - // assert.equal(owner, admin, "owned by admin"); - - // const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitThree, { - // from: admin - // }); - // assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); - // assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); - // assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); - // assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); - // assert.equal(tokenIdUnlimitThree.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); - - // const selloffer = await mMarket.makeSellOffer(tokenIdUnlimitThree, tokenWethPrice, nft.address, WETH, { - // from: admin - // }); - // assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); - // assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'must be the NewSellOffer event'); - // assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); - // assert.equal(admin, selloffer.logs[0].args.seller, 'admin must seller'); - // assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); - - // const withdrawselloffer = await mMarket.withdrawSellOffer(nft.address, tokenIdUnlimitThree, { - // from: admin - // }); - // assert.equal(withdrawselloffer.receipt.logs.length, 1, 'triggers one events'); - // assert.equal(withdrawselloffer.receipt.logs[0].event, 'SellOfferWithdrawn', 'must be the SellOfferWithdrawn event'); - // assert.equal(withdrawselloffer.receipt.logs[0].args.tokenId, tokenIdUnlimitThree, 'must be equal'); - // assert.equal(withdrawselloffer.receipt.logs[0].args.seller, admin, 'seller must be admin'); - // }); - - // it('should make sell offer with unlimit supply type', async () => { - // const tokenWethPriceStr = '10'; - // let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); - // const owner = await nft.ownerOf(tokenIdUnlimitThree); - // assert.equal(owner, admin, "owned by admin"); - - // const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitThree, { - // from: admin - // }); - // assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); - // assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); - // assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); - // assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); - // assert.equal(tokenIdUnlimitThree.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); - - // const selloffer = await mMarket.makeSellOffer(tokenIdUnlimitThree, tokenWethPrice, nft.address, WETH, { - // from: admin - // }); - // assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); - // assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'must be the NewSellOffer event'); - // assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); - // assert.equal(admin, selloffer.logs[0].args.seller, 'admin must seller'); - // assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); - - // const approveWethTokens = await weth.approve(mMarket.address, tokenWethPrice, { - // from: userone - // }); - // assert.equal(approveWethTokens.receipt.logs.length, 1, 'triggers one events'); - // assert.equal(approveWethTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); - // assert.equal(userone, approveWethTokens.logs[0].args.owner, 'must be owner'); - // assert.equal(mMarket.address, approveWethTokens.logs[0].args.spender, 'must be spender'); - // assert.equal(tokenWethPrice.toString(), approveWethTokens.logs[0].args.value.toString(), 'must be equal'); - - // //Check approved value - // const checkAllowance = await weth.allowance(userone, mMarket.address); - // assert.equal(checkAllowance.toString(), tokenWethPrice.toString()); - - // const purchase = await mMarket.purchase(nft.address, tokenIdUnlimitThree, WETH, tokenWethPrice, { - // from: userone - // }); - - // const mWethBalance = await weth.balanceOf(mMarket.address); - // const uMstBalance = await weth.balanceOf(userone); - // const royaltyWethBalance = await weth.balanceOf(royaltyaddress); - // const aWethBalance = await weth.balanceOf(admin); - - // assert.equal(purchase.receipt.logs.length, 3, 'triggers three events'); - - // assert.equal(purchase.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); - // assert.equal(purchase.receipt.logs[0].args.nft_contract_, nft.address, 'must be nft contract address'); - // assert.equal(purchase.receipt.logs[0].args.tokenId, tokenIdUnlimitThree, 'must be equal'); - // assert.equal(purchase.receipt.logs[0].args.recepient, admin, 'recepient must be admin'); - // assert.equal(purchase.receipt.logs[0].args.value.toString(), royaltyWethBalance.toString(), 'must be equal'); - - // assert.equal(purchase.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); - // assert.equal(purchase.receipt.logs[1].args.fees.toString(), royaltyWethBalance.toString(), 'must be the CalculatedFees event'); - // assert.equal(purchase.receipt.logs[1].args.feeAddress, royaltyaddress, 'must be the CalculatedFees event'); - - // const authorBalance = tokenWethPrice - purchase.receipt.logs[1].args.fees; - // assert.equal(authorBalance.toString(), aWethBalance.toString(), 'must be equal'); - // assert.equal(mWethBalance.toString(), 0, 'must be zero after buy offer acception'); - - // assert.equal(purchase.receipt.logs[2].event, 'Sale', 'must be the Sale event'); - // assert.equal(purchase.receipt.logs[2].args.nft_contract_, nft.address, 'must be nft contract address'); - // assert.equal(purchase.receipt.logs[2].args.tokenId, tokenIdUnlimitThree, 'must be equal'); - // assert.equal(purchase.receipt.logs[2].args.seller, admin, 'seller must be admin'); - // assert.equal(purchase.receipt.logs[2].args.buyer, userone, 'buyer must be userone'); - // assert.equal(purchase.receipt.logs[2].args.value.toString(), tokenWethPrice.toString(), 'must be equal'); - - // const ownership = await nft.ownerOf(tokenIdUnlimitThree); - // console.log("ownership " + ownership); - - // }); - - // it('should make sell offer with unlimit supply type by new owner and withdraw it', async () => { - // const tokenWethPriceStr = '2'; - // let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); - // const owner = await nft.ownerOf(tokenIdUnlimitThree); - // assert.equal(owner, userone, "owned by userone"); - - // const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitThree, { - // from: userone - // }); - // assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); - // assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); - // assert.equal(userone, approveNftToken.logs[0].args.owner, 'must be equal'); - // assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); - // assert.equal(tokenIdUnlimitThree.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); - - // const selloffer = await mMarket.makeSellOffer(tokenIdUnlimitThree, tokenWethPrice, nft.address, WETH, { - // from: userone - // }); - // assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); - // assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'must be the NewSellOffer event'); - // assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); - // assert.equal(userone, selloffer.logs[0].args.seller, 'userone must seller'); - // assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); - - // const withdrawselloffer = await mMarket.withdrawSellOffer(nft.address, tokenIdUnlimitThree, { - // from: userone - // }); - // assert.equal(withdrawselloffer.receipt.logs.length, 1, 'triggers one events'); - // assert.equal(withdrawselloffer.receipt.logs[0].event, 'SellOfferWithdrawn', 'must be the SellOfferWithdrawn event'); - - // }); - - // it('should make sell offer with unlimit supply type by new owner', async () => { - // const tokenWethPriceStr = '2'; - // let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); - // const owner = await nft.ownerOf(tokenIdUnlimitThree); - // assert.equal(owner, userone, "owned by userone"); - - // const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitThree, { - // from: userone - // }); - // assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); - // assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); - // assert.equal(userone, approveNftToken.logs[0].args.owner, 'must be equal'); - // assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); - // assert.equal(tokenIdUnlimitThree.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); - - // const approveUsdcTokens = await weth.approve(mMarket.address, tokenWethPrice, { - // from: admin - // }); - // assert.equal(approveUsdcTokens.receipt.logs.length, 1, 'triggers one events'); - // assert.equal(approveUsdcTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); - // assert.equal(admin, approveUsdcTokens.logs[0].args.owner, 'must be owner'); - // assert.equal(mMarket.address, approveUsdcTokens.logs[0].args.spender, 'must be spender'); - // assert.equal(tokenWethPrice.toString(), approveUsdcTokens.logs[0].args.value.toString(), 'must be equal'); - // //Check approved value - // const checkAllowance = await weth.allowance(admin, mMarket.address); - // assert.equal(checkAllowance.toString(), tokenWethPrice.toString()); - - // const selloffer = await mMarket.makeSellOffer(tokenIdUnlimitThree, tokenWethPrice, nft.address, WETH, { - // from: userone - // }); - // assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); - // assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'must be the NewSellOffer event'); - // assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); - // assert.equal(userone, selloffer.logs[0].args.seller, 'userone must seller'); - // assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); - - // const purchase = await mMarket.purchase(nft.address, tokenIdUnlimitThree, WETH, tokenWethPrice, { - // from: admin - // }); - // assert.equal(purchase.receipt.logs.length, 3, 'triggers three events'); - // assert.equal(purchase.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); - // assert.equal(purchase.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); - // assert.equal(purchase.receipt.logs[2].event, 'Sale', 'must be the Sale event'); - - // }); + // console.log(receiptFirstEvent); + const uniqueLink = createItemUnique.receipt.logs[0].args.link; + assert(uniqueLink == linkTwo); + const mintUniqueToken = await nft.EmitItem(admin, midUnique, 0); + assert.equal(mintUniqueToken.receipt.logs.length, 2, 'triggers two events'); + assert.equal(mintUniqueToken.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); + assert.equal(mintUniqueToken.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); + tokenIdUniue = mintUniqueToken.receipt.logs[0].args.tokenId.toNumber(); + }); - // // Unique cases + it('should create master copy with unlimit supply type', async () => { + const createItemUnlimit = await factory.createMasterItem(linkOne, desc, unlimit); + assert.equal(createItemUnlimit.receipt.logs.length, 1, 'triggers one event'); + assert.equal(createItemUnlimit.receipt.logs[0].event, 'CreateMasterItem', 'should be the CreateMasterItem event'); - // //*****************************************/ + midUnlimit = createItemUnlimit.receipt.logs[0].args.master_id; + const receiptFirstEvent = await expectEvent.inTransaction(createItemUnlimit.tx, nft, 'MasterCopyCreatedHuman', { + author: admin, + master_id: midUnlimit, + description: desc, + link: linkOne + }); + // console.log(receiptFirstEvent); + + const firstLink = createItemUnlimit.receipt.logs[0].args.link; + assert(firstLink == linkOne); + + const mintUnlimitTokenOne = await nft.EmitItem(admin, midUnlimit, 0); + assert.equal(mintUnlimitTokenOne.receipt.logs.length, 2, 'triggers two events'); + assert.equal(mintUnlimitTokenOne.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); + assert.equal(mintUnlimitTokenOne.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); + tokenIdUnlimitOne = mintUnlimitTokenOne.receipt.logs[0].args.tokenId.toNumber(); + + const mintUnlimitTokenTwo = await nft.EmitItem(admin, midUnlimit, 0); + assert.equal(mintUnlimitTokenTwo.receipt.logs.length, 2, 'triggers two events'); + assert.equal(mintUnlimitTokenTwo.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); + assert.equal(mintUnlimitTokenTwo.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); + tokenIdUnlimitTwo = mintUnlimitTokenTwo.receipt.logs[0].args.tokenId.toNumber(); + + const mintUnlimitTokenThree = await nft.EmitItem(admin, midUnlimit, 0); + assert.equal(mintUnlimitTokenThree.receipt.logs.length, 2, 'triggers two events'); + assert.equal(mintUnlimitTokenThree.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); + assert.equal(mintUnlimitTokenThree.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); + tokenIdUnlimitThree = mintUnlimitTokenThree.receipt.logs[0].args.tokenId.toNumber(); + + const mintUnlimitTokenFour = await nft.EmitItem(admin, midUnlimit, 0); + assert.equal(mintUnlimitTokenFour.receipt.logs.length, 2, 'triggers two events'); + assert.equal(mintUnlimitTokenFour.receipt.logs[0].event, 'Transfer', 'should be the Transfer event'); + assert.equal(mintUnlimitTokenFour.receipt.logs[1].event, 'MintNewToken', 'should be the MintNewToken event'); + tokenIdUnlimitFour = mintUnlimitTokenFour.receipt.logs[0].args.tokenId.toNumber(); + }); - // it('should make buy offer to token with unique supply type without created sale and accept it by owner', async () => { - // if (network == 'development' || network == 'ganache') { - // //Set token price - // const tokenMstPriceStr = '10'; - // let tokenMstPrice = web3.utils.toWei(web3.utils.toBN(tokenMstPriceStr)); - // const owner = await nft.ownerOf(tokenIdUniue); - // console.log("owner before " + owner); - // assert.equal(owner, admin, "owned by admin"); - - // const getAuthorBeforePurchase = await nft.get_author(midUnique); - // console.log("author before " + getAuthorBeforePurchase); - // assert.equal(getAuthorBeforePurchase, admin, "must be equal"); - - // // Approve mst tokens from userone to meta market address - // const approveMstTokens = await mst.approve(mMarket.address, tokenMstPrice, { - // from: userone - // }); - // assert.equal(approveMstTokens.receipt.logs.length, 1, 'triggers one events'); - // assert.equal(approveMstTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); - // assert.equal(userone, approveMstTokens.logs[0].args.owner, 'must be owner'); - // assert.equal(mMarket.address, approveMstTokens.logs[0].args.spender, 'must be spender'); - // assert.equal(tokenMstPrice.toString(), approveMstTokens.logs[0].args.value.toString(), 'must be equal'); - - // //Check approved value - // const checkAllowance = await mst.allowance(userone, mMarket.address); - // assert.equal(checkAllowance.toString(), tokenMstPrice.toString()); - - // //Userone make buy offer - // const saleoffer = await mMarket.makeBuyOffer(nft.address, tokenIdUniue, MST, tokenMstPrice, { - // from: userone - // }); - // assert.equal(saleoffer.receipt.logs.length, 1, 'triggers one events'); - // assert.equal(saleoffer.receipt.logs[0].event, 'NewBuyOffer', 'must be the NewBuyOffer event'); - // assert.equal(tokenIdUniue, saleoffer.logs[0].args.tokenId, 'must be equal'); - // assert.equal(userone, saleoffer.logs[0].args.buyer, 'offer must be called by userone'); - // assert.equal(tokenMstPrice.toString(), saleoffer.logs[0].args.value.toString(), 'must be equal'); - - // // Approve nft token from admin to meta market address - // const approveNftToken = await nft.approve(mMarket.address, tokenIdUniue, { - // from: admin - // }); - // assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); - // assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); - // assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); - // assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); - // assert.equal(tokenIdUniue.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); - - // //Check approved address - // const approvedAddress = await nft.getApproved(tokenIdUniue); - // assert.equal(mMarket.address, approvedAddress, 'must be equal'); - - // const rarity = await nft.get_rarity(midUnique); - // console.log("rarity " + rarity.toString()); - - // const acceptOfferByOwner = await mMarket.acceptBuyOffer(nft.address, tokenIdUniue, MST, { - // from: admin - // }); - - // const newOwner = await nft.ownerOf(tokenIdUniue); - // console.log("owner after " + newOwner); - - // assert.equal(acceptOfferByOwner.receipt.logs.length, 3, 'triggers two events'); - // assert.equal(acceptOfferByOwner.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); - // assert.equal(acceptOfferByOwner.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); - // assert.equal(acceptOfferByOwner.receipt.logs[2].event, 'Sale', 'must be the Sale event'); - - // const mMstBalance = await mst.balanceOf(mMarket.address); - // const royaltyMstBalance = await mst.balanceOf(royaltyaddress); - - // assert.equal(acceptOfferByOwner.receipt.logs[0].args.nft_contract_, nft.address, 'must be nft contract address'); - // assert.equal(acceptOfferByOwner.receipt.logs[0].args.tokenId, tokenIdUniue, 'must be equal'); - // assert.equal(acceptOfferByOwner.receipt.logs[0].args.recepient, admin, 'recepient must be admin'); - // assert.equal(acceptOfferByOwner.receipt.logs[0].args.value.toString(), (royaltyMstBalance / 2).toString(), 'must be equal'); - - // assert.equal(acceptOfferByOwner.receipt.logs[1].args.fees.toString(), (royaltyMstBalance / 2).toString(), 'must be equal'); - // assert.equal(acceptOfferByOwner.receipt.logs[1].args.feeAddress, royaltyaddress, 'must be admin address to get royalty'); - // assert.equal(mMstBalance.toString(), 0, 'must be zero after buy offer acception'); - - // assert.equal(acceptOfferByOwner.receipt.logs[2].args.nft_contract_, nft.address, 'must be nft contract address'); - // assert.equal(acceptOfferByOwner.receipt.logs[2].args.tokenId, tokenIdUniue, 'must be equal'); - // assert.equal(acceptOfferByOwner.receipt.logs[2].args.seller, admin, 'seller must be admin'); - // assert.equal(acceptOfferByOwner.receipt.logs[2].args.buyer, userone, 'buyer must be userone'); - // assert.equal(acceptOfferByOwner.receipt.logs[2].args.value.toString(), tokenMstPrice.toString(), 'must be equal'); - - // const getAuthorAfterPurchase = await nft.get_author(midUnique); - // assert.equal(getAuthorAfterPurchase, userone, "must be a new author"); - // } - // }); - - // it('should make sell offer with unique supply type and withdraw it', async () => { - // const tokenWethPriceStr = '10'; - // let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); - // const owner = await nft.ownerOf(tokenIdUniue); - // assert.equal(owner, userone, "owned by admin"); - - // const approveNftToken = await nft.approve(mMarket.address, tokenIdUniue, { - // from: userone - // }); - // assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); - // assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); - // assert.equal(userone, approveNftToken.logs[0].args.owner, 'must be equal'); - // assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); - // assert.equal(tokenIdUniue.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); - - // const selloffer = await mMarket.makeSellOffer(tokenIdUniue, tokenWethPrice, nft.address, WETH, { - // from: userone - // }); - // assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); - // assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'must be the NewSellOffer event'); - // assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); - // assert.equal(userone, selloffer.logs[0].args.seller, 'admin must seller'); - // assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); - - // const withdrawselloffer = await mMarket.withdrawSellOffer(nft.address, tokenIdUniue, { - // from: userone - // }); - // assert.equal(withdrawselloffer.receipt.logs.length, 1, 'triggers one events'); - // assert.equal(withdrawselloffer.receipt.logs[0].event, 'SellOfferWithdrawn', 'should be the SellOfferWithdrawn event'); - // }); - - // it('should make sell offer with unique supply type', async () => { - // const tokenWethPriceStr = '1'; - // let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); - // const owner = await nft.ownerOf(tokenIdUniue); - // assert.equal(owner, userone, "owned by admin"); - - // const approveNftToken = await nft.approve(mMarket.address, tokenIdUniue, { - // from: userone - // }); - // assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); - // assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); - // assert.equal(userone, approveNftToken.logs[0].args.owner, 'must be equal'); - // assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); - // assert.equal(tokenIdUniue.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); - - // const selloffer = await mMarket.makeSellOffer(tokenIdUniue, tokenWethPrice, nft.address, WETH, { - // from: userone - // }); - // assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); - // assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'should be the NewSellOffer event'); - // assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); - // assert.equal(userone, selloffer.logs[0].args.seller, 'admin must seller'); - // assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); - - // const approveWethTokens = await weth.approve(mMarket.address, tokenWethPrice, { - // from: admin - // }); - // assert.equal(approveWethTokens.receipt.logs.length, 1, 'triggers one events'); - // assert.equal(approveWethTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); - // assert.equal(admin, approveWethTokens.logs[0].args.owner, 'must be owner'); - // assert.equal(mMarket.address, approveWethTokens.logs[0].args.spender, 'must be spender'); - // assert.equal(tokenWethPrice.toString(), approveWethTokens.logs[0].args.value.toString(), 'must be equal'); - - // //Check approved value - // const checkAllowance = await weth.allowance(admin, mMarket.address); - // assert.equal(checkAllowance.toString(), tokenWethPrice.toString()); - - // const purchase = await mMarket.purchase(nft.address, tokenIdUniue, WETH, tokenWethPrice, { - // from: admin - // }); - // assert.equal(purchase.receipt.logs.length, 3, 'triggers three events'); - // assert.equal(purchase.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); - // assert.equal(purchase.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); - // assert.equal(purchase.receipt.logs[2].event, 'Sale', 'must be the Sale event'); - - // const getAuthorAfterPurchase = await nft.get_author(midUnique); - // assert.equal(getAuthorAfterPurchase, admin, "must be a new author"); - // }); - - - // Limited cases + // Unlimited cases //*****************************************/ - it('should make buy offer to token with limited supply type without created sale and accept it by owner', async () => { + it('should make buy offer to token with unlimit supply type without created sale and accept it by owner', async () => { if (network == 'development' || network == 'ganache') { //Set token price const tokenMstPriceStr = '10'; let tokenMstPrice = web3.utils.toWei(web3.utils.toBN(tokenMstPriceStr)); - const owner = await nft.ownerOf(tokenIdLimitedOne); - console.log("owner before " + owner); + const owner = await nft.ownerOf(tokenIdUnlimitOne); assert.equal(owner, admin, "owned by admin"); - const getAuthorBeforePurchase = await nft.get_author(midLimited); - console.log("author before " + getAuthorBeforePurchase); - assert.equal(getAuthorBeforePurchase, admin, "must be equal"); - // Approve mst tokens from userone to meta market address const approveMstTokens = await mst.approve(mMarket.address, tokenMstPrice, { from: userone @@ -823,195 +321,1353 @@ contract('MetaMarketplace', accounts => { assert.equal(checkAllowance.toString(), tokenMstPrice.toString()); //Userone make buy offer - const saleoffer = await mMarket.makeBuyOffer(nft.address, tokenIdLimitedOne, MST, tokenMstPrice, { + const saleoffer = await mMarket.makeBuyOffer(nft.address, tokenIdUnlimitOne, MST, tokenMstPrice, { from: userone }); assert.equal(saleoffer.receipt.logs.length, 1, 'triggers one events'); assert.equal(saleoffer.receipt.logs[0].event, 'NewBuyOffer', 'must be the NewBuyOffer event'); - assert.equal(tokenIdLimitedOne, saleoffer.logs[0].args.tokenId, 'must be equal'); + assert.equal(tokenIdUnlimitOne, saleoffer.logs[0].args.tokenId, 'must be equal'); assert.equal(userone, saleoffer.logs[0].args.buyer, 'offer must be called by userone'); assert.equal(tokenMstPrice.toString(), saleoffer.logs[0].args.value.toString(), 'must be equal'); // Approve nft token from admin to meta market address - const approveNftToken = await nft.approve(mMarket.address, tokenIdLimitedOne, { + const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitOne, { from: admin }); assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); - assert.equal(tokenIdLimitedOne.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + assert.equal(tokenIdUnlimitOne.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); //Check approved address - const approvedAddress = await nft.getApproved(tokenIdLimitedOne); + const approvedAddress = await nft.getApproved(tokenIdUnlimitOne); assert.equal(mMarket.address, approvedAddress, 'must be equal'); - const balanceOfAdmin = await nft.balanceOf(admin); - console.log(balanceOfAdmin); - - // const rarity = await nft.get_rarity(midUnique); - // console.log("rarity " + rarity.toString()); - - const acceptOfferByOwner = await mMarket.acceptBuyOffer(nft.address, tokenIdLimitedOne, MST, { + const acceptOfferByOwner = await mMarket.acceptBuyOffer(nft.address, tokenIdUnlimitOne, MST, { from: admin }); - const newOwner = await nft.ownerOf(tokenIdLimitedOne); - console.log("owner after " + newOwner); - - assert.equal(acceptOfferByOwner.receipt.logs.length, 3, 'triggers two events'); + assert.equal(acceptOfferByOwner.receipt.logs.length, 3, 'triggers three events'); assert.equal(acceptOfferByOwner.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); assert.equal(acceptOfferByOwner.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); assert.equal(acceptOfferByOwner.receipt.logs[2].event, 'Sale', 'must be the Sale event'); + // console.log("args 1 =================="); + // console.log(acceptOfferByOwner.receipt.logs[0].args); + const mMstBalance = await mst.balanceOf(mMarket.address); + const uMstBalance = await mst.balanceOf(userone); const royaltyMstBalance = await mst.balanceOf(royaltyaddress); + const aMstBalance = await mst.balanceOf(admin); + assert.equal(acceptOfferByOwner.receipt.logs[0].args.nft_contract_, nft.address, 'must be nft contract address'); - assert.equal(acceptOfferByOwner.receipt.logs[0].args.tokenId, tokenIdLimitedOne, 'must be equal'); + assert.equal(acceptOfferByOwner.receipt.logs[0].args.tokenId, tokenIdUnlimitOne, 'must be equal'); assert.equal(acceptOfferByOwner.receipt.logs[0].args.recepient, admin, 'recepient must be admin'); - // assert.equal(acceptOfferByOwner.receipt.logs[0].args.value.toString(), (royaltyMstBalance / 3).toString(), 'must be equal'); + assert.equal(acceptOfferByOwner.receipt.logs[0].args.value.toString(), royaltyMstBalance.toString(), 'must be equal'); - // assert.equal(acceptOfferByOwner.receipt.logs[1].args.fees.toString(), (royaltyMstBalance / 3).toString(), 'must be equal'); + assert.equal(acceptOfferByOwner.receipt.logs[1].args.fees.toString(), royaltyMstBalance.toString(), 'must be equal'); assert.equal(acceptOfferByOwner.receipt.logs[1].args.feeAddress, royaltyaddress, 'must be admin address to get royalty'); + const authorBalance = tokenMstPrice - acceptOfferByOwner.receipt.logs[1].args.fees; + assert.equal(authorBalance.toString(), aMstBalance.toString(), 'must be equal'); assert.equal(mMstBalance.toString(), 0, 'must be zero after buy offer acception'); assert.equal(acceptOfferByOwner.receipt.logs[2].args.nft_contract_, nft.address, 'must be nft contract address'); - assert.equal(acceptOfferByOwner.receipt.logs[2].args.tokenId, tokenIdLimitedOne, 'must be equal'); + assert.equal(acceptOfferByOwner.receipt.logs[2].args.tokenId, tokenIdUnlimitOne, 'must be equal'); assert.equal(acceptOfferByOwner.receipt.logs[2].args.seller, admin, 'seller must be admin'); assert.equal(acceptOfferByOwner.receipt.logs[2].args.buyer, userone, 'buyer must be userone'); assert.equal(acceptOfferByOwner.receipt.logs[2].args.value.toString(), tokenMstPrice.toString(), 'must be equal'); - const getOwnerOfToken = await nft.ownerOf(tokenIdLimitedOne); - console.log(getOwnerOfToken); - // assert.equal(getAuthorAfterPurchase, admin, "must be a new author"); + const ownership = await nft.ownerOf(tokenIdUnlimitOne); + console.log(ownership); + } else { + //Set token price + const tokenMstPriceStr = '10'; + let tokenMstPrice = web3.utils.toWei(web3.utils.toBN(tokenMstPriceStr)); + const owner = await nft.ownerOf(tokenIdUnlimitOne); + assert.equal(owner, admin, "owned by admin"); + + // Approve mst tokens from userone to meta market address + const approveMstTokens = await mst.approve(mMarket.address, tokenMstPrice, { + from: userone + }); + assert.equal(approveMstTokens.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveMstTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(userone, approveMstTokens.logs[0].args.owner, 'must be owner'); + assert.equal(mMarket.address, approveMstTokens.logs[0].args.spender, 'must be spender'); + assert.equal(tokenMstPrice.toString(), approveMstTokens.logs[0].args.value.toString(), 'must be equal'); + + //Check approved value + const checkAllowance = await mst.allowance(userone, mMarket.address); + assert.equal(checkAllowance.toString(), tokenMstPrice.toString()); + + //Userone make buy offer + const saleoffer = await mMarket.makeBuyOffer(nft.address, tokenIdUnlimitOne, MST, tokenMstPrice, { + from: userone + }); + assert.equal(saleoffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(saleoffer.receipt.logs[0].event, 'NewBuyOffer', 'must be the NewBuyOffer event'); + assert.equal(tokenIdUnlimitOne, saleoffer.logs[0].args.tokenId, 'must be equal'); + assert.equal(userone, saleoffer.logs[0].args.buyer, 'offer must be called by userone'); + assert.equal(tokenMstPrice.toString(), saleoffer.logs[0].args.value.toString(), 'must be equal'); + + // Approve nft token from admin to meta market address + const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitOne, { + from: admin + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdUnlimitOne.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + //Check approved address + const approvedAddress = await nft.getApproved(tokenIdUnlimitOne); + assert.equal(mMarket.address, approvedAddress, 'must be equal'); + + const acceptOfferByOwner = await mMarket.acceptBuyOffer(nft.address, tokenIdUnlimitOne, MST, { + from: admin + }); + + assert.equal(acceptOfferByOwner.receipt.logs.length, 3, 'triggers three events'); + assert.equal(acceptOfferByOwner.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); + assert.equal(acceptOfferByOwner.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); + assert.equal(acceptOfferByOwner.receipt.logs[2].event, 'Sale', 'must be the Sale event'); + + // console.log("args 1 =================="); + // console.log(acceptOfferByOwner.receipt.logs[0].args); + + assert.equal(acceptOfferByOwner.receipt.logs[0].args.nft_contract_, nft.address, 'must be nft contract address'); + assert.equal(acceptOfferByOwner.receipt.logs[0].args.tokenId, tokenIdUnlimitOne, 'must be equal'); + assert.equal(acceptOfferByOwner.receipt.logs[0].args.recepient, admin, 'recepient must be admin'); + assert.equal(acceptOfferByOwner.receipt.logs[1].args.feeAddress, admin, 'must be admin address to get royalty'); + + assert.equal(acceptOfferByOwner.receipt.logs[2].args.nft_contract_, nft.address, 'must be nft contract address'); + assert.equal(acceptOfferByOwner.receipt.logs[2].args.tokenId, tokenIdUnlimitOne, 'must be equal'); + assert.equal(acceptOfferByOwner.receipt.logs[2].args.seller, admin, 'seller must be admin'); + assert.equal(acceptOfferByOwner.receipt.logs[2].args.buyer, userone, 'buyer must be userone'); + + const ownership = await nft.ownerOf(tokenIdUnlimitOne); + console.log(ownership); } }); - it('should make sell offer with limited supply type and withdraw it', async () => { - const tokenWethPriceStr = '10'; - let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); - const owner = await nft.ownerOf(tokenIdLimitedTwo); - assert.equal(owner, admin, "owned by admin"); + it('should withdraw buy offer with unlimit supply type without created sale', async () => { + if (network == 'development' || network == 'ganache') { + const tokenDaiPriceStr = '10'; + let tokenDaiPrice = web3.utils.toWei(web3.utils.toBN(tokenDaiPriceStr)); + const owner = await nft.ownerOf(tokenIdUnlimitTwo); + assert.equal(owner, admin, "owned by admin"); - const approveNftToken = await nft.approve(mMarket.address, tokenIdLimitedTwo, { - from: admin - }); - assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); - assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); - assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); - assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); - assert.equal(tokenIdLimitedTwo.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); - - const selloffer = await mMarket.makeSellOffer(tokenIdLimitedTwo, tokenWethPrice, nft.address, WETH, { - from: admin - }); - assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); - assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'must be the NewSellOffer event'); - assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); - assert.equal(admin, selloffer.logs[0].args.seller, 'admin must seller'); - assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); - - const withdrawselloffer = await mMarket.withdrawSellOffer(nft.address, tokenIdLimitedTwo, { - from: admin - }); - assert.equal(withdrawselloffer.receipt.logs.length, 1, 'triggers one events'); - assert.equal(withdrawselloffer.receipt.logs[0].event, 'SellOfferWithdrawn', 'should be the SellOfferWithdrawn event'); + // Approve nft token from admin to meta market address + const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitTwo, { + from: admin + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdUnlimitTwo.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + //Check approved address + const approvedAddress = await nft.getApproved(tokenIdUnlimitTwo); + assert.equal(mMarket.address, approvedAddress, 'must be equal'); + + // Approve mst tokens from userone to meta market address + const approveDaiTokens = await dai.approve(mMarket.address, tokenDaiPrice, { + from: userone + }); + assert.equal(approveDaiTokens.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveDaiTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(userone, approveDaiTokens.logs[0].args.owner, 'must be owner'); + assert.equal(mMarket.address, approveDaiTokens.logs[0].args.spender, 'must be spender'); + assert.equal(tokenDaiPrice.toString(), approveDaiTokens.logs[0].args.value.toString(), 'must be equal'); + + //Check approved value + const checkAllowance = await dai.allowance(userone, mMarket.address); + assert.equal(checkAllowance.toString(), tokenDaiPrice.toString()); + + //User make buy offer + const saleoffer = await mMarket.makeBuyOffer(nft.address, tokenIdUnlimitTwo, DAI, tokenDaiPrice, { + from: userone + }); + assert.equal(tokenIdUnlimitTwo, saleoffer.logs[0].args.tokenId, 'must be equal'); + assert.equal(userone, saleoffer.logs[0].args.buyer, 'offer must be called by userone'); + assert.equal(tokenDaiPrice.toString(), saleoffer.logs[0].args.value.toString(), 'must be equal'); + + await time.increase(time.duration.days(2)); + const withdrawBuyOffer = await mMarket.withdrawBuyOffer(nft.address, tokenIdUnlimitTwo, DAI, { + from: userone + }); + assert.equal(withdrawBuyOffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(withdrawBuyOffer.receipt.logs[0].event, 'BuyOfferWithdrawn', 'must be the BuyOfferWithdrawn event'); + assert.equal(tokenIdUnlimitTwo, withdrawBuyOffer.receipt.logs[0].args.tokenId, 'must be owner'); + assert.equal(userone, withdrawBuyOffer.receipt.logs[0].args.buyer, 'userone must be buyer'); + } else { + // const tokenMstPriceStr = '10'; + // let tokenMstPrice = web3.utils.toWei(web3.utils.toBN(tokenMstPriceStr)); + // const owner = await nft.ownerOf(tokenIdUnlimitTwo); + // assert.equal(owner, admin, "owned by admin"); + + // // Approve nft token from admin to meta market address + // const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitTwo, { + // from: admin + // }); + // assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + // assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); + // assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + // assert.equal(tokenIdUnlimitTwo.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + // //Check approved address + // const approvedAddress = await nft.getApproved(tokenIdUnlimitTwo); + // assert.equal(mMarket.address, approvedAddress, 'must be equal'); + + // // Approve mst tokens from userone to meta market address + // const approveMstTokens = await mst.approve(mMarket.address, tokenMstPrice, { + // from: userone + // }); + // assert.equal(approveMstTokens.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(approveMstTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + // assert.equal(userone, approveMstTokens.logs[0].args.owner, 'must be owner'); + // assert.equal(mMarket.address, approveMstTokens.logs[0].args.spender, 'must be spender'); + // assert.equal(tokenMstPrice.toString(), approveMstTokens.logs[0].args.value.toString(), 'must be equal'); + + // //Check approved value + // const checkAllowance = await mst.allowance(userone, mMarket.address); + // assert.equal(checkAllowance.toString(), tokenMstPrice.toString()); + + // //User make buy offer + // const saleoffer = await mMarket.makeBuyOffer(nft.address, tokenIdUnlimitTwo, MST, tokenMstPrice, { + // from: userone + // }); + // assert.equal(tokenIdUnlimitTwo, saleoffer.logs[0].args.tokenId, 'must be equal'); + // assert.equal(userone, saleoffer.logs[0].args.buyer, 'offer must be called by userone'); + // assert.equal(tokenMstPrice.toString(), saleoffer.logs[0].args.value.toString(), 'must be equal'); + + // await time.increase(time.duration.days(2)); + // const withdrawBuyOffer = await mMarket.withdrawBuyOffer(nft.address, tokenIdUnlimitTwo, MST, { + // from: userone + // }); + // assert.equal(withdrawBuyOffer.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(withdrawBuyOffer.receipt.logs[0].event, 'BuyOfferWithdrawn', 'must be the BuyOfferWithdrawn event'); + // assert.equal(tokenIdUnlimitTwo, withdrawBuyOffer.receipt.logs[0].args.tokenId, 'must be owner'); + // assert.equal(userone, withdrawBuyOffer.receipt.logs[0].args.buyer, 'userone must be buyer'); + } }); - - it('should make sell offer with limited supply type', async () => { - const tokenUsdtPriceStr = '1'; - let tokenUsdtPrice = tokenUsdtPriceStr * 1e6; - const owner = await nft.ownerOf(tokenIdLimitedThree); - assert.equal(owner, admin, "owned by admin"); - const approveNftToken = await nft.approve(mMarket.address, tokenIdLimitedThree, { - from: admin - }); - assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); - assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); - assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); - assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); - assert.equal(tokenIdLimitedThree.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); - - const selloffer = await mMarket.makeSellOffer(tokenIdLimitedThree, tokenUsdtPrice, nft.address, USDT, { - from: admin - }); - assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); - assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'should be the NewSellOffer event'); - assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); - assert.equal(admin, selloffer.logs[0].args.seller, 'admin must seller'); - assert.equal(tokenUsdtPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); - - const approveUsdtTokens = await usdt.approve(mMarket.address, tokenUsdtPrice, { - from: userone - }); - assert.equal(approveUsdtTokens.receipt.logs.length, 1, 'triggers one events'); - assert.equal(approveUsdtTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); - assert.equal(userone, approveUsdtTokens.logs[0].args.owner, 'must be owner'); - assert.equal(mMarket.address, approveUsdtTokens.logs[0].args.spender, 'must be spender'); - assert.equal(tokenUsdtPrice.toString(), approveUsdtTokens.logs[0].args.value.toString(), 'must be equal'); + it('should make sell offer with unlimit supply type and withdraw it', async () => { + + if (network == 'development' || network == 'ganache') { + const tokenWethPriceStr = '10'; + let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); + const owner = await nft.ownerOf(tokenIdUnlimitThree); + assert.equal(owner, admin, "owned by admin"); + + const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitThree, { + from: admin + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdUnlimitThree.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); - //Check approved value - const checkAllowance = await usdt.allowance(userone, mMarket.address); - assert.equal(checkAllowance.toString(), tokenUsdtPrice.toString()); + const selloffer = await mMarket.makeSellOffer(tokenIdUnlimitThree, tokenWethPrice, nft.address, WETH, { + from: admin + }); + assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'must be the NewSellOffer event'); + assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); + assert.equal(admin, selloffer.logs[0].args.seller, 'admin must seller'); + assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); - const userBalance = await usdt.balanceOf(userone); - console.log(userBalance); + const withdrawselloffer = await mMarket.withdrawSellOffer(nft.address, tokenIdUnlimitThree, { + from: admin + }); + assert.equal(withdrawselloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(withdrawselloffer.receipt.logs[0].event, 'SellOfferWithdrawn', 'must be the SellOfferWithdrawn event'); + assert.equal(withdrawselloffer.receipt.logs[0].args.tokenId, tokenIdUnlimitThree, 'must be equal'); + assert.equal(withdrawselloffer.receipt.logs[0].args.seller, admin, 'seller must be admin'); + } else { + const tokenMstPriceStr = '10'; + let tokenMstPrice = web3.utils.toWei(web3.utils.toBN(tokenMstPriceStr)); + const owner = await nft.ownerOf(tokenIdUnlimitThree); + assert.equal(owner, admin, "owned by admin"); - const purchase = await mMarket.purchase(nft.address, tokenIdLimitedThree, USDT, tokenUsdtPrice, { - from: userone - }); - assert.equal(purchase.receipt.logs.length, 3, 'triggers three events'); - assert.equal(purchase.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); - assert.equal(purchase.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); - assert.equal(purchase.receipt.logs[2].event, 'Sale', 'must be the Sale event'); + const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitThree, { + from: admin + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdUnlimitThree.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + const selloffer = await mMarket.makeSellOffer(tokenIdUnlimitThree, tokenMstPrice, nft.address, MST, { + from: admin + }); + assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'must be the NewSellOffer event'); + assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); + assert.equal(admin, selloffer.logs[0].args.seller, 'admin must seller'); + assert.equal(tokenMstPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); + + const withdrawselloffer = await mMarket.withdrawSellOffer(nft.address, tokenIdUnlimitThree, { + from: admin + }); + assert.equal(withdrawselloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(withdrawselloffer.receipt.logs[0].event, 'SellOfferWithdrawn', 'must be the SellOfferWithdrawn event'); + assert.equal(withdrawselloffer.receipt.logs[0].args.tokenId, tokenIdUnlimitThree, 'must be equal'); + assert.equal(withdrawselloffer.receipt.logs[0].args.seller, admin, 'seller must be admin'); + } }); - it('should make sell offer with limited supply type', async () => { - const tokenWethPriceStr = '1'; - let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); - const owner = await nft.ownerOf(tokenIdLimitedTwo); - assert.equal(owner, admin, "owned by admin"); + it('should make sell offer with unlimit supply type', async () => { - const approveNftToken = await nft.approve(mMarket.address, tokenIdLimitedTwo, { - from: admin - }); - assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); - assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); - assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); - assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); - assert.equal(tokenIdLimitedTwo.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); - - const selloffer = await mMarket.makeSellOffer(tokenIdLimitedTwo, tokenWethPrice, nft.address, WETH, { - from: admin - }); - assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); - assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'should be the NewSellOffer event'); - assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); - assert.equal(admin, selloffer.logs[0].args.seller, 'admin must seller'); - assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); - - const approveWethTokens = await weth.approve(mMarket.address, tokenWethPrice, { - from: userone - }); - assert.equal(approveWethTokens.receipt.logs.length, 1, 'triggers one events'); - assert.equal(approveWethTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); - assert.equal(userone, approveWethTokens.logs[0].args.owner, 'must be owner'); - assert.equal(mMarket.address, approveWethTokens.logs[0].args.spender, 'must be spender'); - assert.equal(tokenWethPrice.toString(), approveWethTokens.logs[0].args.value.toString(), 'must be equal'); - - //Check approved value - const checkAllowance = await weth.allowance(userone, mMarket.address); - assert.equal(checkAllowance.toString(), tokenWethPrice.toString()); - - const purchase = await mMarket.purchase(nft.address, tokenIdLimitedTwo, WETH, tokenWethPrice, { - from: userone - }); - assert.equal(purchase.receipt.logs.length, 3, 'triggers three events'); - assert.equal(purchase.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); - assert.equal(purchase.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); - assert.equal(purchase.receipt.logs[2].event, 'Sale', 'must be the Sale event'); + if (network == 'development' || network == 'ganache') { + const tokenWethPriceStr = '10'; + let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); + const owner = await nft.ownerOf(tokenIdUnlimitThree); + assert.equal(owner, admin, "owned by admin"); + + const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitThree, { + from: admin + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdUnlimitThree.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + const selloffer = await mMarket.makeSellOffer(tokenIdUnlimitThree, tokenWethPrice, nft.address, WETH, { + from: admin + }); + assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'must be the NewSellOffer event'); + assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); + assert.equal(admin, selloffer.logs[0].args.seller, 'admin must seller'); + assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); + + const approveWethTokens = await weth.approve(mMarket.address, tokenWethPrice, { + from: userone + }); + assert.equal(approveWethTokens.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveWethTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(userone, approveWethTokens.logs[0].args.owner, 'must be owner'); + assert.equal(mMarket.address, approveWethTokens.logs[0].args.spender, 'must be spender'); + assert.equal(tokenWethPrice.toString(), approveWethTokens.logs[0].args.value.toString(), 'must be equal'); + + //Check approved value + const checkAllowance = await weth.allowance(userone, mMarket.address); + assert.equal(checkAllowance.toString(), tokenWethPrice.toString()); + + const purchase = await mMarket.purchase(nft.address, tokenIdUnlimitThree, WETH, tokenWethPrice, { + from: userone + }); + + const mWethBalance = await weth.balanceOf(mMarket.address); + const uMstBalance = await weth.balanceOf(userone); + const royaltyWethBalance = await weth.balanceOf(royaltyaddress); + const aWethBalance = await weth.balanceOf(admin); + + assert.equal(purchase.receipt.logs.length, 3, 'triggers three events'); + + assert.equal(purchase.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); + assert.equal(purchase.receipt.logs[0].args.nft_contract_, nft.address, 'must be nft contract address'); + assert.equal(purchase.receipt.logs[0].args.tokenId, tokenIdUnlimitThree, 'must be equal'); + assert.equal(purchase.receipt.logs[0].args.recepient, admin, 'recepient must be admin'); + assert.equal(purchase.receipt.logs[0].args.value.toString(), royaltyWethBalance.toString(), 'must be equal'); + + assert.equal(purchase.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); + assert.equal(purchase.receipt.logs[1].args.fees.toString(), royaltyWethBalance.toString(), 'must be the CalculatedFees event'); + assert.equal(purchase.receipt.logs[1].args.feeAddress, royaltyaddress, 'must be the CalculatedFees event'); + + const authorBalance = tokenWethPrice - purchase.receipt.logs[1].args.fees; + assert.equal(authorBalance.toString(), aWethBalance.toString(), 'must be equal'); + assert.equal(mWethBalance.toString(), 0, 'must be zero after buy offer acception'); + + assert.equal(purchase.receipt.logs[2].event, 'Sale', 'must be the Sale event'); + assert.equal(purchase.receipt.logs[2].args.nft_contract_, nft.address, 'must be nft contract address'); + assert.equal(purchase.receipt.logs[2].args.tokenId, tokenIdUnlimitThree, 'must be equal'); + assert.equal(purchase.receipt.logs[2].args.seller, admin, 'seller must be admin'); + assert.equal(purchase.receipt.logs[2].args.buyer, userone, 'buyer must be userone'); + assert.equal(purchase.receipt.logs[2].args.value.toString(), tokenWethPrice.toString(), 'must be equal'); + + const ownership = await nft.ownerOf(tokenIdUnlimitThree); + console.log("ownership " + ownership); + } else { + const tokenMstPriceStr = '10'; + let tokenMstPrice = web3.utils.toWei(web3.utils.toBN(tokenMstPriceStr)); + const owner = await nft.ownerOf(tokenIdUnlimitThree); + assert.equal(owner, admin, "owned by admin"); + + const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitThree, { + from: admin + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdUnlimitThree.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + const selloffer = await mMarket.makeSellOffer(tokenIdUnlimitThree, tokenMstPrice, nft.address, MST, { + from: admin + }); + assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'must be the NewSellOffer event'); + assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); + assert.equal(admin, selloffer.logs[0].args.seller, 'admin must seller'); + assert.equal(tokenMstPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); + + const approveMstTokens = await mst.approve(mMarket.address, tokenMstPrice, { + from: userone + }); + assert.equal(approveMstTokens.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveMstTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(userone, approveMstTokens.logs[0].args.owner, 'must be owner'); + assert.equal(mMarket.address, approveMstTokens.logs[0].args.spender, 'must be spender'); + assert.equal(tokenMstPrice.toString(), approveMstTokens.logs[0].args.value.toString(), 'must be equal'); + + //Check approved value + const checkAllowance = await mst.allowance(userone, mMarket.address); + assert.equal(checkAllowance.toString(), tokenMstPrice.toString()); + + const purchase = await mMarket.purchase(nft.address, tokenIdUnlimitThree, MST, tokenMstPrice, { + from: userone + }); + + assert.equal(purchase.receipt.logs.length, 3, 'triggers three events'); + + assert.equal(purchase.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); + assert.equal(purchase.receipt.logs[0].args.nft_contract_, nft.address, 'must be nft contract address'); + assert.equal(purchase.receipt.logs[0].args.tokenId, tokenIdUnlimitThree, 'must be equal'); + assert.equal(purchase.receipt.logs[0].args.recepient, admin, 'recepient must be admin'); + + assert.equal(purchase.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); + assert.equal(purchase.receipt.logs[1].args.feeAddress, admin, 'must be the CalculatedFees event'); + + assert.equal(purchase.receipt.logs[2].event, 'Sale', 'must be the Sale event'); + assert.equal(purchase.receipt.logs[2].args.nft_contract_, nft.address, 'must be nft contract address'); + assert.equal(purchase.receipt.logs[2].args.tokenId, tokenIdUnlimitThree, 'must be equal'); + assert.equal(purchase.receipt.logs[2].args.seller, admin, 'seller must be admin'); + assert.equal(purchase.receipt.logs[2].args.buyer, userone, 'buyer must be userone'); + assert.equal(purchase.receipt.logs[2].args.value.toString(), tokenMstPrice.toString(), 'must be equal'); + + const ownership = await nft.ownerOf(tokenIdUnlimitThree); + console.log("ownership " + ownership); + } + + }); + + it('should make sell offer with unlimit supply type by new owner and withdraw it', async () => { + + if (network == 'development' || network == 'ganache') { + const tokenWethPriceStr = '2'; + let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); + const owner = await nft.ownerOf(tokenIdUnlimitThree); + assert.equal(owner, userone, "owned by userone"); + + const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitThree, { + from: userone + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(userone, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdUnlimitThree.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + const selloffer = await mMarket.makeSellOffer(tokenIdUnlimitThree, tokenWethPrice, nft.address, WETH, { + from: userone + }); + assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'must be the NewSellOffer event'); + assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); + assert.equal(userone, selloffer.logs[0].args.seller, 'userone must seller'); + assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); + + const withdrawselloffer = await mMarket.withdrawSellOffer(nft.address, tokenIdUnlimitThree, { + from: userone + }); + assert.equal(withdrawselloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(withdrawselloffer.receipt.logs[0].event, 'SellOfferWithdrawn', 'must be the SellOfferWithdrawn event'); + } else { + const tokenMstPriceStr = '2'; + let tokenMstPrice = web3.utils.toWei(web3.utils.toBN(tokenMstPriceStr)); + const owner = await nft.ownerOf(tokenIdUnlimitThree); + assert.equal(owner, userone, "owned by userone"); + + const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitThree, { + from: userone + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(userone, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdUnlimitThree.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + const selloffer = await mMarket.makeSellOffer(tokenIdUnlimitThree, tokenMstPrice, nft.address, MST, { + from: userone + }); + assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'must be the NewSellOffer event'); + assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); + assert.equal(userone, selloffer.logs[0].args.seller, 'userone must seller'); + assert.equal(tokenMstPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); + + const withdrawselloffer = await mMarket.withdrawSellOffer(nft.address, tokenIdUnlimitThree, { + from: userone + }); + assert.equal(withdrawselloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(withdrawselloffer.receipt.logs[0].event, 'SellOfferWithdrawn', 'must be the SellOfferWithdrawn event'); + } + }); + + it('should make sell offer with unlimit supply type by new owner', async () => { + + if (network == 'development' || network == 'ganache') { + const tokenWethPriceStr = '2'; + let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); + const owner = await nft.ownerOf(tokenIdUnlimitThree); + assert.equal(owner, userone, "owned by userone"); + + const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitThree, { + from: userone + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(userone, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdUnlimitThree.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + const approveUsdcTokens = await weth.approve(mMarket.address, tokenWethPrice, { + from: admin + }); + assert.equal(approveUsdcTokens.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveUsdcTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(admin, approveUsdcTokens.logs[0].args.owner, 'must be owner'); + assert.equal(mMarket.address, approveUsdcTokens.logs[0].args.spender, 'must be spender'); + assert.equal(tokenWethPrice.toString(), approveUsdcTokens.logs[0].args.value.toString(), 'must be equal'); + //Check approved value + const checkAllowance = await weth.allowance(admin, mMarket.address); + assert.equal(checkAllowance.toString(), tokenWethPrice.toString()); + + const selloffer = await mMarket.makeSellOffer(tokenIdUnlimitThree, tokenWethPrice, nft.address, WETH, { + from: userone + }); + assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'must be the NewSellOffer event'); + assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); + assert.equal(userone, selloffer.logs[0].args.seller, 'userone must seller'); + assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); + + const purchase = await mMarket.purchase(nft.address, tokenIdUnlimitThree, WETH, tokenWethPrice, { + from: admin + }); + assert.equal(purchase.receipt.logs.length, 3, 'triggers three events'); + assert.equal(purchase.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); + assert.equal(purchase.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); + assert.equal(purchase.receipt.logs[2].event, 'Sale', 'must be the Sale event'); + } else { + const tokenMstPriceStr = '2'; + let tokenMstPrice = web3.utils.toWei(web3.utils.toBN(tokenMstPriceStr)); + const owner = await nft.ownerOf(tokenIdUnlimitThree); + assert.equal(owner, userone, "owned by userone"); + + const approveNftToken = await nft.approve(mMarket.address, tokenIdUnlimitThree, { + from: userone + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(userone, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdUnlimitThree.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + const approveUsdcTokens = await mst.approve(mMarket.address, tokenMstPrice, { + from: admin + }); + assert.equal(approveUsdcTokens.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveUsdcTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(admin, approveUsdcTokens.logs[0].args.owner, 'must be owner'); + assert.equal(mMarket.address, approveUsdcTokens.logs[0].args.spender, 'must be spender'); + assert.equal(tokenMstPrice.toString(), approveUsdcTokens.logs[0].args.value.toString(), 'must be equal'); + //Check approved value + const checkAllowance = await mst.allowance(admin, mMarket.address); + assert.equal(checkAllowance.toString(), tokenMstPrice.toString()); + + const selloffer = await mMarket.makeSellOffer(tokenIdUnlimitThree, tokenMstPrice, nft.address, MST, { + from: userone + }); + assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'must be the NewSellOffer event'); + assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); + assert.equal(userone, selloffer.logs[0].args.seller, 'userone must seller'); + assert.equal(tokenMstPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); + + const purchase = await mMarket.purchase(nft.address, tokenIdUnlimitThree, MST, tokenMstPrice, { + from: admin + }); + assert.equal(purchase.receipt.logs.length, 3, 'triggers three events'); + assert.equal(purchase.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); + assert.equal(purchase.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); + assert.equal(purchase.receipt.logs[2].event, 'Sale', 'must be the Sale event'); + } + }); + + + + // // Unique cases + + // //*****************************************/ + + + it('should make buy offer to token with unique supply type without created sale and accept it by owner', async () => { + if (network == 'development' || network == 'ganache') { + //Set token price + const tokenMstPriceStr = '10'; + let tokenMstPrice = web3.utils.toWei(web3.utils.toBN(tokenMstPriceStr)); + const owner = await nft.ownerOf(tokenIdUniue); + console.log("owner before " + owner); + assert.equal(owner, admin, "owned by admin"); + + const getAuthorBeforePurchase = await nft.get_author(midUnique); + console.log("author before " + getAuthorBeforePurchase); + assert.equal(getAuthorBeforePurchase, admin, "must be equal"); + + // Approve mst tokens from userone to meta market address + const approveMstTokens = await mst.approve(mMarket.address, tokenMstPrice, { + from: userone + }); + assert.equal(approveMstTokens.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveMstTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(userone, approveMstTokens.logs[0].args.owner, 'must be owner'); + assert.equal(mMarket.address, approveMstTokens.logs[0].args.spender, 'must be spender'); + assert.equal(tokenMstPrice.toString(), approveMstTokens.logs[0].args.value.toString(), 'must be equal'); + + //Check approved value + const checkAllowance = await mst.allowance(userone, mMarket.address); + assert.equal(checkAllowance.toString(), tokenMstPrice.toString()); + + //Userone make buy offer + const saleoffer = await mMarket.makeBuyOffer(nft.address, tokenIdUniue, MST, tokenMstPrice, { + from: userone + }); + assert.equal(saleoffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(saleoffer.receipt.logs[0].event, 'NewBuyOffer', 'must be the NewBuyOffer event'); + assert.equal(tokenIdUniue, saleoffer.logs[0].args.tokenId, 'must be equal'); + assert.equal(userone, saleoffer.logs[0].args.buyer, 'offer must be called by userone'); + assert.equal(tokenMstPrice.toString(), saleoffer.logs[0].args.value.toString(), 'must be equal'); + + // Approve nft token from admin to meta market address + const approveNftToken = await nft.approve(mMarket.address, tokenIdUniue, { + from: admin + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdUniue.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + //Check approved address + const approvedAddress = await nft.getApproved(tokenIdUniue); + assert.equal(mMarket.address, approvedAddress, 'must be equal'); + + const rarity = await nft.get_rarity(midUnique); + console.log("rarity " + rarity.toString()); + + const acceptOfferByOwner = await mMarket.acceptBuyOffer(nft.address, tokenIdUniue, MST, { + from: admin + }); + + const newOwner = await nft.ownerOf(tokenIdUniue); + console.log("owner after " + newOwner); + + assert.equal(acceptOfferByOwner.receipt.logs.length, 3, 'triggers two events'); + assert.equal(acceptOfferByOwner.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); + assert.equal(acceptOfferByOwner.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); + assert.equal(acceptOfferByOwner.receipt.logs[2].event, 'Sale', 'must be the Sale event'); + + const mMstBalance = await mst.balanceOf(mMarket.address); + const royaltyMstBalance = await mst.balanceOf(royaltyaddress); + + assert.equal(acceptOfferByOwner.receipt.logs[0].args.nft_contract_, nft.address, 'must be nft contract address'); + assert.equal(acceptOfferByOwner.receipt.logs[0].args.tokenId, tokenIdUniue, 'must be equal'); + assert.equal(acceptOfferByOwner.receipt.logs[0].args.recepient, admin, 'recepient must be admin'); + assert.equal(acceptOfferByOwner.receipt.logs[0].args.value.toString(), (royaltyMstBalance / 2).toString(), 'must be equal'); + + assert.equal(acceptOfferByOwner.receipt.logs[1].args.fees.toString(), (royaltyMstBalance / 2).toString(), 'must be equal'); + assert.equal(acceptOfferByOwner.receipt.logs[1].args.feeAddress, royaltyaddress, 'must be admin address to get royalty'); + assert.equal(mMstBalance.toString(), 0, 'must be zero after buy offer acception'); + + assert.equal(acceptOfferByOwner.receipt.logs[2].args.nft_contract_, nft.address, 'must be nft contract address'); + assert.equal(acceptOfferByOwner.receipt.logs[2].args.tokenId, tokenIdUniue, 'must be equal'); + assert.equal(acceptOfferByOwner.receipt.logs[2].args.seller, admin, 'seller must be admin'); + assert.equal(acceptOfferByOwner.receipt.logs[2].args.buyer, userone, 'buyer must be userone'); + assert.equal(acceptOfferByOwner.receipt.logs[2].args.value.toString(), tokenMstPrice.toString(), 'must be equal'); + + const getAuthorAfterPurchase = await nft.get_author(midUnique); + assert.equal(getAuthorAfterPurchase, userone, "must be a new author"); + } else { + //Set token price + const tokenMstPriceStr = '10'; + let tokenMstPrice = web3.utils.toWei(web3.utils.toBN(tokenMstPriceStr)); + const owner = await nft.ownerOf(tokenIdUniue); + assert.equal(owner, admin, "owned by admin"); + + const getAuthorBeforePurchase = await nft.get_author(midUnique); + assert.equal(getAuthorBeforePurchase, admin, "must be equal"); + + // Approve mst tokens from userone to meta market address + const approveMstTokens = await mst.approve(mMarket.address, tokenMstPrice, { + from: userone + }); + assert.equal(approveMstTokens.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveMstTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(userone, approveMstTokens.logs[0].args.owner, 'must be owner'); + assert.equal(mMarket.address, approveMstTokens.logs[0].args.spender, 'must be spender'); + assert.equal(tokenMstPrice.toString(), approveMstTokens.logs[0].args.value.toString(), 'must be equal'); + + //Check approved value + const checkAllowance = await mst.allowance(userone, mMarket.address); + assert.equal(checkAllowance.toString(), tokenMstPrice.toString()); + + //Userone make buy offer + const saleoffer = await mMarket.makeBuyOffer(nft.address, tokenIdUniue, MST, tokenMstPrice, { + from: userone + }); + assert.equal(saleoffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(saleoffer.receipt.logs[0].event, 'NewBuyOffer', 'must be the NewBuyOffer event'); + assert.equal(tokenIdUniue, saleoffer.logs[0].args.tokenId, 'must be equal'); + assert.equal(userone, saleoffer.logs[0].args.buyer, 'offer must be called by userone'); + assert.equal(tokenMstPrice.toString(), saleoffer.logs[0].args.value.toString(), 'must be equal'); + + // Approve nft token from admin to meta market address + const approveNftToken = await nft.approve(mMarket.address, tokenIdUniue, { + from: admin + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdUniue.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + //Check approved address + const approvedAddress = await nft.getApproved(tokenIdUniue); + assert.equal(mMarket.address, approvedAddress, 'must be equal'); + + const rarity = await nft.get_rarity(midUnique); + console.log("rarity " + rarity.toString()); + + const acceptOfferByOwner = await mMarket.acceptBuyOffer(nft.address, tokenIdUniue, MST, { + from: admin + }); + + assert.equal(acceptOfferByOwner.receipt.logs.length, 3, 'triggers two events'); + assert.equal(acceptOfferByOwner.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); + assert.equal(acceptOfferByOwner.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); + assert.equal(acceptOfferByOwner.receipt.logs[2].event, 'Sale', 'must be the Sale event'); + + assert.equal(acceptOfferByOwner.receipt.logs[0].args.nft_contract_, nft.address, 'must be nft contract address'); + assert.equal(acceptOfferByOwner.receipt.logs[0].args.tokenId, tokenIdUniue, 'must be equal'); + assert.equal(acceptOfferByOwner.receipt.logs[0].args.recepient, admin, 'recepient must be admin'); + + assert.equal(acceptOfferByOwner.receipt.logs[1].args.feeAddress, admin, 'must be admin address to get royalty'); + + assert.equal(acceptOfferByOwner.receipt.logs[2].args.nft_contract_, nft.address, 'must be nft contract address'); + assert.equal(acceptOfferByOwner.receipt.logs[2].args.tokenId, tokenIdUniue, 'must be equal'); + assert.equal(acceptOfferByOwner.receipt.logs[2].args.seller, admin, 'seller must be admin'); + assert.equal(acceptOfferByOwner.receipt.logs[2].args.buyer, userone, 'buyer must be userone'); + assert.equal(acceptOfferByOwner.receipt.logs[2].args.value.toString(), tokenMstPrice.toString(), 'must be equal'); + + const getAuthorAfterPurchase = await nft.get_author(midUnique); + assert.equal(getAuthorAfterPurchase, userone, "must be a new author"); + } + }); + + it('should make sell offer with unique supply type and withdraw it', async () => { + + if (network == 'development' || network == 'ganache') { + const tokenWethPriceStr = '10'; + let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); + const owner = await nft.ownerOf(tokenIdUniue); + assert.equal(owner, userone, "owned by admin"); + + const approveNftToken = await nft.approve(mMarket.address, tokenIdUniue, { + from: userone + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(userone, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdUniue.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + const selloffer = await mMarket.makeSellOffer(tokenIdUniue, tokenWethPrice, nft.address, WETH, { + from: userone + }); + assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'must be the NewSellOffer event'); + assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); + assert.equal(userone, selloffer.logs[0].args.seller, 'admin must seller'); + assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); + + const withdrawselloffer = await mMarket.withdrawSellOffer(nft.address, tokenIdUniue, { + from: userone + }); + assert.equal(withdrawselloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(withdrawselloffer.receipt.logs[0].event, 'SellOfferWithdrawn', 'should be the SellOfferWithdrawn event'); + } else { + const tokenMstPriceStr = '10'; + let tokenMstPrice = web3.utils.toWei(web3.utils.toBN(tokenMstPriceStr)); + const owner = await nft.ownerOf(tokenIdUniue); + assert.equal(owner, userone, "owned by admin"); + + const approveNftToken = await nft.approve(mMarket.address, tokenIdUniue, { + from: userone + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(userone, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdUniue.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + const selloffer = await mMarket.makeSellOffer(tokenIdUniue, tokenMstPrice, nft.address, MST, { + from: userone + }); + assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'must be the NewSellOffer event'); + assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); + assert.equal(userone, selloffer.logs[0].args.seller, 'admin must seller'); + assert.equal(tokenMstPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); + + const withdrawselloffer = await mMarket.withdrawSellOffer(nft.address, tokenIdUniue, { + from: userone + }); + assert.equal(withdrawselloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(withdrawselloffer.receipt.logs[0].event, 'SellOfferWithdrawn', 'should be the SellOfferWithdrawn event'); + } + }); + + it('should make sell offer with unique supply type', async () => { + + if (network == 'development' || network == 'ganache') { + const tokenWethPriceStr = '1'; + let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); + const owner = await nft.ownerOf(tokenIdUniue); + assert.equal(owner, userone, "owned by admin"); + + const approveNftToken = await nft.approve(mMarket.address, tokenIdUniue, { + from: userone + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(userone, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdUniue.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + const selloffer = await mMarket.makeSellOffer(tokenIdUniue, tokenWethPrice, nft.address, WETH, { + from: userone + }); + assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'should be the NewSellOffer event'); + assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); + assert.equal(userone, selloffer.logs[0].args.seller, 'admin must seller'); + assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); + + const approveWethTokens = await weth.approve(mMarket.address, tokenWethPrice, { + from: admin + }); + assert.equal(approveWethTokens.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveWethTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(admin, approveWethTokens.logs[0].args.owner, 'must be owner'); + assert.equal(mMarket.address, approveWethTokens.logs[0].args.spender, 'must be spender'); + assert.equal(tokenWethPrice.toString(), approveWethTokens.logs[0].args.value.toString(), 'must be equal'); + + //Check approved value + const checkAllowance = await weth.allowance(admin, mMarket.address); + assert.equal(checkAllowance.toString(), tokenWethPrice.toString()); + + const purchase = await mMarket.purchase(nft.address, tokenIdUniue, WETH, tokenWethPrice, { + from: admin + }); + assert.equal(purchase.receipt.logs.length, 3, 'triggers three events'); + assert.equal(purchase.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); + assert.equal(purchase.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); + assert.equal(purchase.receipt.logs[2].event, 'Sale', 'must be the Sale event'); + + const getAuthorAfterPurchase = await nft.get_author(midUnique); + assert.equal(getAuthorAfterPurchase, admin, "must be a new author"); + } else { + const tokenMstPriceStr = '1'; + let tokenMstPrice = web3.utils.toWei(web3.utils.toBN(tokenMstPriceStr)); + const owner = await nft.ownerOf(tokenIdUniue); + assert.equal(owner, userone, "owned by admin"); + + const approveNftToken = await nft.approve(mMarket.address, tokenIdUniue, { + from: userone + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(userone, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdUniue.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + const selloffer = await mMarket.makeSellOffer(tokenIdUniue, tokenMstPrice, nft.address, MST, { + from: userone + }); + assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'should be the NewSellOffer event'); + assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); + assert.equal(userone, selloffer.logs[0].args.seller, 'admin must seller'); + assert.equal(tokenMstPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); + + const approveMstTokens = await mst.approve(mMarket.address, tokenMstPrice, { + from: admin + }); + assert.equal(approveMstTokens.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveMstTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(admin, approveMstTokens.logs[0].args.owner, 'must be owner'); + assert.equal(mMarket.address, approveMstTokens.logs[0].args.spender, 'must be spender'); + assert.equal(tokenMstPrice.toString(), approveMstTokens.logs[0].args.value.toString(), 'must be equal'); + + //Check approved value + const checkAllowance = await mst.allowance(admin, mMarket.address); + assert.equal(checkAllowance.toString(), tokenMstPrice.toString()); + + const purchase = await mMarket.purchase(nft.address, tokenIdUniue, MST, tokenMstPrice, { + from: admin + }); + assert.equal(purchase.receipt.logs.length, 3, 'triggers three events'); + assert.equal(purchase.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); + assert.equal(purchase.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); + assert.equal(purchase.receipt.logs[2].event, 'Sale', 'must be the Sale event'); + + const getAuthorAfterPurchase = await nft.get_author(midUnique); + assert.equal(getAuthorAfterPurchase, admin, "must be a new author"); + } + }); + + + // // Limited cases + + // //*****************************************/ + + it('should make buy offer to token with limited supply type without created sale and accept it by owner', async () => { + if (network == 'development' || network == 'ganache') { + //Set token price + const tokenMstPriceStr = '10'; + let tokenMstPrice = web3.utils.toWei(web3.utils.toBN(tokenMstPriceStr)); + const owner = await nft.ownerOf(tokenIdLimitedOne); + console.log("owner before " + owner); + assert.equal(owner, admin, "owned by admin"); + + const getAuthorBeforePurchase = await nft.get_author(midLimited); + console.log("author before " + getAuthorBeforePurchase); + assert.equal(getAuthorBeforePurchase, admin, "must be equal"); + + // Approve mst tokens from userone to meta market address + const approveMstTokens = await mst.approve(mMarket.address, tokenMstPrice, { + from: userone + }); + assert.equal(approveMstTokens.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveMstTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(userone, approveMstTokens.logs[0].args.owner, 'must be owner'); + assert.equal(mMarket.address, approveMstTokens.logs[0].args.spender, 'must be spender'); + assert.equal(tokenMstPrice.toString(), approveMstTokens.logs[0].args.value.toString(), 'must be equal'); + + //Check approved value + const checkAllowance = await mst.allowance(userone, mMarket.address); + assert.equal(checkAllowance.toString(), tokenMstPrice.toString()); + + //Userone make buy offer + const saleoffer = await mMarket.makeBuyOffer(nft.address, tokenIdLimitedOne, MST, tokenMstPrice, { + from: userone + }); + assert.equal(saleoffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(saleoffer.receipt.logs[0].event, 'NewBuyOffer', 'must be the NewBuyOffer event'); + assert.equal(tokenIdLimitedOne, saleoffer.logs[0].args.tokenId, 'must be equal'); + assert.equal(userone, saleoffer.logs[0].args.buyer, 'offer must be called by userone'); + assert.equal(tokenMstPrice.toString(), saleoffer.logs[0].args.value.toString(), 'must be equal'); + + // Approve nft token from admin to meta market address + const approveNftToken = await nft.approve(mMarket.address, tokenIdLimitedOne, { + from: admin + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdLimitedOne.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + //Check approved address + const approvedAddress = await nft.getApproved(tokenIdLimitedOne); + assert.equal(mMarket.address, approvedAddress, 'must be equal'); + + const balanceOfAdmin = await nft.balanceOf(admin); + console.log(balanceOfAdmin); + + // const rarity = await nft.get_rarity(midUnique); + // console.log("rarity " + rarity.toString()); + + const acceptOfferByOwner = await mMarket.acceptBuyOffer(nft.address, tokenIdLimitedOne, MST, { + from: admin + }); + + const newOwner = await nft.ownerOf(tokenIdLimitedOne); + console.log("owner after " + newOwner); + + assert.equal(acceptOfferByOwner.receipt.logs.length, 3, 'triggers two events'); + assert.equal(acceptOfferByOwner.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); + assert.equal(acceptOfferByOwner.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); + assert.equal(acceptOfferByOwner.receipt.logs[2].event, 'Sale', 'must be the Sale event'); + + const mMstBalance = await mst.balanceOf(mMarket.address); + const royaltyMstBalance = await mst.balanceOf(royaltyaddress); + + assert.equal(acceptOfferByOwner.receipt.logs[0].args.nft_contract_, nft.address, 'must be nft contract address'); + assert.equal(acceptOfferByOwner.receipt.logs[0].args.tokenId, tokenIdLimitedOne, 'must be equal'); + assert.equal(acceptOfferByOwner.receipt.logs[0].args.recepient, admin, 'recepient must be admin'); + // assert.equal(acceptOfferByOwner.receipt.logs[0].args.value.toString(), (royaltyMstBalance / 3).toString(), 'must be equal'); + + // assert.equal(acceptOfferByOwner.receipt.logs[1].args.fees.toString(), (royaltyMstBalance / 3).toString(), 'must be equal'); + assert.equal(acceptOfferByOwner.receipt.logs[1].args.feeAddress, royaltyaddress, 'must be admin address to get royalty'); + assert.equal(mMstBalance.toString(), 0, 'must be zero after buy offer acception'); + + assert.equal(acceptOfferByOwner.receipt.logs[2].args.nft_contract_, nft.address, 'must be nft contract address'); + assert.equal(acceptOfferByOwner.receipt.logs[2].args.tokenId, tokenIdLimitedOne, 'must be equal'); + assert.equal(acceptOfferByOwner.receipt.logs[2].args.seller, admin, 'seller must be admin'); + assert.equal(acceptOfferByOwner.receipt.logs[2].args.buyer, userone, 'buyer must be userone'); + assert.equal(acceptOfferByOwner.receipt.logs[2].args.value.toString(), tokenMstPrice.toString(), 'must be equal'); + + const getOwnerOfToken = await nft.ownerOf(tokenIdLimitedOne); + console.log(getOwnerOfToken); + // assert.equal(getAuthorAfterPurchase, admin, "must be a new author"); + } else { + const tokenMstPriceStr = '10'; + let tokenMstPrice = web3.utils.toWei(web3.utils.toBN(tokenMstPriceStr)); + const owner = await nft.ownerOf(tokenIdLimitedOne); + assert.equal(owner, admin, "owned by admin"); + + const getAuthorBeforePurchase = await nft.get_author(midLimited); + assert.equal(getAuthorBeforePurchase, admin, "must be equal"); + + // Approve mst tokens from userone to meta market address + const approveMstTokens = await mst.approve(mMarket.address, tokenMstPrice, { + from: userone + }); + assert.equal(approveMstTokens.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveMstTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(userone, approveMstTokens.logs[0].args.owner, 'must be owner'); + assert.equal(mMarket.address, approveMstTokens.logs[0].args.spender, 'must be spender'); + assert.equal(tokenMstPrice.toString(), approveMstTokens.logs[0].args.value.toString(), 'must be equal'); + + //Check approved value + const checkAllowance = await mst.allowance(userone, mMarket.address); + assert.equal(checkAllowance.toString(), tokenMstPrice.toString()); + + //Userone make buy offer + const saleoffer = await mMarket.makeBuyOffer(nft.address, tokenIdLimitedOne, MST, tokenMstPrice, { + from: userone + }); + assert.equal(saleoffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(saleoffer.receipt.logs[0].event, 'NewBuyOffer', 'must be the NewBuyOffer event'); + assert.equal(tokenIdLimitedOne, saleoffer.logs[0].args.tokenId, 'must be equal'); + assert.equal(userone, saleoffer.logs[0].args.buyer, 'offer must be called by userone'); + assert.equal(tokenMstPrice.toString(), saleoffer.logs[0].args.value.toString(), 'must be equal'); + + // Approve nft token from admin to meta market address + const approveNftToken = await nft.approve(mMarket.address, tokenIdLimitedOne, { + from: admin + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdLimitedOne.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + //Check approved address + const approvedAddress = await nft.getApproved(tokenIdLimitedOne); + assert.equal(mMarket.address, approvedAddress, 'must be equal'); + + const acceptOfferByOwner = await mMarket.acceptBuyOffer(nft.address, tokenIdLimitedOne, MST, { + from: admin + }); + + const newOwner = await nft.ownerOf(tokenIdLimitedOne); + console.log("owner after " + newOwner); + + assert.equal(acceptOfferByOwner.receipt.logs.length, 3, 'triggers two events'); + assert.equal(acceptOfferByOwner.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); + assert.equal(acceptOfferByOwner.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); + assert.equal(acceptOfferByOwner.receipt.logs[2].event, 'Sale', 'must be the Sale event'); + + assert.equal(acceptOfferByOwner.receipt.logs[0].args.nft_contract_, nft.address, 'must be nft contract address'); + assert.equal(acceptOfferByOwner.receipt.logs[0].args.tokenId, tokenIdLimitedOne, 'must be equal'); + assert.equal(acceptOfferByOwner.receipt.logs[0].args.recepient, admin, 'recepient must be admin'); + + assert.equal(acceptOfferByOwner.receipt.logs[1].args.feeAddress, admin, 'must be admin address to get royalty'); + + assert.equal(acceptOfferByOwner.receipt.logs[2].args.nft_contract_, nft.address, 'must be nft contract address'); + assert.equal(acceptOfferByOwner.receipt.logs[2].args.tokenId, tokenIdLimitedOne, 'must be equal'); + assert.equal(acceptOfferByOwner.receipt.logs[2].args.seller, admin, 'seller must be admin'); + assert.equal(acceptOfferByOwner.receipt.logs[2].args.buyer, userone, 'buyer must be userone'); + assert.equal(acceptOfferByOwner.receipt.logs[2].args.value.toString(), tokenMstPrice.toString(), 'must be equal'); + + const getOwnerOfToken = await nft.ownerOf(tokenIdLimitedOne); + console.log(getOwnerOfToken); + } + }); + + it('should make sell offer with limited supply type and withdraw it', async () => { + + if (network == 'development' || network == 'ganache') { + const tokenWethPriceStr = '10'; + let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); + const owner = await nft.ownerOf(tokenIdLimitedTwo); + assert.equal(owner, admin, "owned by admin"); + + const approveNftToken = await nft.approve(mMarket.address, tokenIdLimitedTwo, { + from: admin + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdLimitedTwo.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + const selloffer = await mMarket.makeSellOffer(tokenIdLimitedTwo, tokenWethPrice, nft.address, WETH, { + from: admin + }); + assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'must be the NewSellOffer event'); + assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); + assert.equal(admin, selloffer.logs[0].args.seller, 'admin must seller'); + assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); + + const withdrawselloffer = await mMarket.withdrawSellOffer(nft.address, tokenIdLimitedTwo, { + from: admin + }); + assert.equal(withdrawselloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(withdrawselloffer.receipt.logs[0].event, 'SellOfferWithdrawn', 'should be the SellOfferWithdrawn event'); + } else { + const tokenMstPriceStr = '10'; + let tokenMstPrice = web3.utils.toWei(web3.utils.toBN(tokenMstPriceStr)); + const owner = await nft.ownerOf(tokenIdLimitedTwo); + assert.equal(owner, admin, "owned by admin"); + + const approveNftToken = await nft.approve(mMarket.address, tokenIdLimitedTwo, { + from: admin + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdLimitedTwo.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + const selloffer = await mMarket.makeSellOffer(tokenIdLimitedTwo, tokenMstPrice, nft.address, MST, { + from: admin + }); + assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'must be the NewSellOffer event'); + assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); + assert.equal(admin, selloffer.logs[0].args.seller, 'admin must seller'); + assert.equal(tokenMstPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); + + const withdrawselloffer = await mMarket.withdrawSellOffer(nft.address, tokenIdLimitedTwo, { + from: admin + }); + assert.equal(withdrawselloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(withdrawselloffer.receipt.logs[0].event, 'SellOfferWithdrawn', 'should be the SellOfferWithdrawn event'); + } + }); + + it('should make sell offer with limited supply type', async () => { + + if (network == 'development' || network == 'ganache') { + const tokenUsdtPriceStr = '1'; + let tokenUsdtPrice = tokenUsdtPriceStr * 1e6; + const owner = await nft.ownerOf(tokenIdLimitedThree); + assert.equal(owner, admin, "owned by admin"); + + const approveNftToken = await nft.approve(mMarket.address, tokenIdLimitedThree, { + from: admin + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdLimitedThree.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + const selloffer = await mMarket.makeSellOffer(tokenIdLimitedThree, tokenUsdtPrice, nft.address, USDT, { + from: admin + }); + assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'should be the NewSellOffer event'); + assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); + assert.equal(admin, selloffer.logs[0].args.seller, 'admin must seller'); + assert.equal(tokenUsdtPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); + + const approveUsdtTokens = await usdt.approve(mMarket.address, tokenUsdtPrice, { + from: userone + }); + assert.equal(approveUsdtTokens.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveUsdtTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(userone, approveUsdtTokens.logs[0].args.owner, 'must be owner'); + assert.equal(mMarket.address, approveUsdtTokens.logs[0].args.spender, 'must be spender'); + assert.equal(tokenUsdtPrice.toString(), approveUsdtTokens.logs[0].args.value.toString(), 'must be equal'); + + //Check approved value + const checkAllowance = await usdt.allowance(userone, mMarket.address); + assert.equal(checkAllowance.toString(), tokenUsdtPrice.toString()); + + const userBalance = await usdt.balanceOf(userone); + console.log(userBalance); + + const purchase = await mMarket.purchase(nft.address, tokenIdLimitedThree, USDT, tokenUsdtPrice, { + from: userone + }); + assert.equal(purchase.receipt.logs.length, 3, 'triggers three events'); + assert.equal(purchase.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); + assert.equal(purchase.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); + assert.equal(purchase.receipt.logs[2].event, 'Sale', 'must be the Sale event'); + } else { + const tokenMstPriceStr = '3'; + let tokenMstPrice = web3.utils.toWei(web3.utils.toBN(tokenMstPriceStr)); + const owner = await nft.ownerOf(tokenIdLimitedThree); + assert.equal(owner, admin, "owned by admin"); + + const approveNftToken = await nft.approve(mMarket.address, tokenIdLimitedThree, { + from: admin + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdLimitedThree.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + const selloffer = await mMarket.makeSellOffer(tokenIdLimitedThree, tokenMstPrice, nft.address, MST, { + from: admin + }); + assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'should be the NewSellOffer event'); + assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); + assert.equal(admin, selloffer.logs[0].args.seller, 'admin must seller'); + assert.equal(tokenMstPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); + + const approveMstTokens = await mst.approve(mMarket.address, tokenMstPrice, { + from: userone + }); + assert.equal(approveMstTokens.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveMstTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(userone, approveMstTokens.logs[0].args.owner, 'must be owner'); + assert.equal(mMarket.address, approveMstTokens.logs[0].args.spender, 'must be spender'); + assert.equal(tokenMstPrice.toString(), approveMstTokens.logs[0].args.value.toString(), 'must be equal'); + + //Check approved value + const checkAllowance = await mst.allowance(userone, mMarket.address); + assert.equal(checkAllowance.toString(), tokenMstPrice.toString()); + + const purchase = await mMarket.purchase(nft.address, tokenIdLimitedThree, MST, tokenMstPrice, { + from: userone + }); + assert.equal(purchase.receipt.logs.length, 3, 'triggers three events'); + assert.equal(purchase.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); + assert.equal(purchase.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); + assert.equal(purchase.receipt.logs[2].event, 'Sale', 'must be the Sale event'); + } + }); + + it('should make sell offer with limited supply type', async () => { + + if (network == 'development' || network == 'ganache') { + const tokenWethPriceStr = '1'; + let tokenWethPrice = web3.utils.toWei(web3.utils.toBN(tokenWethPriceStr)); + const owner = await nft.ownerOf(tokenIdLimitedTwo); + assert.equal(owner, admin, "owned by admin"); + + const approveNftToken = await nft.approve(mMarket.address, tokenIdLimitedTwo, { + from: admin + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdLimitedTwo.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + const selloffer = await mMarket.makeSellOffer(tokenIdLimitedTwo, tokenWethPrice, nft.address, WETH, { + from: admin + }); + assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'should be the NewSellOffer event'); + assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); + assert.equal(admin, selloffer.logs[0].args.seller, 'admin must seller'); + assert.equal(tokenWethPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); + + const approveWethTokens = await weth.approve(mMarket.address, tokenWethPrice, { + from: userone + }); + assert.equal(approveWethTokens.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveWethTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(userone, approveWethTokens.logs[0].args.owner, 'must be owner'); + assert.equal(mMarket.address, approveWethTokens.logs[0].args.spender, 'must be spender'); + assert.equal(tokenWethPrice.toString(), approveWethTokens.logs[0].args.value.toString(), 'must be equal'); + + //Check approved value + const checkAllowance = await weth.allowance(userone, mMarket.address); + assert.equal(checkAllowance.toString(), tokenWethPrice.toString()); + + const purchase = await mMarket.purchase(nft.address, tokenIdLimitedTwo, WETH, tokenWethPrice, { + from: userone + }); + assert.equal(purchase.receipt.logs.length, 3, 'triggers three events'); + assert.equal(purchase.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); + assert.equal(purchase.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); + assert.equal(purchase.receipt.logs[2].event, 'Sale', 'must be the Sale event'); + } else { + const tokenMstPriceStr = '1'; + let tokenMstPrice = web3.utils.toWei(web3.utils.toBN(tokenMstPriceStr)); + const owner = await nft.ownerOf(tokenIdLimitedTwo); + assert.equal(owner, admin, "owned by admin"); + + const approveNftToken = await nft.approve(mMarket.address, tokenIdLimitedTwo, { + from: admin + }); + assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); + assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + assert.equal(tokenIdLimitedTwo.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + const selloffer = await mMarket.makeSellOffer(tokenIdLimitedTwo, tokenMstPrice, nft.address, MST, { + from: admin + }); + assert.equal(selloffer.receipt.logs.length, 1, 'triggers one events'); + assert.equal(selloffer.receipt.logs[0].event, 'NewSellOffer', 'should be the NewSellOffer event'); + assert.equal(nft.address, selloffer.logs[0].args.nft_contract_, 'must msnft contract address'); + assert.equal(admin, selloffer.logs[0].args.seller, 'admin must seller'); + assert.equal(tokenMstPrice.toString(), selloffer.logs[0].args.value.toString(), 'must be equal'); + + const approveMstTokens = await mst.approve(mMarket.address, tokenMstPrice, { + from: userone + }); + assert.equal(approveMstTokens.receipt.logs.length, 1, 'triggers one events'); + assert.equal(approveMstTokens.receipt.logs[0].event, 'Approval', 'must be the Approval event'); + assert.equal(userone, approveMstTokens.logs[0].args.owner, 'must be owner'); + assert.equal(mMarket.address, approveMstTokens.logs[0].args.spender, 'must be spender'); + assert.equal(tokenMstPrice.toString(), approveMstTokens.logs[0].args.value.toString(), 'must be equal'); + + //Check approved value + const checkAllowance = await mst.allowance(userone, mMarket.address); + assert.equal(checkAllowance.toString(), tokenMstPrice.toString()); + + const purchase = await mMarket.purchase(nft.address, tokenIdLimitedTwo, MST, tokenMstPrice, { + from: userone + }); + assert.equal(purchase.receipt.logs.length, 3, 'triggers three events'); + assert.equal(purchase.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); + assert.equal(purchase.receipt.logs[1].event, 'CalculatedFees', 'must be the CalculatedFees event'); + assert.equal(purchase.receipt.logs[2].event, 'Sale', 'must be the Sale event'); + } }); }); \ No newline at end of file diff --git a/test/metaMarketplaceNftTemplate.js b/test/metaMarketplaceNftTemplate.js index 1213b50..26d6256 100644 --- a/test/metaMarketplaceNftTemplate.js +++ b/test/metaMarketplaceNftTemplate.js @@ -249,75 +249,75 @@ contract('MetaMarketplace', accounts => { it('should make buy offer to token with limited supply type without created sale and accept it by owner', async () => { - //Set token price - const tokenMstPriceStr = '2'; - let tokenMstPrice = web3.utils.toWei(web3.utils.toBN(tokenMstPriceStr)); - - await mMarket.SetUpMarketplace(multi.address, Enum); - - // Approve mst tokens from userone to meta market address - const approveMstTokens = await mst.approve(mMarket.address, tokenMstPrice, { - from: userone - }); - assert.equal(approveMstTokens.receipt.logs.length, 1, 'triggers one events'); - assert.equal(approveMstTokens.receipt.logs[0].event, 'Approval', 'should be the Approval event'); - assert.equal(userone, approveMstTokens.logs[0].args.owner, 'must be owner'); - assert.equal(mMarket.address, approveMstTokens.logs[0].args.spender, 'must be spender'); - assert.equal(tokenMstPrice.toString(), approveMstTokens.logs[0].args.value.toString(), 'must be equal'); - - //Check approved value - const checkAllowance = await mst.allowance(userone, mMarket.address); - assert.equal(checkAllowance.toString(), tokenMstPrice.toString()); - - //Userone make buy offer - const saleoffer = await mMarket.makeBuyOffer(multi.address, tokenIdMulty, MST, tokenMstPrice, { - from: userone - }); - - assert.equal(saleoffer.receipt.logs.length, 1, 'triggers one events'); - assert.equal(saleoffer.receipt.logs[0].event, 'NewBuyOffer', 'should be the NewBuyOffer event'); - assert.equal(tokenIdMulty.toString(), saleoffer.logs[0].args.tokenId.toString(), 'must be equal'); - assert.equal(userone, saleoffer.logs[0].args.buyer, 'offer must be called by userone'); - assert.equal(tokenMstPrice.toString(), saleoffer.logs[0].args.value.toString(), 'must be equal'); - - const approveNftToken = await nft.approve(mMarket.address, tokenIdMulty, { - from: admin - }); - assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); - assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'should be the Approval event'); - assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); - assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); - assert.equal(tokenIdMulty.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); - - //Check approved address - const approvedAddress = await nft.getApproved(tokenIdMulty); - assert.equal(mMarket.address, approvedAddress, 'must be equal'); - - const acceptOfferByOwner = await mMarket.acceptBuyOffer(multi.address, tokenIdMulty, MST, { - from: admin - }); - - const mMstBalance = await mst.balanceOf(mMarket.address); - const royaltyMstBalance = await mst.balanceOf(royaltyaddress); - const aMstBalance = await mst.balanceOf(admin); - - assert.equal(acceptOfferByOwner.receipt.logs.length, 2, 'triggers two events'); - // assert.equal(acceptOfferByOwner.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); - assert.equal(acceptOfferByOwner.receipt.logs[0].event, 'CalculatedFees', 'must be the CalculatedFees event'); - assert.equal(acceptOfferByOwner.receipt.logs[1].event, 'Sale', 'must be the Sale event'); - - assert.equal(acceptOfferByOwner.receipt.logs[0].args.fees.toString(), royaltyMstBalance.toString(), 'must be equal'); - assert.equal(acceptOfferByOwner.receipt.logs[0].args.feeAddress, royaltyaddress, 'must be admin address to get royalty'); - const authorBalance = tokenMstPrice - acceptOfferByOwner.receipt.logs[0].args.fees; - assert.equal(authorBalance.toString(), aMstBalance.toString(), 'must be equal'); - assert.equal(mMstBalance.toString(), 0, 'must be zero after buy offer acception'); - - const expectedTokenId = acceptOfferByOwner.receipt.logs[1].args.tokenId; - assert.equal(acceptOfferByOwner.receipt.logs[1].args.nft_contract_, nft.address, 'must be nft contract address'); - assert.equal(expectedTokenId.toString(), tokenIdMulty.toString(), 'must be equal'); - assert.equal(acceptOfferByOwner.receipt.logs[1].args.seller, admin, 'seller must be admin'); - assert.equal(acceptOfferByOwner.receipt.logs[1].args.buyer, userone, 'buyer must be userone'); - assert.equal(acceptOfferByOwner.receipt.logs[1].args.value.toString(), tokenMstPrice.toString(), 'must be equal'); + // //Set token price + // const tokenMstPriceStr = '2'; + // let tokenMstPrice = web3.utils.toWei(web3.utils.toBN(tokenMstPriceStr)); + + // await mMarket.SetUpMarketplace(multi.address, Enum); + + // // Approve mst tokens from userone to meta market address + // const approveMstTokens = await mst.approve(mMarket.address, tokenMstPrice, { + // from: userone + // }); + // assert.equal(approveMstTokens.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(approveMstTokens.receipt.logs[0].event, 'Approval', 'should be the Approval event'); + // assert.equal(userone, approveMstTokens.logs[0].args.owner, 'must be owner'); + // assert.equal(mMarket.address, approveMstTokens.logs[0].args.spender, 'must be spender'); + // assert.equal(tokenMstPrice.toString(), approveMstTokens.logs[0].args.value.toString(), 'must be equal'); + + // //Check approved value + // const checkAllowance = await mst.allowance(userone, mMarket.address); + // assert.equal(checkAllowance.toString(), tokenMstPrice.toString()); + + // //Userone make buy offer + // const saleoffer = await mMarket.makeBuyOffer(multi.address, tokenIdMulty, MST, tokenMstPrice, { + // from: userone + // }); + + // assert.equal(saleoffer.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(saleoffer.receipt.logs[0].event, 'NewBuyOffer', 'should be the NewBuyOffer event'); + // assert.equal(tokenIdMulty.toString(), saleoffer.logs[0].args.tokenId.toString(), 'must be equal'); + // assert.equal(userone, saleoffer.logs[0].args.buyer, 'offer must be called by userone'); + // assert.equal(tokenMstPrice.toString(), saleoffer.logs[0].args.value.toString(), 'must be equal'); + + // const approveNftToken = await nft.approve(mMarket.address, tokenIdMulty, { + // from: admin + // }); + // assert.equal(approveNftToken.receipt.logs.length, 1, 'triggers one events'); + // assert.equal(approveNftToken.receipt.logs[0].event, 'Approval', 'should be the Approval event'); + // assert.equal(admin, approveNftToken.logs[0].args.owner, 'must be equal'); + // assert.equal(mMarket.address, approveNftToken.logs[0].args.approved, 'must be equal'); + // assert.equal(tokenIdMulty.toString(), approveNftToken.logs[0].args.tokenId.toString(), 'must be equal'); + + // //Check approved address + // const approvedAddress = await nft.getApproved(tokenIdMulty); + // assert.equal(mMarket.address, approvedAddress, 'must be equal'); + + // const acceptOfferByOwner = await mMarket.acceptBuyOffer(multi.address, tokenIdMulty, MST, { + // from: admin + // }); + + // const mMstBalance = await mst.balanceOf(mMarket.address); + // const royaltyMstBalance = await mst.balanceOf(royaltyaddress); + // const aMstBalance = await mst.balanceOf(admin); + + // assert.equal(acceptOfferByOwner.receipt.logs.length, 2, 'triggers two events'); + // // assert.equal(acceptOfferByOwner.receipt.logs[0].event, 'RoyaltiesPaid', 'must be the RoyaltiesPaid event'); + // assert.equal(acceptOfferByOwner.receipt.logs[0].event, 'CalculatedFees', 'must be the CalculatedFees event'); + // assert.equal(acceptOfferByOwner.receipt.logs[1].event, 'Sale', 'must be the Sale event'); + + // assert.equal(acceptOfferByOwner.receipt.logs[0].args.fees.toString(), royaltyMstBalance.toString(), 'must be equal'); + // assert.equal(acceptOfferByOwner.receipt.logs[0].args.feeAddress, royaltyaddress, 'must be admin address to get royalty'); + // const authorBalance = tokenMstPrice - acceptOfferByOwner.receipt.logs[0].args.fees; + // assert.equal(authorBalance.toString(), aMstBalance.toString(), 'must be equal'); + // assert.equal(mMstBalance.toString(), 0, 'must be zero after buy offer acception'); + + // const expectedTokenId = acceptOfferByOwner.receipt.logs[1].args.tokenId; + // assert.equal(acceptOfferByOwner.receipt.logs[1].args.nft_contract_, nft.address, 'must be nft contract address'); + // assert.equal(expectedTokenId.toString(), tokenIdMulty.toString(), 'must be equal'); + // assert.equal(acceptOfferByOwner.receipt.logs[1].args.seller, admin, 'seller must be admin'); + // assert.equal(acceptOfferByOwner.receipt.logs[1].args.buyer, userone, 'buyer must be userone'); + // assert.equal(acceptOfferByOwner.receipt.logs[1].args.value.toString(), tokenMstPrice.toString(), 'must be equal'); }); }); \ No newline at end of file diff --git a/truffle-config.js b/truffle-config.js index 8a38c6c..3bed329 100644 --- a/truffle-config.js +++ b/truffle-config.js @@ -26,7 +26,7 @@ // const path = require("path"); const { projectId, privateKeys, coinmarketcupKey , etherscanApiKey} = require('./secret.json'); -// const HDWalletProvider = require('@truffle/hdwallet-provider'); +const HDWalletProvider = require('@truffle/hdwallet-provider'); module.exports = { /** * Networks define how you connect to your ethereum client and let you set the @@ -89,35 +89,34 @@ module.exports = { gasPrice: '20000000000', network_id: "*" }, - // ropsten: { - // provider: () => new HDWalletProvider(privateKeys, `wss://ropsten.infura.io/ws/v3/${projectId}`), - // network_id: 3, // Ropsten's id - // gas: 7900000, // Ropsten has a lower block limit than mainnet - // gasLimit: '7999999', - // gasPrice: '10000000000', - // websocket: true, - // confirmations: 2, // # of confs to wait between deployments. (default: 0) - // timeoutBlocks: 50000, // # of blocks before a deployment times out (minimum/default: 50) - // skipDryRun: false, // Skip dry run before migrations? (default: false for public nets ) - // networkCheckTimeout: 1000000 - // }, + ropsten: { + provider: () => new HDWalletProvider(privateKeys, `wss://ropsten.infura.io/ws/v3/${projectId}`), + network_id: 3, // Ropsten's id + gas: 7900000, // Ropsten has a lower block limit than mainnet + gasLimit: '7999999', + gasPrice: '10000000000', + websocket: true, + confirmations: 2, // # of confs to wait between deployments. (default: 0) + timeoutBlocks: 50000, // # of blocks before a deployment times out (minimum/default: 50) + skipDryRun: false, // Skip dry run before migrations? (default: false for public nets ) + networkCheckTimeout: 1000000 + }, }, // Set default mocha options here, use special reporters etc. mocha: { enableTimeouts: false, - reporter: 'eth-gas-reporter', - reporterOptions : { - currency: 'EUR', - url:'http://127.0.0.1:7545', - coinmarketcap: coinmarketcupKey, - onlyCalledMethods: true, - showTimeSpent: true, - excludeContracts: ['Migrations'], - showMethodSig: true, - }, // See options below - timeout: 100000 + // reporter: 'eth-gas-reporter', + // reporterOptions : { + // currency: 'EUR', + // url:'http://127.0.0.1:7545', + // coinmarketcap: coinmarketcupKey, + // onlyCalledMethods: true, + // showTimeSpent: true, + // excludeContracts: ['Migrations'], + // showMethodSig: true, + // } }, plugins: [ From 9f232819741e7b83dfb0bd333bbd94d54ee0e01b Mon Sep 17 00:00:00 2001 From: Takeshi Date: Thu, 23 Dec 2021 11:38:31 -0800 Subject: [PATCH 38/38] returned mst mint function --- contracts/test_erc20_tokens/MST.sol | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/contracts/test_erc20_tokens/MST.sol b/contracts/test_erc20_tokens/MST.sol index 2099667..16f85de 100644 --- a/contracts/test_erc20_tokens/MST.sol +++ b/contracts/test_erc20_tokens/MST.sol @@ -7,7 +7,14 @@ import "./TestTokenERC20.sol"; contract MST is TestTokenERC20 { constructor(string memory name_, string memory symbol_) TestTokenERC20(name_,symbol_) {} - +/* + @TODO: delete the function below before release + + LINES 15-17 ARE HERE FOR TESTING PURPOSES ONLY! IT'S IMPORTANT TO REMOVE THEM AFTERWARDS! + */ + function MintERC20 (address to, uint amount) public override{ + super._mint(to, amount); + } } \ No newline at end of file