From 3a5f5eee208a72a72b1e181027db2613823f3d21 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Wed, 20 Jan 2021 18:44:59 +0200 Subject: [PATCH 001/118] removed unfinished contracts --- deploy/elasticModule.js | 14 - deploy/informationalVote.js | 47 -- deploy/initialDeployment.js | 10 +- deploy/registrator.js | 14 - deploy/transactionalVote.js | 47 -- src/core/ElasticDAO.sol | 10 - src/models/Ecosystem.sol | 16 - src/models/ElasticModule.sol | 72 --- src/modules/InformationalVote/Factory.sol | 35 -- src/modules/InformationalVote/Manager.sol | 305 ---------- .../InformationalVote/models/Ballot.sol | 96 --- .../InformationalVote/models/Settings.sol | 133 ----- src/modules/InformationalVote/models/Vote.sol | 228 ------- src/modules/TransactionalVote/Factory.sol | 38 -- src/modules/TransactionalVote/Manager.sol | 564 ------------------ src/modules/TransactionalVote/Operation.sol | 5 - .../TransactionalVote/models/Ballot.sol | 96 --- .../TransactionalVote/models/Settings.sol | 133 ----- src/modules/TransactionalVote/models/Vote.sol | 273 --------- src/services/Configurator.sol | 2 - src/services/Registrator.sol | 24 - test/env.js | 31 - test/informationalVoteModuleTests.js | 243 -------- 23 files changed, 2 insertions(+), 2434 deletions(-) delete mode 100644 deploy/elasticModule.js delete mode 100644 deploy/informationalVote.js delete mode 100644 deploy/registrator.js delete mode 100644 deploy/transactionalVote.js delete mode 100644 src/models/ElasticModule.sol delete mode 100644 src/modules/InformationalVote/Factory.sol delete mode 100644 src/modules/InformationalVote/Manager.sol delete mode 100644 src/modules/InformationalVote/models/Ballot.sol delete mode 100644 src/modules/InformationalVote/models/Settings.sol delete mode 100644 src/modules/InformationalVote/models/Vote.sol delete mode 100644 src/modules/TransactionalVote/Factory.sol delete mode 100644 src/modules/TransactionalVote/Manager.sol delete mode 100644 src/modules/TransactionalVote/Operation.sol delete mode 100644 src/modules/TransactionalVote/models/Ballot.sol delete mode 100644 src/modules/TransactionalVote/models/Settings.sol delete mode 100644 src/modules/TransactionalVote/models/Vote.sol delete mode 100644 src/services/Registrator.sol delete mode 100644 test/informationalVoteModuleTests.js diff --git a/deploy/elasticModule.js b/deploy/elasticModule.js deleted file mode 100644 index 7e52d12..0000000 --- a/deploy/elasticModule.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = async ({ getNamedAccounts, deployments }) => { - const { deploy, log } = deployments; - const { agent } = await getNamedAccounts(); - - const elasticModule = await deploy('ElasticModule', { - from: agent, - args: [], - }); - - if (elasticModule.newlyDeployed) { - log(`##### ElasticDAO: Elastic Module Model has been deployed: ${elasticModule.address}`); - } -}; -module.exports.tags = ['ElasticModule']; diff --git a/deploy/informationalVote.js b/deploy/informationalVote.js deleted file mode 100644 index 0a9a4bf..0000000 --- a/deploy/informationalVote.js +++ /dev/null @@ -1,47 +0,0 @@ -module.exports = async ({ getNamedAccounts, deployments }) => { - const { deploy, log } = deployments; - const { agent } = await getNamedAccounts(); - - const informationalVoteBallot = await deploy('InformationalVoteBallot', { - from: agent, - args: [], - }); - - const informationalVoteSettings = await deploy('InformationalVoteSettings', { - from: agent, - args: [], - }); - - const informationalVoteVote = await deploy('InformationalVote', { - from: agent, - args: [], - }); - - const informationalVoteFactory = await deploy('InformationalVoteFactory', { - from: agent, - args: [], - }); - - if (informationalVoteBallot.newlyDeployed) { - log( - `##### ElasticDAO: InformationalVoteBallot has been deployed: ${informationalVoteBallot.address}`, - ); - } - - if (informationalVoteSettings.newlyDeployed) { - log( - `##### ElasticDAO: InformationalVoteSettings has been deployed: ${informationalVoteSettings.address}`, - ); - } - - if (informationalVoteVote.newlyDeployed) { - log(`##### ElasticDAO: InformationalVote has been deployed: ${informationalVoteVote.address}`); - } - - if (informationalVoteFactory.newlyDeployed) { - log( - `##### ElasticDAO: InformationalVoteFactory has been deployed: ${informationalVoteFactory.address}`, - ); - } -}; -module.exports.tags = ['InformationalVote']; diff --git a/deploy/initialDeployment.js b/deploy/initialDeployment.js index 82eeb77..ac0fc28 100644 --- a/deploy/initialDeployment.js +++ b/deploy/initialDeployment.js @@ -15,8 +15,6 @@ module.exports = async ({ getNamedAccounts, deployments }) => { Ecosystem.abi, hre.provider.getSigner(agent), ); - const ElasticModule = await deployments.get('ElasticModule'); - const Registrator = await deployments.get('Registrator'); const Token = await deployments.get('Token'); const TokenHolder = await deployments.get('TokenHolder'); @@ -27,16 +25,16 @@ module.exports = async ({ getNamedAccounts, deployments }) => { BalanceMultipliers.address, Dao.address, Ecosystem.address, - ElasticModule.address, TokenHolder.address, Token.address, // Services Configurator.address, - Registrator.address, // Tokens ethers.constants.AddressZero, ]; + console.log('Ecosystem', ecosystemStructArray); + await ecosystemStorage.functions.serialize(ecosystemStructArray); log('##### ElasticDAO: Initialization Complete'); @@ -49,10 +47,6 @@ module.exports.dependencies = [ 'DAO', 'Ecosystem', 'ElasticDAOFactory', - 'ElasticModule', - 'InformationalVote', - 'TransactionalVote', - 'Registrator', 'Token', 'TokenHolder', ]; diff --git a/deploy/registrator.js b/deploy/registrator.js deleted file mode 100644 index 20a435c..0000000 --- a/deploy/registrator.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = async ({ getNamedAccounts, deployments }) => { - const { deploy, log } = deployments; - const { agent } = await getNamedAccounts(); - - const registrator = await deploy('Registrator', { - from: agent, - args: [], - }); - - if (registrator.newlyDeployed) { - log(`##### ElasticDAO: Registrator has been deployed: ${registrator.address}`); - } -}; -module.exports.tags = ['Registrator']; diff --git a/deploy/transactionalVote.js b/deploy/transactionalVote.js deleted file mode 100644 index 3dfe7e6..0000000 --- a/deploy/transactionalVote.js +++ /dev/null @@ -1,47 +0,0 @@ -module.exports = async ({ getNamedAccounts, deployments }) => { - const { deploy, log } = deployments; - const { agent } = await getNamedAccounts(); - - const transactionalBallot = await deploy('TransactionalVoteBallot', { - from: agent, - args: [], - }); - - const transactionalSettings = await deploy('TransactionalVoteSettings', { - from: agent, - args: [], - }); - - const transactionalVote = await deploy('TransactionalVote', { - from: agent, - args: [], - }); - - const transactionalFactory = await deploy('TransactionalVoteFactory', { - from: agent, - args: [], - }); - - if (transactionalBallot.newlyDeployed) { - log( - `##### ElasticDAO: TransactionalVoteBallot has been deployed: ${transactionalBallot.address}`, - ); - } - - if (transactionalSettings.newlyDeployed) { - log( - `##### ElasticDAO: TransactionalVoteSettings has been deployed: ${transactionalSettings.address}`, - ); - } - - if (transactionalVote.newlyDeployed) { - log(`##### ElasticDAO: TransactionalVote has been deployed: ${transactionalVote.address}`); - } - - if (transactionalFactory.newlyDeployed) { - log( - `##### ElasticDAO: TransactionalVoteFactory has been deployed: ${transactionalFactory.address}`, - ); - } -}; -module.exports.tags = ['TransactionalVote']; diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index 9426f21..d1218cf 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -10,7 +10,6 @@ import '../models/Ecosystem.sol'; import '../models/Token.sol'; import '../services/Configurator.sol'; -import '../services/Registrator.sol'; contract ElasticDAO { address internal ecosystemModelAddress; @@ -101,15 +100,6 @@ contract ElasticDAO { emit ElasticGovernanceTokenDeployed(token.uuid); } - function initializeModule(address _moduleAddress, string memory _name) - external - // onlySummoners - TODO: Replace this with a permission - { - Ecosystem.Instance memory ecosystem = _getEcosystem(); - Registrator registrator = Registrator(ecosystem.registratorAddress); - registrator.registerModule(_moduleAddress, _name, ecosystem); - } - function join(uint256 _deltaLambda) public payable onlyAfterSummoning { Token.Instance memory token = _getToken(); diff --git a/src/models/Ecosystem.sol b/src/models/Ecosystem.sol index 6492091..ef1e83c 100644 --- a/src/models/Ecosystem.sol +++ b/src/models/Ecosystem.sol @@ -18,12 +18,10 @@ contract Ecosystem is EternalModel { address balanceMultipliersModelAddress; address daoModelAddress; address ecosystemModelAddress; - address elasticModuleModelAddress; address tokenHolderModelAddress; address tokenModelAddress; // Services address configuratorAddress; - address registratorAddress; // Tokens address governanceTokenAddress; } @@ -49,15 +47,9 @@ contract Ecosystem is EternalModel { keccak256(abi.encode(record.daoAddress, 'daoModelAddress')) ); record.ecosystemModelAddress = address(this); - record.elasticModuleModelAddress = getAddress( - keccak256(abi.encode(record.daoAddress, 'elasticModuleModelAddress')) - ); record.governanceTokenAddress = getAddress( keccak256(abi.encode(record.daoAddress, 'governanceTokenAddress')) ); - record.registratorAddress = getAddress( - keccak256(abi.encode(record.daoAddress, 'registratorAddress')) - ); record.tokenHolderModelAddress = getAddress( keccak256(abi.encode(record.daoAddress, 'tokenHolderModelAddress')) ); @@ -96,18 +88,10 @@ contract Ecosystem is EternalModel { record.configuratorAddress ); setAddress(keccak256(abi.encode(record.daoAddress, 'daoModelAddress')), record.daoModelAddress); - setAddress( - keccak256(abi.encode(record.daoAddress, 'elasticModuleModelAddress')), - record.elasticModuleModelAddress - ); setAddress( keccak256(abi.encode(record.daoAddress, 'governanceTokenAddress')), record.governanceTokenAddress ); - setAddress( - keccak256(abi.encode(record.daoAddress, 'registratorAddress')), - record.registratorAddress - ); setAddress( keccak256(abi.encode(record.daoAddress, 'tokenHolderModelAddress')), record.tokenHolderModelAddress diff --git a/src/models/ElasticModule.sol b/src/models/ElasticModule.sol deleted file mode 100644 index 58703b1..0000000 --- a/src/models/ElasticModule.sol +++ /dev/null @@ -1,72 +0,0 @@ -// SPDX-License-Identifier: GPLv3 -pragma solidity 0.7.2; -pragma experimental ABIEncoderV2; - -import './DAO.sol'; -import './EternalModel.sol'; -import '../libraries/SafeMath.sol'; - -/// @author ElasticDAO - https://ElasticDAO.org -/// @notice This contract is used for storing token data -/// @dev ElasticDAO network contracts can read/write from this contract -/// Serialize -> Translation of data from the concerned struct to key-value pairs -/// Deserialize -> Translation of data from the key-value pairs to a struct -contract ElasticModule is EternalModel { - struct Instance { - address uuid; - string name; - DAO.Instance dao; - Ecosystem.Instance ecosystem; - } - - function deserialize(address _uuid, DAO.Instance memory _dao) - external - view - returns (Instance memory record) - { - record.uuid = _uuid; - record.dao = _dao; - record.name = getString(keccak256(abi.encode(record.dao.uuid, record.uuid))); - - return record; - } - - function deserializeByName(string memory _name, DAO.Instance memory _dao) - external - view - returns (Instance memory record) - { - record.uuid = getAddress(keccak256(abi.encode(_dao.uuid, _name))); - record.dao = _dao; - record.name = _name; - - return record; - } - - function exists(address _uuid, DAO.Instance memory _dao) - external - view - returns (bool recordExists) - { - return _exists(_uuid, _dao); - } - - /** - * @dev serializes Instance struct - * @param record Instance - */ - function serialize(Instance memory record) external { - setAddress(keccak256(abi.encode(record.dao.uuid, record.name)), record.uuid); - setString(keccak256(abi.encode(record.dao.uuid, record.uuid)), record.name); - - setBool(keccak256(abi.encode(record.dao.uuid, record.uuid, 'exists')), true); - } - - function _exists(address _uuid, DAO.Instance memory _dao) - internal - view - returns (bool recordExists) - { - return getBool(keccak256(abi.encode(_dao.uuid, _uuid, 'exists'))); - } -} diff --git a/src/modules/InformationalVote/Factory.sol b/src/modules/InformationalVote/Factory.sol deleted file mode 100644 index aee2b0a..0000000 --- a/src/modules/InformationalVote/Factory.sol +++ /dev/null @@ -1,35 +0,0 @@ -// SPDX-License-Identifier: GPLv3 -pragma solidity 0.7.2; -pragma experimental ABIEncoderV2; - -import '../../core/ElasticDAO.sol'; -import './Manager.sol'; - -contract InformationalVoteFactory { - event ManagerDeployed(address indexed managerAddress); - - function deployManager( - address _ballotModelAddress, - address payable _elasticDAOAddress, - address _settingsModelAddress, - address _voteModelAddress, - address _votingTokenAddress, - bool _hasPenalty, - uint256[10] memory _settings - ) external { - // creates the manager of the informationalVote Module - InformationalVoteManager manager = new InformationalVoteManager( - _ballotModelAddress, - _settingsModelAddress, - _voteModelAddress - ); - - // initializes the informationalVoteModule via the manager - manager.initialize(_votingTokenAddress, _hasPenalty, _settings); - - // register the module in ElasticDAO - ElasticDAO elasticDAO = ElasticDAO(_elasticDAOAddress); - elasticDAO.initializeModule(address(manager), 'InformationalVoteModule'); - emit ManagerDeployed(address(manager)); - } -} diff --git a/src/modules/InformationalVote/Manager.sol b/src/modules/InformationalVote/Manager.sol deleted file mode 100644 index 4c41a17..0000000 --- a/src/modules/InformationalVote/Manager.sol +++ /dev/null @@ -1,305 +0,0 @@ -// SPDX-License-Identifier: GPLv3 -pragma solidity 0.7.2; -pragma experimental ABIEncoderV2; - -import './models/Ballot.sol'; -import './models/Settings.sol'; -import './models/Vote.sol'; - -import '../../interfaces/IElasticToken.sol'; -import '../../libraries/ElasticMath.sol'; - -/// @author ElasticDAO - https://ElasticDAO.org -/// @notice This contract is used for interacting with informational votes -/// @dev ElasticDAO network contracts can read/write from this contract -contract InformationalVoteManager { - address public ballotModelAddress; - address public settingsModelAddress; - address public voteModelAddress; - bool public initialized; - - event CreateVote(uint256 index); - - constructor( - address _ballotModelAddress, - address _settingsModelAddress, - address _voteModelAddress - ) { - ballotModelAddress = _ballotModelAddress; - initialized = false; - settingsModelAddress = _settingsModelAddress; - voteModelAddress = _voteModelAddress; - } - - /** - * @dev Initializes the InformationalVote Manager - * @param _votingTokenAddress - the address of the voting Token - * @param _hasPenalty - whether the vote has a penalty or not - * @param _settings - an array of all the vote related settings - */ - function initialize( - address _votingTokenAddress, - bool _hasPenalty, - uint256[10] memory _settings - ) external { - require(initialized == false, 'ElasticDAO: Informational Vote Manager already initialized.'); - InformationalVoteSettings settingsContract = InformationalVoteSettings(settingsModelAddress); - InformationalVoteSettings.Instance memory settings; - settings.managerAddress = address(this); - settings.votingTokenAddress = _votingTokenAddress; - settings.hasPenalty = _hasPenalty; - settings.approval = _settings[0]; - settings.counter = 0; - settings.maxSharesPerTokenHolder = _settings[1]; - settings.minBlocksForPenalty = _settings[2]; - settings.minDurationInBlocks = _settings[3]; - settings.minPenaltyInShares = _settings[4]; - settings.minRewardInShares = _settings[5]; - settings.minSharesToCreate = _settings[6]; - settings.penalty = _settings[7]; - settings.quorum = _settings[8]; - settings.reward = _settings[9]; - settingsContract.serialize(settings); - initialized = true; - } - - /** - * @dev Applies penalties to @param _addressesToPenalize - * @param _index - ID of the specific vote - * @param _addressesToPenalize - An array of all the addresses to be penalized - * - * The function does the following checks: - * Whether the @param _index is a valid vote ID - * Whether the vote has already passed or not - * Whether the vote is currently active - * Whether the vote has reached quoroum or not - * Whether the InformationalVote has a penalty or not - * - * Penalization - - * VotePenalty - The penalty on the vote - * balanceOfInShares - The amount of shares owned by a specific address - * DeltaLambda - The change in the number of shares - * Delatalambda = balanceOfInShares * VotePenalty - * - * Summary of penalization - Delatalambda is calculated, and those many shares are burnt - * for the specific account - * - * Summary: If the vote has a valid ID, isApproved, isActive, has NOT reached quoroum, - * has a penalty on it then the @param _addressesToPenalize are penalized - * - */ - function applyPenalty(uint256 _index, address[] memory _addressesToPenalize) external { - InformationalVoteSettings.Instance memory settings = _getSettings(); - require(_voteExists(_index, settings), 'ElasticDAO: Invalid vote id.'); - InformationalVote.Instance memory vote = _getVote(_index, settings); - require(vote.isApproved == false, 'ElasticDAO: Cannot penalize a vote that passed.'); - require(vote.isActive == false, 'ElasticDAO: Cannot penalize an active vote.'); - require( - vote.hasReachedQuorum == false, - 'ElasticDAO: Cannot penalize a vote that has reached quorum.' - ); - require(vote.hasPenalty, 'ElasticDAO: This vote has no penalty.'); - InformationalVoteBallot ballotContract = InformationalVoteBallot(ballotModelAddress); - IElasticToken tokenContract = IElasticToken(vote.votingTokenAddress); - - for (uint256 i = 0; i < _addressesToPenalize.length; i = SafeMath.add(i, 1)) { - if (ballotContract.exists(_addressesToPenalize[i], settings, vote) == false) { - InformationalVoteBallot.Instance memory ballot; - ballot.voter = _addressesToPenalize[i]; - ballot.settings = settings; - ballot.vote = vote; - ballot.wasPenalized = true; - uint256 deltaLambda = ElasticMath.wmul( - tokenContract.balanceOfInShares(_addressesToPenalize[i]), - vote.penalty - ); - ballot.lambda = deltaLambda; - ballotContract.serialize(ballot); - tokenContract.burnShares(_addressesToPenalize[i], deltaLambda); - } - } - } - - /** - * @dev casts the vote ballot - * @param _index - the ID of the vote - * @param _yna - YesNoAbstain value - 0 for Yes, 1 for No, 2 for abstain - * votingLambda - The current number of shares the voter has - * lambdaAtStartingBlock - the number of shares the voter has on vote creation - * - * Essentially, by comparing lambdaAtStartingBlock and votingLambda, - * a voter is only allowed to vote with the number of shares they had when the vote was created, - * and if the number of shares exceeds the maximum number of shares per token holder, - * voter can only vote with the maximum number of shares per token holder, - */ - function castBallot(uint256 _index, uint256 _yna) external { - InformationalVoteSettings.Instance memory settings = _getSettings(); - require(_voteExists(_index, settings), 'ElasticDAO: Invalid vote id.'); - InformationalVote.Instance memory vote = _getVote(_index, settings); - require(vote.isActive, 'ElasticDAO: InformationalVote is not active or has ended.'); - require(_voteNotExpired(vote), 'ElasticDAO: InformationalVote is not active or has ended.'); - require(_yna < 3, 'ElasticDAO: Invalid _yna value. Use 0 for yes, 1 for no, 2 for abstain.'); - IElasticToken tokenContract = IElasticToken(vote.votingTokenAddress); - - uint256 votingLambda = tokenContract.balanceOfInShares(msg.sender); - uint256 lambdaAtStartingBlock = tokenContract.balanceOfInSharesAt( - msg.sender, - vote.startOnBlock - ); - if (lambdaAtStartingBlock < votingLambda) { - votingLambda = lambdaAtStartingBlock; - } - if (vote.maxSharesPerTokenHolder < votingLambda) { - votingLambda = vote.maxSharesPerTokenHolder; - } - - InformationalVoteBallot.Instance memory existingBallot = InformationalVoteBallot( - ballotModelAddress - ) - .deserialize(msg.sender, settings, vote); - - if (existingBallot.lambda > 0) { - if (existingBallot.yna == 0) { - vote.yesLambda = SafeMath.sub(vote.yesLambda, existingBallot.lambda); - } else if (existingBallot.yna == 1) { - vote.noLambda = SafeMath.sub(vote.noLambda, existingBallot.lambda); - } else { - vote.abstainLambda = SafeMath.sub(vote.abstainLambda, existingBallot.lambda); - } - } - - if (_yna == 0) { - vote.yesLambda = SafeMath.add(vote.yesLambda, votingLambda); - } else if (_yna == 1) { - vote.noLambda = SafeMath.add(vote.noLambda, votingLambda); - } else { - vote.abstainLambda = SafeMath.add(vote.abstainLambda, votingLambda); - } - - uint256 lambda = SafeMath.add(SafeMath.add(vote.yesLambda, vote.noLambda), vote.abstainLambda); - vote.isApproved = false; - if (lambda >= vote.quorumLambda) { - vote.hasReachedQuorum = true; - - if (vote.yesLambda >= vote.approvalLambda) { - vote.isApproved = true; - } - } - - InformationalVoteBallot.Instance memory ballot; - ballot.lambda = votingLambda; - ballot.settings = settings; - ballot.vote = vote; - ballot.voter = msg.sender; - ballot.yna = _yna; - - InformationalVoteBallot(ballotModelAddress).serialize(ballot); - InformationalVote(voteModelAddress).serialize(vote); - - if (existingBallot.lambda == 0) { - tokenContract.mintShares(msg.sender, ElasticMath.wmul(votingLambda, vote.reward)); - } - } - - /** - * @dev Creates the vote - * @param _proposal - the vote proposal - * @param _endOnBlock - the block on which the vote ends - * - * The vote manager should be initialized prior to creating the vote - * The vote creator must have the minimum number of votes required to create a vote - * The vote duration cannot be lesser than the minimum duration of a vote - * - * @return uint256 - the InformationalVote ID - */ - function createVote(string memory _proposal, uint256 _endOnBlock) external returns (uint256) { - require(initialized, 'ElasticDAO: InformationalVote Manager not initialized'); - InformationalVoteSettings.Instance memory settings = _getSettings(); - IElasticToken tokenContract = IElasticToken(settings.votingTokenAddress); - require( - tokenContract.balanceOfInShares(msg.sender) >= settings.minSharesToCreate, - 'ElasticDAO: Not enough shares to create vote' - ); - require( - SafeMath.sub(_endOnBlock, block.number) >= settings.minDurationInBlocks, - 'ElasticDAO: InformationalVote period too short' - ); - - InformationalVote voteContract = InformationalVote(voteModelAddress); - InformationalVote.Instance memory vote; - vote.settings = settings; - vote.author = msg.sender; - vote.hasPenalty = settings.hasPenalty; - vote.hasReachedQuorum = false; - vote.isActive = true; - vote.isApproved = false; - vote.proposal = _proposal; - vote.abstainLambda = 0; - vote.approval = 0; - vote.endOnBlock = _endOnBlock; - vote.index = settings.counter; - vote.maxSharesPerTokenHolder = settings.maxSharesPerTokenHolder; - vote.minBlocksForPenalty = settings.minBlocksForPenalty; - vote.noLambda = 0; - vote.penalty = settings.penalty; - vote.quorum = settings.quorum; - - uint256 maxVotingShares = ElasticMath.wmul( - tokenContract.numberOfTokenHolders(), - settings.maxSharesPerTokenHolder - ); - uint256 totalSupplyInShares = tokenContract.totalSupplyInShares(); - if (totalSupplyInShares < maxVotingShares) { - vote.quorumLambda = ElasticMath.wmul(totalSupplyInShares, settings.quorum); - vote.approvalLambda = ElasticMath.wmul(totalSupplyInShares, settings.approval); - } else { - vote.quorumLambda = ElasticMath.wmul(maxVotingShares, settings.quorum); - vote.approvalLambda = ElasticMath.wmul(maxVotingShares, settings.approval); - } - - vote.reward = settings.reward; - vote.startOnBlock = block.number; - vote.votingTokenAddress = settings.votingTokenAddress; - vote.yesLambda = 0; - voteContract.serialize(vote); - InformationalVoteSettings(settingsModelAddress).incrementCounter(address(this)); - - emit CreateVote(vote.index); - } - - function getSettings() external view returns (InformationalVoteSettings.Instance memory) { - return _getSettings(); - } - - // Private - - function _getSettings() internal view returns (InformationalVoteSettings.Instance memory) { - return InformationalVoteSettings(settingsModelAddress).deserialize(address(this)); - } - - function _getVote(uint256 _index, InformationalVoteSettings.Instance memory _settings) - internal - view - returns (InformationalVote.Instance memory) - { - return InformationalVote(voteModelAddress).deserialize(_index, _settings); - } - - function _voteExists(uint256 _index, InformationalVoteSettings.Instance memory _settings) - internal - view - returns (bool) - { - return InformationalVote(voteModelAddress).exists(_index, _settings); - } - - function _voteNotExpired(InformationalVote.Instance memory vote) internal returns (bool) { - if (vote.endOnBlock <= block.number) { - vote.isActive = false; - InformationalVote(voteModelAddress).serialize(vote); - return false; - } - - return true; - } -} diff --git a/src/modules/InformationalVote/models/Ballot.sol b/src/modules/InformationalVote/models/Ballot.sol deleted file mode 100644 index e4b5df8..0000000 --- a/src/modules/InformationalVote/models/Ballot.sol +++ /dev/null @@ -1,96 +0,0 @@ -// SPDX-License-Identifier: GPLv3 -pragma solidity 0.7.2; -pragma experimental ABIEncoderV2; - -import '../../../models/EternalModel.sol'; -import '../../../libraries/SafeMath.sol'; -import './Settings.sol'; -import './Vote.sol'; - -/// @author ElasticDAO - https://ElasticDAO.org -/// @notice This contract is used for storing information vote data -/// @dev ElasticDAO network contracts can read/write from this contract -// Serialize -> Translation of data from the concerned struct to key-value pairs -/// Deserialize -> Translation of data from the key-value pairs to a struct -contract InformationalVoteBallot is EternalModel { - constructor() EternalModel() {} - - struct Instance { - address voter; - bool wasPenalized; - uint256 lambda; - uint256 yna; - InformationalVoteSettings.Instance settings; - InformationalVote.Instance vote; - } - - function deserialize( - address _voter, - InformationalVoteSettings.Instance memory _settings, - InformationalVote.Instance memory _vote - ) external view returns (Instance memory record) { - record.voter = _voter; - record.settings = _settings; - record.vote = _vote; - - if (_exists(_voter, _settings, _vote)) { - record.lambda = getUint( - keccak256(abi.encode(_settings.managerAddress, _vote.index, _voter, 'lambda')) - ); - record.wasPenalized = getBool( - keccak256(abi.encode(_settings.managerAddress, _vote.index, _voter, 'wasPenalized')) - ); - record.yna = getUint( - keccak256(abi.encode(_settings.managerAddress, _vote.index, _voter, 'yna')) - ); - } - - return record; - } - - function exists( - address _voter, - InformationalVoteSettings.Instance memory _settings, - InformationalVote.Instance memory _vote - ) external view returns (bool recordExists) { - return _exists(_voter, _settings, _vote); - } - - /** - * @dev serializes Instance struct - * @param record Instance - */ - function serialize(Instance memory record) external { - setBool( - keccak256( - abi.encode(record.settings.managerAddress, record.vote.index, record.voter, 'wasPenalized') - ), - record.wasPenalized - ); - setUint( - keccak256( - abi.encode(record.settings.managerAddress, record.vote.index, record.voter, 'lambda') - ), - record.lambda - ); - setUint( - keccak256(abi.encode(record.settings.managerAddress, record.vote.index, record.voter, 'yna')), - record.yna - ); - - setBool( - keccak256( - abi.encode(record.settings.managerAddress, record.vote.index, record.voter, 'exists') - ), - true - ); - } - - function _exists( - address _voter, - InformationalVoteSettings.Instance memory _settings, - InformationalVote.Instance memory _vote - ) internal view returns (bool recordExists) { - return getBool(keccak256(abi.encode(_settings.managerAddress, _vote.index, _voter, 'exists'))); - } -} diff --git a/src/modules/InformationalVote/models/Settings.sol b/src/modules/InformationalVote/models/Settings.sol deleted file mode 100644 index 6bd82a3..0000000 --- a/src/modules/InformationalVote/models/Settings.sol +++ /dev/null @@ -1,133 +0,0 @@ -// SPDX-License-Identifier: GPLv3 -pragma solidity 0.7.2; -pragma experimental ABIEncoderV2; - -import '../../../models/EternalModel.sol'; -import '../../../libraries/SafeMath.sol'; - -/// @author ElasticDAO - https://ElasticDAO.org -/// @notice This contract is used for storing information vote settings data -/// @dev ElasticDAO network contracts can read/write from this contract -// Serialize -> Translation of data from the concerned struct to key-value pairs -/// Deserialize -> Translation of data from the key-value pairs to a struct -contract InformationalVoteSettings is EternalModel { - struct Instance { - address managerAddress; - address votingTokenAddress; - bool hasPenalty; - uint256 approval; - uint256 counter; - uint256 maxSharesPerTokenHolder; - uint256 minBlocksForPenalty; - uint256 minDurationInBlocks; - uint256 minPenaltyInShares; - uint256 minRewardInShares; - uint256 minSharesToCreate; - uint256 penalty; - uint256 quorum; - uint256 reward; - } - - /** - * @dev deserializes Instance struct - * @param _managerAddress - address of the unique manager instance - * @return record Instance - */ - function deserialize(address _managerAddress) external view returns (Instance memory record) { - record.managerAddress = _managerAddress; - - if (_exists(_managerAddress)) { - record.approval = getUint(keccak256(abi.encode(_managerAddress, 'approval'))); - record.counter = getUint(keccak256(abi.encode(_managerAddress, 'counter'))); - record.hasPenalty = getBool(keccak256(abi.encode(_managerAddress, 'hasPenalty'))); - record.maxSharesPerTokenHolder = getUint( - keccak256(abi.encode(_managerAddress, 'maxSharesPerTokenHolder')) - ); - record.minBlocksForPenalty = getUint( - keccak256(abi.encode(_managerAddress, 'minBlocksForPenalty')) - ); - record.minDurationInBlocks = getUint( - keccak256(abi.encode(_managerAddress, 'minDurationInBlocks')) - ); - record.minSharesToCreate = getUint( - keccak256(abi.encode(_managerAddress, 'minSharesToCreate')) - ); - record.minPenaltyInShares = getUint( - keccak256(abi.encode(_managerAddress, 'minPenaltyInShares')) - ); - record.minRewardInShares = getUint( - keccak256(abi.encode(_managerAddress, 'minRewardInShares')) - ); - record.penalty = getUint(keccak256(abi.encode(_managerAddress, 'penalty'))); - record.quorum = getUint(keccak256(abi.encode(_managerAddress, 'quorum'))); - record.reward = getUint(keccak256(abi.encode(_managerAddress, 'reward'))); - record.votingTokenAddress = getAddress( - keccak256(abi.encode(_managerAddress, 'votingTokenAddress')) - ); - } - - return record; - } - - function exists(address _managerAddress) external view returns (bool recordExists) { - return _exists(_managerAddress); - } - - /** - * @dev increments counter for the @param _managerAddress - * @param _managerAddress - address of the unique manager instance - */ - function incrementCounter(address _managerAddress) external { - setUint( - keccak256(abi.encode(_managerAddress, 'counter')), - SafeMath.add(getUint(keccak256(abi.encode(_managerAddress, 'counter'))), 1) - ); - } - - /** - * @dev serializes Instance struct - * @param record Instance - */ - function serialize(Instance memory record) external { - setBool(keccak256(abi.encode(record.managerAddress, 'hasPenalty')), record.hasPenalty); - setUint(keccak256(abi.encode(record.managerAddress, 'approval')), record.approval); - setUint(keccak256(abi.encode(record.managerAddress, 'counter')), record.counter); - setUint( - keccak256(abi.encode(record.managerAddress, 'maxSharesPerTokenHolder')), - record.maxSharesPerTokenHolder - ); - setUint( - keccak256(abi.encode(record.managerAddress, 'minBlocksForPenalty')), - record.minBlocksForPenalty - ); - setUint( - keccak256(abi.encode(record.managerAddress, 'minDurationInBlocks')), - record.minDurationInBlocks - ); - setUint( - keccak256(abi.encode(record.managerAddress, 'minPenaltyInShares')), - record.minPenaltyInShares - ); - setUint( - keccak256(abi.encode(record.managerAddress, 'minRewardInShares')), - record.minRewardInShares - ); - setUint( - keccak256(abi.encode(record.managerAddress, 'minSharesToCreate')), - record.minSharesToCreate - ); - setUint(keccak256(abi.encode(record.managerAddress, 'penalty')), record.penalty); - setUint(keccak256(abi.encode(record.managerAddress, 'quorum')), record.quorum); - setUint(keccak256(abi.encode(record.managerAddress, 'reward')), record.reward); - setAddress( - keccak256(abi.encode(record.managerAddress, 'votingTokenAddress')), - record.votingTokenAddress - ); - - setBool(keccak256(abi.encode(record.managerAddress, 'exists')), true); - } - - function _exists(address _managerAddress) internal view returns (bool recordExists) { - return getBool(keccak256(abi.encode(_managerAddress, 'exists'))); - } -} diff --git a/src/modules/InformationalVote/models/Vote.sol b/src/modules/InformationalVote/models/Vote.sol deleted file mode 100644 index 9b8f381..0000000 --- a/src/modules/InformationalVote/models/Vote.sol +++ /dev/null @@ -1,228 +0,0 @@ -// SPDX-License-Identifier: GPLv3 -pragma solidity 0.7.2; -pragma experimental ABIEncoderV2; - -import '../../../models/EternalModel.sol'; -import '../../../libraries/SafeMath.sol'; -import './Settings.sol'; - -/// @author ElasticDAO - https://ElasticDAO.org -/// @notice This contract is used for storing information vote data -/// @dev ElasticDAO network contracts can read/write from this contract -// Serialize -> Translation of data from the concerned struct to key-value pairs -/// Deserialize -> Translation of data from the key-value pairs to a struct -contract InformationalVote is EternalModel { - struct Instance { - address author; - address votingTokenAddress; - bool hasPenalty; - bool hasReachedQuorum; - bool isActive; - bool isApproved; - string proposal; - uint256 abstainLambda; - uint256 approval; - uint256 approvalLambda; - uint256 endOnBlock; - uint256 index; - uint256 maxSharesPerTokenHolder; - uint256 minBlocksForPenalty; - uint256 minPenaltyInShares; - uint256 minRewardInShares; - uint256 noLambda; - uint256 penalty; - uint256 quorum; - uint256 quorumLambda; - uint256 reward; - uint256 startOnBlock; - uint256 yesLambda; - InformationalVoteSettings.Instance settings; - } - - function deserialize(uint256 _index, InformationalVoteSettings.Instance memory _settings) - external - view - returns (Instance memory record) - { - record.index = _index; - record.settings = _settings; - - if (_exists(_index, _settings)) { - record.abstainLambda = getUint( - keccak256(abi.encode(_settings.managerAddress, _index, 'abstainLambda')) - ); - record.approval = getUint( - keccak256(abi.encode(_settings.managerAddress, _index, 'approval')) - ); - record.approvalLambda = getUint( - keccak256(abi.encode(_settings.managerAddress, _index, 'approvalLambda')) - ); - record.author = getAddress(keccak256(abi.encode(_settings.managerAddress, _index, 'author'))); - record.endOnBlock = getUint( - keccak256(abi.encode(_settings.managerAddress, _index, 'endOnBlock')) - ); - record.hasPenalty = getBool( - keccak256(abi.encode(_settings.managerAddress, _index, 'hasPenalty')) - ); - record.hasReachedQuorum = getBool( - keccak256(abi.encode(_settings.managerAddress, _index, 'hasReachedQuorum')) - ); - record.isActive = getBool( - keccak256(abi.encode(_settings.managerAddress, _index, 'isActive')) - ); - record.isApproved = getBool( - keccak256(abi.encode(_settings.managerAddress, _index, 'isApproved')) - ); - record.maxSharesPerTokenHolder = getUint( - keccak256(abi.encode(_settings.managerAddress, _index, 'maxSharesPerTokenHolder')) - ); - record.minBlocksForPenalty = getUint( - keccak256(abi.encode(_settings.managerAddress, _index, 'minBlocksForPenalty')) - ); - record.minPenaltyInShares = getUint( - keccak256(abi.encode(_settings.managerAddress, _index, 'minPenaltyInShares')) - ); - record.minRewardInShares = getUint( - keccak256(abi.encode(_settings.managerAddress, _index, 'minRewardInShares')) - ); - record.noLambda = getUint( - keccak256(abi.encode(_settings.managerAddress, _index, 'noLambda')) - ); - record.penalty = getUint(keccak256(abi.encode(_settings.managerAddress, _index, 'penalty'))); - record.proposal = getString( - keccak256(abi.encode(_settings.managerAddress, _index, 'proposal')) - ); - record.quorum = getUint(keccak256(abi.encode(_settings.managerAddress, _index, 'quorum'))); - record.quorumLambda = getUint( - keccak256(abi.encode(_settings.managerAddress, _index, 'quorumLambda')) - ); - record.reward = getUint(keccak256(abi.encode(_settings.managerAddress, _index, 'reward'))); - record.startOnBlock = getUint( - keccak256(abi.encode(_settings.managerAddress, _index, 'startOnBlock')) - ); - record.votingTokenAddress = getAddress( - keccak256(abi.encode(_settings.managerAddress, _index, 'votingTokenAddress')) - ); - record.yesLambda = getUint( - keccak256(abi.encode(_settings.managerAddress, _index, 'yesLambda')) - ); - } - - return record; - } - - function exists(uint256 _index, InformationalVoteSettings.Instance memory _settings) - external - view - returns (bool recordExists) - { - return _exists(_index, _settings); - } - - /** - * @dev serializes Instance struct - * @param record Instance - */ - function serialize(Instance memory record) external { - setAddress( - keccak256(abi.encode(record.settings.managerAddress, record.index, 'author')), - record.author - ); - setAddress( - keccak256(abi.encode(record.settings.managerAddress, record.index, 'votingTokenAddress')), - record.votingTokenAddress - ); - setBool( - keccak256(abi.encode(record.settings.managerAddress, record.index, 'hasPenalty')), - record.hasPenalty - ); - setBool( - keccak256(abi.encode(record.settings.managerAddress, record.index, 'hasReachedQuorum')), - record.hasReachedQuorum - ); - setBool( - keccak256(abi.encode(record.settings.managerAddress, record.index, 'isActive')), - record.isActive - ); - setBool( - keccak256(abi.encode(record.settings.managerAddress, record.index, 'isApproved')), - record.isApproved - ); - setString( - keccak256(abi.encode(record.settings.managerAddress, record.index, 'proposal')), - record.proposal - ); - setUint( - keccak256(abi.encode(record.settings.managerAddress, record.index, 'abstainLambda')), - record.abstainLambda - ); - setUint( - keccak256(abi.encode(record.settings.managerAddress, record.index, 'approval')), - record.approval - ); - setUint( - keccak256(abi.encode(record.settings.managerAddress, record.index, 'approvalLambda')), - record.approvalLambda - ); - setUint( - keccak256(abi.encode(record.settings.managerAddress, record.index, 'endOnBlock')), - record.endOnBlock - ); - setUint( - keccak256( - abi.encode(record.settings.managerAddress, record.index, 'maxSharesPerTokenHolder') - ), - record.maxSharesPerTokenHolder - ); - setUint( - keccak256(abi.encode(record.settings.managerAddress, record.index, 'minBlocksForPenalty')), - record.minBlocksForPenalty - ); - setUint( - keccak256(abi.encode(record.settings.managerAddress, record.index, 'minPenaltyInShares')), - record.minPenaltyInShares - ); - setUint( - keccak256(abi.encode(record.settings.managerAddress, record.index, 'minRewardInShares')), - record.minRewardInShares - ); - setUint( - keccak256(abi.encode(record.settings.managerAddress, record.index, 'noLambda')), - record.noLambda - ); - setUint( - keccak256(abi.encode(record.settings.managerAddress, record.index, 'penalty')), - record.penalty - ); - setUint( - keccak256(abi.encode(record.settings.managerAddress, record.index, 'quorum')), - record.quorum - ); - setUint( - keccak256(abi.encode(record.settings.managerAddress, record.index, 'quorumLambda')), - record.quorumLambda - ); - setUint( - keccak256(abi.encode(record.settings.managerAddress, record.index, 'reward')), - record.reward - ); - setUint( - keccak256(abi.encode(record.settings.managerAddress, record.index, 'startOnBlock')), - record.startOnBlock - ); - setUint( - keccak256(abi.encode(record.settings.managerAddress, record.index, 'yesLambda')), - record.yesLambda - ); - - setBool(keccak256(abi.encode(record.settings.managerAddress, record.index, 'exists')), true); - } - - function _exists(uint256 _index, InformationalVoteSettings.Instance memory _settings) - internal - view - returns (bool recordExists) - { - return getBool(keccak256(abi.encode(_settings.managerAddress, _index, 'exists'))); - } -} diff --git a/src/modules/TransactionalVote/Factory.sol b/src/modules/TransactionalVote/Factory.sol deleted file mode 100644 index 46bd73c..0000000 --- a/src/modules/TransactionalVote/Factory.sol +++ /dev/null @@ -1,38 +0,0 @@ -// SPDX-License-Identifier: GPLv3 -pragma solidity 0.7.2; -pragma experimental ABIEncoderV2; - -import '../../core/ElasticDAO.sol'; -import './Manager.sol'; - -contract TransactionalVoteFactory { - event ManagerDeployed(address indexed managerAddress); - - function deployManager( - address _ballotModelAddress, - address payable _elasticDAOAddress, - address _settingsModelAddress, - address payable _vaultAddress, - address _voteModelAddress, - address _votingTokenAddress, - bool _hasPenalty, - uint256[10] memory _settings - ) external { - // creates the manager of the informationalVote Module - TransactionalVoteManager manager = new TransactionalVoteManager( - _ballotModelAddress, - _settingsModelAddress, - _vaultAddress, - _voteModelAddress - ); - - // initializes the informationalVoteModule via the manager - manager.initialize(_votingTokenAddress, _hasPenalty, _settings); - - // register the module in ElasticDAO - ElasticDAO elasticDAO = ElasticDAO(_elasticDAOAddress); - elasticDAO.initializeModule(address(manager), 'TransactionalVoteModule'); - - emit ManagerDeployed(address(manager)); - } -} diff --git a/src/modules/TransactionalVote/Manager.sol b/src/modules/TransactionalVote/Manager.sol deleted file mode 100644 index e47ef8a..0000000 --- a/src/modules/TransactionalVote/Manager.sol +++ /dev/null @@ -1,564 +0,0 @@ -// SPDX-License-Identifier: GPLv3 -pragma solidity 0.7.2; -pragma experimental ABIEncoderV2; - -import './models/Ballot.sol'; -import './models/Settings.sol'; -import './models/Vote.sol'; -import './Operation.sol'; - -import '../../interfaces/IElasticToken.sol'; -import '../../libraries/ElasticMath.sol'; - -/// @author ElasticDAO - https://ElasticDAO.org -/// @notice This contract is used for interacting with informational votes -/// @dev ElasticDAO network contracts can read/write from this contract -contract TransactionalVoteManager { - //keccak256( - // "SafeTx(address to,uint256 value,bytes data,uint8 operation,uint256 safeTxGas,uint256 baseGas,uint256 gasPrice,address gasToken,address refundReceiver,uint256 nonce)" - //); - bytes32 - private constant SAFE_TX_TYPEHASH = 0xbb8310d486368db6bd6f849402fdd73ad53d316b5a4b2644ad6efe0f941286d8; - //keccak256( - // "EIP712Domain(address verifyingContract)" - //); - bytes32 - private constant DOMAIN_SEPARATOR_TYPEHASH = 0x035aff83d86937d35b32e04f0ddc6ff469290eef2f1b692d8a815c89404d4749; - - event CreateVote(uint256 index); - event ExecutionFailure(bytes32 txHash, uint256 payment); - event ExecutionSuccess(bytes32 txHash, uint256 payment); - - address public ballotModelAddress; - address public settingsModelAddress; - address payable public vaultAddress; - address public voteModelAddress; - bool public initialized; - uint256 public nonce; - bytes32 public domainSeparator; - - constructor( - address _ballotModelAddress, - address _settingsModelAddress, - address payable _vaultAddress, - address _voteModelAddress - ) { - ballotModelAddress = _ballotModelAddress; - initialized = false; - settingsModelAddress = _settingsModelAddress; - vaultAddress = _vaultAddress; - voteModelAddress = _voteModelAddress; - } - - /** - * @dev Initializes the TransactionalVote Manager - * @param _votingTokenAddress - the address of the voting Token - * @param _hasPenalty - whether the vote has a penalty or not - * @param _settings - an array of all the vote related settings - */ - function initialize( - address _votingTokenAddress, - bool _hasPenalty, - uint256[10] memory _settings - ) external { - require(initialized == false, 'ElasticDAO: Transactional Vote Manager already initialized.'); - TransactionalVoteSettings settingsContract = TransactionalVoteSettings(settingsModelAddress); - TransactionalVoteSettings.Instance memory settings; - settings.managerAddress = address(this); - settings.votingTokenAddress = _votingTokenAddress; - settings.hasPenalty = _hasPenalty; - settings.approval = _settings[0]; - settings.counter = 0; - settings.maxSharesPerTokenHolder = _settings[1]; - settings.minBlocksForPenalty = _settings[2]; - settings.minDurationInBlocks = _settings[3]; - settings.minPenaltyInShares = _settings[4]; - settings.minRewardInShares = _settings[5]; - settings.minSharesToCreate = _settings[6]; - settings.penalty = _settings[7]; - settings.quorum = _settings[8]; - settings.reward = _settings[9]; - domainSeparator = keccak256(abi.encode(DOMAIN_SEPARATOR_TYPEHASH, this)); - - settingsContract.serialize(settings); - initialized = true; - } - - /** - * @dev Applies penalties to @param _addressesToPenalize - * @param _index - ID of the specific vote - * @param _addressesToPenalize - An array of all the addresses to be penalized - * - * The function does the following checks: - * Whether the @param _index is a valid vote ID - * Whether the vote has already passed or not - * Whether the vote is currently active - * Whether the vote has reached quoroum or not - * Whether the TransactionalVote has a penalty or not - * - * Penalization - - * VotePenalty - The penalty on the vote - * balanceOfInShares - The amount of shares owned by a specific address - * DeltaLambda - The change in the number of shares - * Delatalambda = balanceOfInShares * VotePenalty - * - * Summary of penalization - Delatalambda is calculated, and those many shares are burnt - * for the specific account - * - * Summary: If the vote has a valid ID, isApproved, isActive, has NOT reached quoroum, - * has a penalty on it then the @param _addressesToPenalize are penalized - * - */ - function applyPenalty(uint256 _index, address[] memory _addressesToPenalize) external { - TransactionalVoteSettings.Instance memory settings = _getSettings(); - require(_voteExists(_index, settings), 'ElasticDAO: Invalid vote id.'); - TransactionalVote.Instance memory vote = _getVote(_index, settings); - require(vote.isApproved == false, 'ElasticDAO: Cannot penalize a vote that passed.'); - require(vote.isActive == false, 'ElasticDAO: Cannot penalize an active vote.'); - require( - vote.hasReachedQuorum == false, - 'ElasticDAO: Cannot penalize a vote that has reached quorum.' - ); - require(vote.hasPenalty, 'ElasticDAO: This vote has no penalty.'); - TransactionalVoteBallot ballotContract = TransactionalVoteBallot(ballotModelAddress); - IElasticToken tokenContract = IElasticToken(vote.votingTokenAddress); - - for (uint256 i = 0; i < _addressesToPenalize.length; i = SafeMath.add(i, 1)) { - if (ballotContract.exists(_addressesToPenalize[i], settings, vote) == false) { - TransactionalVoteBallot.Instance memory ballot; - ballot.settings = settings; - ballot.vote = vote; - ballot.voter = _addressesToPenalize[i]; - ballot.wasPenalized = true; - uint256 deltaLambda = ElasticMath.wmul( - tokenContract.balanceOfInShares(_addressesToPenalize[i]), - vote.penalty - ); - ballot.lambda = deltaLambda; - ballotContract.serialize(ballot); - tokenContract.burnShares(_addressesToPenalize[i], deltaLambda); - } - } - } - - /** - * @dev casts the vote ballot - * @param _index - the ID of the vote - * @param _yna - YesNoAbstain value - 0 for Yes, 1 for No, 2 for abstain - * votingLambda - The current number of shares the voter has - * lambdaAtStartingBlock - the number of shares the voter has on vote creation - * - * Essentially, by comparing lambdaAtStartingBlock and votingLambda, - * a voter is only allowed to vote with the number of shares they had when the vote was created, - * and if the number of shares exceeds the maximum number of shares per token holder, - * voter can only vote with the maximum number of shares per token holder, - */ - function castBallot(uint256 _index, uint256 _yna) external { - TransactionalVoteSettings.Instance memory settings = _getSettings(); - require(_voteExists(_index, settings), 'ElasticDAO: Invalid vote id.'); - TransactionalVote.Instance memory vote = _getVote(_index, settings); - require(vote.isActive, 'ElasticDAO: TransactionalVote is not active or has ended.'); - require(_voteNotExpired(vote), 'ElasticDAO: TransactionalVote is not active or has ended.'); - require(_yna < 3, 'ElasticDAO: Invalid _yna value. Use 0 for yes, 1 for no, 2 for abstain.'); - IElasticToken tokenContract = IElasticToken(vote.votingTokenAddress); - - uint256 votingLambda = tokenContract.balanceOfInShares(msg.sender); - uint256 lambdaAtStartingBlock = tokenContract.balanceOfInSharesAt( - msg.sender, - vote.startOnBlock - ); - if (lambdaAtStartingBlock < votingLambda) { - votingLambda = lambdaAtStartingBlock; - } - if (vote.maxSharesPerTokenHolder < votingLambda) { - votingLambda = vote.maxSharesPerTokenHolder; - } - - TransactionalVoteBallot.Instance memory existingBallot = TransactionalVoteBallot( - ballotModelAddress - ) - .deserialize(msg.sender, settings, vote); - - if (existingBallot.lambda > 0) { - if (existingBallot.yna == 0) { - vote.yesLambda = SafeMath.sub(vote.yesLambda, existingBallot.lambda); - } else if (existingBallot.yna == 1) { - vote.noLambda = SafeMath.sub(vote.noLambda, existingBallot.lambda); - } else { - vote.abstainLambda = SafeMath.sub(vote.abstainLambda, existingBallot.lambda); - } - } - - if (_yna == 0) { - vote.yesLambda = SafeMath.add(vote.yesLambda, votingLambda); - } else if (_yna == 1) { - vote.noLambda = SafeMath.add(vote.noLambda, votingLambda); - } else { - vote.abstainLambda = SafeMath.add(vote.abstainLambda, votingLambda); - } - - uint256 lambda = SafeMath.add(SafeMath.add(vote.yesLambda, vote.noLambda), vote.abstainLambda); - vote.isApproved = false; - if (lambda >= vote.quorumLambda) { - vote.hasReachedQuorum = true; - - if (lambda >= vote.approvalLambda) { - vote.isApproved = true; - } - } - - TransactionalVoteBallot.Instance memory ballot; - ballot.lambda = votingLambda; - ballot.settings = settings; - ballot.vote = vote; - ballot.voter = msg.sender; - ballot.yna = _yna; - - TransactionalVoteBallot(ballotModelAddress).serialize(ballot); - TransactionalVote(voteModelAddress).serialize(vote); - - if (existingBallot.lambda == 0) { - tokenContract.mintShares(msg.sender, ElasticMath.wmul(votingLambda, vote.reward)); - } - } - - function createVote( - address _to, - uint256 _value, - bytes memory _data, - Operation _operation, - uint256 _safeTxGas, - uint256 _baseGas, - uint256 _endOnBlock - ) external returns (uint256) { - require(initialized, 'ElasticDAO: TransactionalVote Manager not initialized'); - TransactionalVoteSettings.Instance memory settings = _getSettings(); - IElasticToken tokenContract = IElasticToken(settings.votingTokenAddress); - require( - tokenContract.balanceOfInShares(msg.sender) >= settings.minSharesToCreate, - 'ElasticDAO: Not enough shares to create vote' - ); - require( - SafeMath.sub(_endOnBlock, block.number) >= settings.minDurationInBlocks, - 'ElasticDAO: TransactionalVote period too short' - ); - bytes memory zero; - require( - _value > 0, - 'ElasticDAO: Transaction must either transfer value or call another contract function' - ); - if (keccak256(abi.encodePacked(_data)) == keccak256(abi.encodePacked(zero))) { - revert( - 'ElasticDAO: Transaction must either transfer value or call another contract function' - ); - } - - TransactionalVote voteContract = TransactionalVote(voteModelAddress); - TransactionalVote.Instance memory vote; - vote.settings = settings; - vote.abstainLambda = 0; - vote.approval = 0; - vote.author = msg.sender; - vote.baseGas = _baseGas; - vote.data = _data; - vote.endOnBlock = _endOnBlock; - vote.hasPenalty = settings.hasPenalty; - vote.hasReachedQuorum = false; - vote.index = settings.counter; - vote.isActive = true; - vote.isApproved = false; - vote.maxSharesPerTokenHolder = settings.maxSharesPerTokenHolder; - vote.minBlocksForPenalty = settings.minBlocksForPenalty; - vote.noLambda = 0; - vote.operation = _operation; - vote.penalty = settings.penalty; - vote.quorum = settings.quorum; - - uint256 maxVotingShares = ElasticMath.wmul( - tokenContract.numberOfTokenHolders(), - settings.maxSharesPerTokenHolder - ); - uint256 totalSupplyInShares = tokenContract.totalSupplyInShares(); - if (totalSupplyInShares < maxVotingShares) { - vote.quorumLambda = ElasticMath.wmul(totalSupplyInShares, settings.quorum); - vote.approvalLambda = ElasticMath.wmul(totalSupplyInShares, settings.approval); - } else { - vote.quorumLambda = ElasticMath.wmul(maxVotingShares, settings.quorum); - vote.approvalLambda = ElasticMath.wmul(maxVotingShares, settings.approval); - } - - vote.reward = settings.reward; - vote.safeTxGas = _safeTxGas; - vote.startOnBlock = block.number; - vote.to = _to; - vote.value = _value; - vote.votingTokenAddress = settings.votingTokenAddress; - vote.yesLambda = 0; - voteContract.serialize(vote); - TransactionalVoteSettings(settingsModelAddress).incrementCounter(address(this)); - - emit CreateVote(vote.index); - } - - /** - * @dev executes arbitrary transaction when safe abi function signature is passed into data. Based on Gnosis Safe. - * @param _gasPrice - Gas price that should be used for the payment calculation. - * @param _gasToken - Token address (or 0 if ETH) that is used for the payment. - * @param _index - the vote index id. - * @return success bool - */ - function execute( - address _gasToken, - uint256 _gasPrice, - uint256 _index - ) external returns (bool success) { - TransactionalVoteSettings.Instance memory settings = _getSettings(); - TransactionalVote.Instance memory vote = _getVote(_index, settings); - - require(!vote.isExecuted, 'ElasticDAO: Vote has already been executed'); - require(vote.isApproved, 'ElasticDAO: Can not call unless vote is successful'); - - vote.isExecuted = true; - TransactionalVote voteContract = TransactionalVote(voteModelAddress); - voteContract.serialize(vote); - - success = _executeTransaction( - vote.to, - vote.value, - vote.data, - vote.operation, - vote.safeTxGas, - vote.baseGas, - _gasPrice, - _gasToken, - vaultAddress - ); - - if (!success) { - revert('ElasticDAO: Transaction Failed'); - } - - return true; - } - - function getSettings() external view returns (TransactionalVoteSettings.Instance memory) { - return _getSettings(); - } - - // Private - function _executeTransaction( - address _to, - uint256 _value, - bytes memory _data, - Operation _operation, - uint256 _safeTxGas, - uint256 _baseGas, - uint256 _gasPrice, - address _gasToken, - address payable _refundReceiver - ) internal returns (bool success) { - bytes32 txHash; - - // use scope to limit variable lifetime and prevent `stack to deep` errors - { - bytes memory txHashData = _encodeTransactionData( - _to, - _value, - _data, - _operation, - _safeTxGas, - _baseGas, - _gasPrice, - _gasToken, - _refundReceiver - ); - - // increment nonce - SafeMath.add(nonce, 1); - // hash transaction data - txHash = keccak256(txHashData); - } - - // We require some gas to emit the events (at least 2500) after the execution and some to perform code until the execution (500) - // We also include the 1/64 in the check that is not send along with a call to counteract potential shortings because of EIP-150 - require( - gasleft() >= SafeMath.max((_safeTxGas * 64) / 63, (_safeTxGas + 2500) + 500), - 'ElasticDAO: Not enough gas to execute safe transaction' - ); - - // use scope to limit variable lifetime and prevent `stack to deep` errors - { - uint256 gasUsed = gasleft(); - // If the gasPrice is 0 we assume that nearly all available gas can be used (it is always more than safeTxGas) - // We only substract 2500 (compared to the 3000 before) to ensure that the amount passed is still higher than safeTxGas - success = _handleCall( - _to, - _value, - _data, - _operation, - _gasPrice == 0 ? (gasleft() - 2500) : _safeTxGas - ); - gasUsed = SafeMath.sub(gasUsed, gasleft()); - - // We transfer the calculated tx costs to the tx.origin to avoid sending it to intermediate contracts that have made calls - uint256 payment = 0; - if (_gasPrice > 0) { - payment = _handlePayment(gasUsed, _baseGas, _gasPrice, _gasToken, _refundReceiver); - } - - if (success) { - emit ExecutionSuccess(txHash, payment); - } else { - emit ExecutionFailure(txHash, payment); - } - } - } - - function _handlePayment( - uint256 _gasUsed, - uint256 _baseGas, - uint256 _gasPrice, - address _gasToken, - address payable _refundReceiver - ) private returns (uint256 payment) { - address payable receiver = _refundReceiver == address(0) ? tx.origin : _refundReceiver; - - if (_gasToken == address(0)) { - // For ETH we will only adjust the gas price to not be higher than the actual used gas price - payment = SafeMath.mul( - SafeMath.add(_gasUsed, _baseGas), - _gasPrice < tx.gasprice ? _gasPrice : tx.gasprice - ); - - require(receiver.send(payment), 'Elastic DAO: Could not pay gas costs with token'); - } else { - payment = SafeMath.mul(SafeMath.add(_gasUsed, _baseGas), _gasPrice); - - require(_transferToken(_gasToken, receiver, payment)); - } - } - - function _encodeTransactionData( - address _to, - uint256 _value, - bytes memory _data, - Operation _operation, - uint256 _safeTxGas, - uint256 _baseGas, - uint256 _gasPrice, - address _gasToken, - address _refundReceiver - ) internal view returns (bytes memory) { - bytes32 safeTxHash = keccak256( - abi.encode( - SAFE_TX_TYPEHASH, - _to, - _value, - keccak256(_data), - _operation, - _safeTxGas, - _baseGas, - _gasPrice, - _gasToken, - _refundReceiver, - nonce - ) - ); - - return abi.encodePacked(bytes1(0x19), bytes1(0x01), domainSeparator, safeTxHash); - } - - function _handleCall( - address _to, - uint256 _value, - bytes memory _data, - Operation _operation, - uint256 _txGas - ) internal returns (bool success) { - if (_operation == Operation.Call) success = _executeCall(_to, _value, _data, _txGas); - else if (_operation == Operation.DelegateCall) - success = _executeDelegateCall(_to, _data, _txGas); - else success = false; - } - - function _executeCall( - address to, - uint256 value, - bytes memory data, - uint256 txGas - ) internal returns (bool success) { - // solium-disable-next-line security/no-inline-assembly - assembly { - success := call(txGas, to, value, add(data, 0x20), mload(data), 0, 0) - } - } - - function _executeDelegateCall( - address to, - bytes memory data, - uint256 txGas - ) internal returns (bool success) { - // solium-disable-next-line security/no-inline-assembly - assembly { - success := delegatecall(txGas, to, add(data, 0x20), mload(data), 0, 0) - } - } - - /// @dev Transfers a token and returns if it was a success - /// @param token Token that should be transferred - /// @param receiver Receiver to whom the token should be transferred - /// @param amount The amount of tokens that should be transferred - function _transferToken( - address token, - address receiver, - uint256 amount - ) internal returns (bool transferred) { - bytes memory data = abi.encodeWithSignature('transfer(address,uint256)', receiver, amount); - assembly { - let success := call(sub(gas(), 10000), token, 0, add(data, 0x20), mload(data), 0, 0) - let ptr := mload(0x40) - mstore(0x40, add(ptr, returndatasize())) - returndatacopy(ptr, 0, returndatasize()) - switch returndatasize() - case 0 { - transferred := success - } - case 0x20 { - transferred := iszero(or(iszero(success), iszero(mload(ptr)))) - } - default { - transferred := 0 - } - } - } - - function _getSettings() internal view returns (TransactionalVoteSettings.Instance memory) { - return TransactionalVoteSettings(settingsModelAddress).deserialize(address(this)); - } - - function _getVote(uint256 _index, TransactionalVoteSettings.Instance memory _settings) - internal - view - returns (TransactionalVote.Instance memory) - { - return TransactionalVote(voteModelAddress).deserialize(_index, _settings); - } - - function _voteExists(uint256 _index, TransactionalVoteSettings.Instance memory _settings) - internal - view - returns (bool) - { - return TransactionalVote(voteModelAddress).exists(_index, _settings); - } - - function _voteNotExpired(TransactionalVote.Instance memory vote) internal returns (bool) { - if (vote.endOnBlock <= block.number) { - vote.isActive = false; - TransactionalVote(voteModelAddress).serialize(vote); - return false; - } - - return true; - } -} diff --git a/src/modules/TransactionalVote/Operation.sol b/src/modules/TransactionalVote/Operation.sol deleted file mode 100644 index 8649ae0..0000000 --- a/src/modules/TransactionalVote/Operation.sol +++ /dev/null @@ -1,5 +0,0 @@ -// SPDX-License-Identifier: GPLv3 -pragma solidity 0.7.2; -pragma experimental ABIEncoderV2; - -enum Operation { Call, DelegateCall } diff --git a/src/modules/TransactionalVote/models/Ballot.sol b/src/modules/TransactionalVote/models/Ballot.sol deleted file mode 100644 index c15d452..0000000 --- a/src/modules/TransactionalVote/models/Ballot.sol +++ /dev/null @@ -1,96 +0,0 @@ -// SPDX-License-Identifier: GPLv3 -pragma solidity 0.7.2; -pragma experimental ABIEncoderV2; - -import '../../../models/EternalModel.sol'; -import '../../../libraries/SafeMath.sol'; -import './Settings.sol'; -import './Vote.sol'; - -/// @author ElasticDAO - https://ElasticDAO.org -/// @notice This contract is used for storing information vote data -/// @dev ElasticDAO network contracts can read/write from this contract -// Serialize -> Translation of data from the concerned struct to key-value pairs -/// Deserialize -> Translation of data from the key-value pairs to a struct -contract TransactionalVoteBallot is EternalModel { - constructor() EternalModel() {} - - struct Instance { - address voter; - bool wasPenalized; - uint256 lambda; - uint256 yna; - TransactionalVoteSettings.Instance settings; - TransactionalVote.Instance vote; - } - - function deserialize( - address _voter, - TransactionalVoteSettings.Instance memory _settings, - TransactionalVote.Instance memory _vote - ) external view returns (Instance memory record) { - record.voter = _voter; - record.settings = _settings; - record.vote = _vote; - - if (_exists(_voter, _settings, _vote)) { - record.lambda = getUint( - keccak256(abi.encode(_settings.managerAddress, _vote.index, _voter, 'lambda')) - ); - record.wasPenalized = getBool( - keccak256(abi.encode(_settings.managerAddress, _vote.index, _voter, 'wasPenalized')) - ); - record.yna = getUint( - keccak256(abi.encode(_settings.managerAddress, _vote.index, _voter, 'yna')) - ); - } - - return record; - } - - function exists( - address _voter, - TransactionalVoteSettings.Instance memory _settings, - TransactionalVote.Instance memory _vote - ) external view returns (bool recordExists) { - return _exists(_voter, _settings, _vote); - } - - /** - * @dev serializes Instance struct - * @param record Instance - */ - function serialize(Instance memory record) external { - setBool( - keccak256( - abi.encode(record.settings.managerAddress, record.vote.index, record.voter, 'wasPenalized') - ), - record.wasPenalized - ); - setUint( - keccak256( - abi.encode(record.settings.managerAddress, record.vote.index, record.voter, 'lambda') - ), - record.lambda - ); - setUint( - keccak256(abi.encode(record.settings.managerAddress, record.vote.index, record.voter, 'yna')), - record.yna - ); - - setBool( - keccak256( - abi.encode(record.settings.managerAddress, record.vote.index, record.voter, 'exists') - ), - true - ); - } - - function _exists( - address _voter, - TransactionalVoteSettings.Instance memory _settings, - TransactionalVote.Instance memory _vote - ) internal view returns (bool recordExists) { - return getBool(keccak256(abi.encode(_settings.managerAddress, _vote.index, _voter, 'exists'))); - } -} diff --git a/src/modules/TransactionalVote/models/Settings.sol b/src/modules/TransactionalVote/models/Settings.sol deleted file mode 100644 index a43ac43..0000000 --- a/src/modules/TransactionalVote/models/Settings.sol +++ /dev/null @@ -1,133 +0,0 @@ -// SPDX-License-Identifier: GPLv3 -pragma solidity 0.7.2; -pragma experimental ABIEncoderV2; - -import '../../../models/EternalModel.sol'; -import '../../../libraries/SafeMath.sol'; - -/// @author ElasticDAO - https://ElasticDAO.org -/// @notice This contract is used for storing information vote settings data -/// @dev ElasticDAO network contracts can read/write from this contract -// Serialize -> Translation of data from the concerned struct to key-value pairs -/// Deserialize -> Translation of data from the key-value pairs to a struct -contract TransactionalVoteSettings is EternalModel { - struct Instance { - address managerAddress; - address votingTokenAddress; - bool hasPenalty; - uint256 approval; - uint256 counter; - uint256 maxSharesPerTokenHolder; - uint256 minBlocksForPenalty; - uint256 minDurationInBlocks; - uint256 minPenaltyInShares; - uint256 minRewardInShares; - uint256 minSharesToCreate; - uint256 penalty; - uint256 quorum; - uint256 reward; - } - - /** - * @dev deserializes Instance struct - * @param _managerAddress - address of the unique manager instance - * @return record Instance - */ - function deserialize(address _managerAddress) external view returns (Instance memory record) { - record.managerAddress = _managerAddress; - - if (_exists(_managerAddress)) { - record.approval = getUint(keccak256(abi.encode(_managerAddress, 'approval'))); - record.counter = getUint(keccak256(abi.encode(_managerAddress, 'counter'))); - record.hasPenalty = getBool(keccak256(abi.encode(_managerAddress, 'hasPenalty'))); - record.maxSharesPerTokenHolder = getUint( - keccak256(abi.encode(_managerAddress, 'maxSharesPerTokenHolder')) - ); - record.minBlocksForPenalty = getUint( - keccak256(abi.encode(_managerAddress, 'minBlocksForPenalty')) - ); - record.minDurationInBlocks = getUint( - keccak256(abi.encode(_managerAddress, 'minDurationInBlocks')) - ); - record.minSharesToCreate = getUint( - keccak256(abi.encode(_managerAddress, 'minSharesToCreate')) - ); - record.minPenaltyInShares = getUint( - keccak256(abi.encode(_managerAddress, 'minPenaltyInShares')) - ); - record.minRewardInShares = getUint( - keccak256(abi.encode(_managerAddress, 'minRewardInShares')) - ); - record.penalty = getUint(keccak256(abi.encode(_managerAddress, 'penalty'))); - record.quorum = getUint(keccak256(abi.encode(_managerAddress, 'quorum'))); - record.reward = getUint(keccak256(abi.encode(_managerAddress, 'reward'))); - record.votingTokenAddress = getAddress( - keccak256(abi.encode(_managerAddress, 'votingTokenAddress')) - ); - } - - return record; - } - - function exists(address _managerAddress) external view returns (bool recordExists) { - return _exists(_managerAddress); - } - - /** - * @dev increments counter for the @param _managerAddress - * @param _managerAddress - address of the unique manager instance - */ - function incrementCounter(address _managerAddress) external { - setUint( - keccak256(abi.encode(_managerAddress, 'counter')), - SafeMath.add(getUint(keccak256(abi.encode(_managerAddress, 'counter'))), 1) - ); - } - - /** - * @dev serializes Instance struct - * @param record Instance - */ - function serialize(Instance memory record) external { - setBool(keccak256(abi.encode(record.managerAddress, 'hasPenalty')), record.hasPenalty); - setUint(keccak256(abi.encode(record.managerAddress, 'approval')), record.approval); - setUint(keccak256(abi.encode(record.managerAddress, 'counter')), record.counter); - setUint( - keccak256(abi.encode(record.managerAddress, 'maxSharesPerTokenHolder')), - record.maxSharesPerTokenHolder - ); - setUint( - keccak256(abi.encode(record.managerAddress, 'minBlocksForPenalty')), - record.minBlocksForPenalty - ); - setUint( - keccak256(abi.encode(record.managerAddress, 'minDurationInBlocks')), - record.minDurationInBlocks - ); - setUint( - keccak256(abi.encode(record.managerAddress, 'minPenaltyInShares')), - record.minPenaltyInShares - ); - setUint( - keccak256(abi.encode(record.managerAddress, 'minRewardInShares')), - record.minRewardInShares - ); - setUint( - keccak256(abi.encode(record.managerAddress, 'minSharesToCreate')), - record.minSharesToCreate - ); - setUint(keccak256(abi.encode(record.managerAddress, 'penalty')), record.penalty); - setUint(keccak256(abi.encode(record.managerAddress, 'quorum')), record.quorum); - setUint(keccak256(abi.encode(record.managerAddress, 'reward')), record.reward); - setAddress( - keccak256(abi.encode(record.managerAddress, 'votingTokenAddress')), - record.votingTokenAddress - ); - - setBool(keccak256(abi.encode(record.managerAddress, 'exists')), true); - } - - function _exists(address _managerAddress) internal view returns (bool recordExists) { - return getBool(keccak256(abi.encode(_managerAddress, 'exists'))); - } -} diff --git a/src/modules/TransactionalVote/models/Vote.sol b/src/modules/TransactionalVote/models/Vote.sol deleted file mode 100644 index fcd6108..0000000 --- a/src/modules/TransactionalVote/models/Vote.sol +++ /dev/null @@ -1,273 +0,0 @@ -// SPDX-License-Identifier: GPLv3 -pragma solidity 0.7.2; -pragma experimental ABIEncoderV2; - -import '../Operation.sol'; -import './Settings.sol'; - -import '../../../models/EternalModel.sol'; -import '../../../libraries/SafeMath.sol'; - -/// @author ElasticDAO - https://ElasticDAO.org -/// @notice This contract is used for storing information vote data -/// @dev ElasticDAO network contracts can read/write from this contract -// Serialize -> Translation of data from the concerned struct to key-value pairs -/// Deserialize -> Translation of data from the key-value pairs to a struct -contract TransactionalVote is EternalModel { - mapping(bytes32 => Operation) operations; - - struct Instance { - address author; - address to; - address votingTokenAddress; - bool hasPenalty; - bool hasReachedQuorum; - bool isActive; - bool isApproved; - bool isExecuted; - bytes data; - string proposal; - uint256 abstainLambda; - uint256 approval; - uint256 approvalLambda; - uint256 baseGas; - uint256 endOnBlock; - uint256 index; - uint256 maxSharesPerTokenHolder; - uint256 minBlocksForPenalty; - uint256 minPenaltyInShares; - uint256 minRewardInShares; - uint256 noLambda; - uint256 penalty; - uint256 quorum; - uint256 quorumLambda; - uint256 reward; - uint256 safeTxGas; - uint256 startOnBlock; - uint256 value; - uint256 yesLambda; - Operation operation; - TransactionalVoteSettings.Instance settings; - } - - function deserialize(uint256 _index, TransactionalVoteSettings.Instance memory _settings) - external - view - returns (Instance memory record) - { - record.index = _index; - record.settings = _settings; - - if (_exists(_index, _settings)) { - record.abstainLambda = getUint( - keccak256(abi.encode(_index, _settings.managerAddress, 'abstainLambda')) - ); - record.approval = getUint( - keccak256(abi.encode(_index, _settings.managerAddress, 'approval')) - ); - record.approvalLambda = getUint( - keccak256(abi.encode(_index, _settings.managerAddress, 'approvalLambda')) - ); - record.author = getAddress(keccak256(abi.encode(_index, _settings.managerAddress, 'author'))); - record.baseGas = getUint(keccak256(abi.encode(_index, _settings.managerAddress, 'baseGas'))); - record.data = getBytes(keccak256(abi.encode(_index, _settings.managerAddress, 'data'))); - record.endOnBlock = getUint( - keccak256(abi.encode(_index, _settings.managerAddress, 'endOnBlock')) - ); - record.hasPenalty = getBool( - keccak256(abi.encode(_index, _settings.managerAddress, 'hasPenalty')) - ); - record.hasReachedQuorum = getBool( - keccak256(abi.encode(_index, _settings.managerAddress, 'hasReachedQuorum')) - ); - record.isActive = getBool( - keccak256(abi.encode(_index, _settings.managerAddress, 'isActive')) - ); - record.isApproved = getBool( - keccak256(abi.encode(_index, _settings.managerAddress, 'isApproved')) - ); - record.isExecuted = getBool( - keccak256(abi.encode(_index, _settings.managerAddress, 'isExecuted')) - ); - record.maxSharesPerTokenHolder = getUint( - keccak256(abi.encode(_index, _settings.managerAddress, 'maxSharesPerTokenHolder')) - ); - record.minBlocksForPenalty = getUint( - keccak256(abi.encode(_index, _settings.managerAddress, 'minBlocksForPenalty')) - ); - record.minPenaltyInShares = getUint( - keccak256(abi.encode(_index, _settings.managerAddress, 'minPenaltyInShares')) - ); - record.minRewardInShares = getUint( - keccak256(abi.encode(_index, _settings.managerAddress, 'minRewardInShares')) - ); - record.noLambda = getUint( - keccak256(abi.encode(_index, _settings.managerAddress, 'noLambda')) - ); - record.penalty = getUint(keccak256(abi.encode(_index, _settings.managerAddress, 'penalty'))); - record.proposal = getString( - keccak256(abi.encode(_index, _settings.managerAddress, 'proposal')) - ); - record.quorum = getUint(keccak256(abi.encode(_index, _settings.managerAddress, 'quorum'))); - record.quorumLambda = getUint( - keccak256(abi.encode(_index, _settings.managerAddress, 'quorumLambda')) - ); - record.reward = getUint(keccak256(abi.encode(_index, _settings.managerAddress, 'reward'))); - record.safeTxGas = getUint( - keccak256(abi.encode(_index, _settings.managerAddress, 'safeTxGas')) - ); - record.startOnBlock = getUint( - keccak256(abi.encode(_index, _settings.managerAddress, 'startOnBlock')) - ); - record.to = getAddress(keccak256(abi.encode(_index, _settings.managerAddress, 'to'))); - record.value = getUint(keccak256(abi.encode(_index, _settings.managerAddress, 'value'))); - record.votingTokenAddress = getAddress( - keccak256(abi.encode(_index, _settings.managerAddress, 'votingTokenAddress')) - ); - record.yesLambda = getUint( - keccak256(abi.encode(_index, _settings.managerAddress, 'yesLambda')) - ); - } - - return record; - } - - function exists(uint256 _index, TransactionalVoteSettings.Instance memory _settings) - external - view - returns (bool recordExists) - { - return _exists(_index, _settings); - } - - /** - * @dev serializes Instance struct - * @param record Instance - */ - function serialize(Instance memory record) external { - setAddress( - keccak256(abi.encode(record.index, record.settings.managerAddress, 'author')), - record.author - ); - setAddress( - keccak256(abi.encode(record.index, record.settings.managerAddress, 'to')), - record.to - ); - setAddress( - keccak256(abi.encode(record.index, record.settings.managerAddress, 'votingTokenAddress')), - record.votingTokenAddress - ); - setBool( - keccak256(abi.encode(record.index, record.settings.managerAddress, 'hasPenalty')), - record.hasPenalty - ); - setBool( - keccak256(abi.encode(record.index, record.settings.managerAddress, 'hasReachedQuorum')), - record.hasReachedQuorum - ); - setBool( - keccak256(abi.encode(record.index, record.settings.managerAddress, 'isActive')), - record.isActive - ); - setBool( - keccak256(abi.encode(record.index, record.settings.managerAddress, 'isApproved')), - record.isApproved - ); - setBool( - keccak256(abi.encode(record.index, record.settings.managerAddress, 'isExecuted')), - record.isExecuted - ); - setString( - keccak256(abi.encode(record.index, record.settings.managerAddress, 'proposal')), - record.proposal - ); - setBytes( - keccak256(abi.encode(record.index, record.settings.managerAddress, 'data')), - record.data - ); - setUint( - keccak256(abi.encode(record.index, record.settings.managerAddress, 'abstainLambda')), - record.abstainLambda - ); - setUint( - keccak256(abi.encode(record.index, record.settings.managerAddress, 'approval')), - record.approval - ); - setUint( - keccak256(abi.encode(record.index, record.settings.managerAddress, 'approvalLambda')), - record.approvalLambda - ); - setUint( - keccak256(abi.encode(record.index, record.settings.managerAddress, 'baseGas')), - record.baseGas - ); - setUint( - keccak256(abi.encode(record.index, record.settings.managerAddress, 'endOnBlock')), - record.endOnBlock - ); - setUint( - keccak256( - abi.encode(record.index, record.settings.managerAddress, 'maxSharesPerTokenHolder') - ), - record.maxSharesPerTokenHolder - ); - setUint( - keccak256(abi.encode(record.index, record.settings.managerAddress, 'minBlocksForPenalty')), - record.minBlocksForPenalty - ); - setUint( - keccak256(abi.encode(record.index, record.settings.managerAddress, 'minPenaltyInShares')), - record.minPenaltyInShares - ); - setUint( - keccak256(abi.encode(record.index, record.settings.managerAddress, 'minRewardInShares')), - record.minRewardInShares - ); - setUint( - keccak256(abi.encode(record.index, record.settings.managerAddress, 'noLambda')), - record.noLambda - ); - setUint( - keccak256(abi.encode(record.index, record.settings.managerAddress, 'penalty')), - record.penalty - ); - setUint( - keccak256(abi.encode(record.index, record.settings.managerAddress, 'quorum')), - record.quorum - ); - setUint( - keccak256(abi.encode(record.index, record.settings.managerAddress, 'quorumLambda')), - record.quorumLambda - ); - setUint( - keccak256(abi.encode(record.index, record.settings.managerAddress, 'reward')), - record.reward - ); - setUint( - keccak256(abi.encode(record.index, record.settings.managerAddress, 'safeTxGas')), - record.safeTxGas - ); - setUint( - keccak256(abi.encode(record.index, record.settings.managerAddress, 'startOnBlock')), - record.startOnBlock - ); - setUint( - keccak256(abi.encode(record.index, record.settings.managerAddress, 'value')), - record.value - ); - setUint( - keccak256(abi.encode(record.index, record.settings.managerAddress, 'yesLambda')), - record.yesLambda - ); - - setBool(keccak256(abi.encode(record.index, record.settings.managerAddress, 'exists')), true); - } - - function _exists(uint256 _index, TransactionalVoteSettings.Instance memory _settings) - internal - view - returns (bool recordExists) - { - return getBool(keccak256(abi.encode(_index, _settings.managerAddress, 'exists'))); - } -} diff --git a/src/services/Configurator.sol b/src/services/Configurator.sol index 7689eb5..efdd432 100644 --- a/src/services/Configurator.sol +++ b/src/services/Configurator.sol @@ -56,13 +56,11 @@ contract Configurator { ecosystem.balanceMultipliersModelAddress = defaults.balanceMultipliersModelAddress; ecosystem.daoModelAddress = defaults.daoModelAddress; ecosystem.ecosystemModelAddress = defaults.ecosystemModelAddress; - ecosystem.elasticModuleModelAddress = defaults.elasticModuleModelAddress; ecosystem.tokenHolderModelAddress = defaults.tokenHolderModelAddress; ecosystem.tokenModelAddress = defaults.tokenModelAddress; // Services ecosystem.configuratorAddress = defaults.configuratorAddress; - ecosystem.registratorAddress = defaults.registratorAddress; ecosystemStorage.serialize(ecosystem); return ecosystem; diff --git a/src/services/Registrator.sol b/src/services/Registrator.sol deleted file mode 100644 index 88809f4..0000000 --- a/src/services/Registrator.sol +++ /dev/null @@ -1,24 +0,0 @@ -// SPDX-License-Identifier: GPLv3 -pragma solidity 0.7.2; -pragma experimental ABIEncoderV2; - -import '../models/Ecosystem.sol'; -import '../models/ElasticModule.sol'; - -/// @author ElasticDAO - https://ElasticDAO.org -/// @notice This contract is used for registering ElasticDAO modules -/// @dev ElasticDAO network contracts can read/write from this contract -contract Registrator { - function registerModule( - address _moduleAddress, - string memory _name, - Ecosystem.Instance memory _ecosystem - ) external { - ElasticModule elasticModuleStorage = ElasticModule(_ecosystem.elasticModuleModelAddress); - ElasticModule.Instance memory elasticModule; - elasticModule.dao = DAO(_ecosystem.daoModelAddress).deserialize(msg.sender, _ecosystem); - elasticModule.name = _name; - elasticModule.uuid = _moduleAddress; // TODO: Check against TBD whitelist - elasticModuleStorage.serialize(elasticModule); - } -} diff --git a/test/env.js b/test/env.js index dfba62f..9223c9a 100644 --- a/test/env.js +++ b/test/env.js @@ -10,14 +10,6 @@ module.exports = async () => { Factory, Token, TokenHolder, - InformationalVote, - InformationalVoteBallot, - InformationalVoteFactory, - InformationalVoteSettings, - TransactionalVote, - TransactionalVoteBallot, - TransactionalVoteFactory, - TransactionalVoteSettings, ] = await Promise.all([ deployments.get('Balance'), deployments.get('BalanceMultipliers'), @@ -27,14 +19,6 @@ module.exports = async () => { deployments.get('ElasticDAOFactory'), deployments.get('Token'), deployments.get('TokenHolder'), - deployments.get('InformationalVote'), - deployments.get('InformationalVoteBallot'), - deployments.get('InformationalVoteFactory'), - deployments.get('InformationalVoteSettings'), - deployments.get('TransactionalVote'), - deployments.get('TransactionalVoteBallot'), - deployments.get('TransactionalVoteFactory'), - deployments.get('TransactionalVoteSettings'), ]); const env = { elasticDAO: { @@ -46,21 +30,6 @@ module.exports = async () => { factoryAddress: Factory.address, tokenModelAddress: Token.address, tokenHolderModelAddress: TokenHolder.address, - - modules: { - informationalVote: { - ballotModelAddress: InformationalVoteBallot.address, - factoryAddress: InformationalVoteFactory.address, - settingsModelAddress: InformationalVoteSettings.address, - voteModelAddress: InformationalVote.address, - }, - transactionalVote: { - ballotModelAddress: TransactionalVoteBallot.address, - factoryAddress: TransactionalVoteFactory.address, - settingsModelAddress: TransactionalVoteSettings.address, - voteModelAddress: TransactionalVote.address, - }, - }, }, fees: { deploy: 0.25, diff --git a/test/informationalVoteModuleTests.js b/test/informationalVoteModuleTests.js deleted file mode 100644 index 326fe45..0000000 --- a/test/informationalVoteModuleTests.js +++ /dev/null @@ -1,243 +0,0 @@ -const { deployments } = require('hardhat'); -const { expect } = require('chai'); -const ethers = require('ethers'); -const hre = require('hardhat').ethers; -const SDK = require('@elastic-dao/sdk'); -const generateEnv = require('./env'); -const { - FIFTY_PERCENT, - ONE_HUNDRED, - ONE_TENTH, - THIRTY_FIVE_PERCENT, - TWO_HUNDREDTHS, -} = require('./constants'); - -describe('ElasticDAO: Informational Vote Module', () => { - let agent; - let Ecosystem; - let env; - let Ballot; - let ecosystem; - let elasticDAO; - let ElasticDAO; - let informationalVoteManager; - let InformationalVoteManager; - let provider; - let Settings; - let sdk; - let summoner; - let summoner1; - let summoner2; - let Token; - let Vote; - - beforeEach(async () => { - [agent, summoner, summoner1, summoner2] = await hre.getSigners(); - provider = hre.provider; - env = await generateEnv(); - sdk = SDK({ - account: agent.address, - contract: ({ abi, address }) => new ethers.Contract(address, abi, agent), - env, - provider, - signer: agent, - }); - - await deployments.fixture(); - - // setup needed contracts - Settings = await deployments.get('InformationalVoteSettings'); - Vote = await deployments.get('InformationalVote'); - Ecosystem = await deployments.get('Ecosystem'); - - const { deploy } = deployments; - - await deploy('ElasticDAO', { - from: agent.address, - args: [ - Ecosystem.address, - [summoner.address, summoner1.address, summoner2.address], - 'ElasticDAO', - 3, - ], - }); - ElasticDAO = await deployments.get('ElasticDAO'); - Token = await deployments.get('Token'); - - elasticDAO = new ethers.Contract(ElasticDAO.address, ElasticDAO.abi, agent); - await elasticDAO - .initializeToken( - 'Elastic Governance Token', - 'EGT', - ONE_TENTH, - TWO_HUNDREDTHS, - ONE_HUNDRED, - ethers.constants.WeiPerEther, - ) - .catch((error) => { - console.log(error); - }); - - elasticDAO = new ethers.Contract(ElasticDAO.address, ElasticDAO.abi, summoner); - ecosystem = await elasticDAO.getEcosystem(); - Ballot = await deployments.get('InformationalVoteBallot'); - InformationalVoteManager = await deploy('InformationalVoteManager', { - from: agent.address, - args: [Ballot.address, Settings.address, Vote.address], - }); - informationalVoteManager = new ethers.Contract( - InformationalVoteManager.address, - InformationalVoteManager.abi, - summoner, - ); - }); - - it('Should deploy and initialize InformationalVoteManager', async () => { - await informationalVoteManager.initialize(ecosystem.governanceTokenAddress, false, [ - THIRTY_FIVE_PERCENT, // approval - ethers.constants.WeiPerEther, // maxSharesPerTokenHolder - 1000, // minBlocksForPenalty - 500, // minDurationInBlocks - TWO_HUNDREDTHS, // minPenaltyInShares - TWO_HUNDREDTHS, // minRewardInShares - ethers.constants.WeiPerEther, // minSharesToCreate - ONE_TENTH, // penalty - FIFTY_PERCENT, // quoroum - ONE_TENTH, // reward - ]); - const settingsContract = new ethers.Contract(Settings.address, Settings.abi, summoner); - const settings = await settingsContract.deserialize(InformationalVoteManager.address); - - await expect(settings.votingTokenAddress).to.be.equal(ecosystem.governanceTokenAddress); - await expect(settings.hasPenalty).to.be.equal(false); - - await expect(settings.approval).to.be.equal(THIRTY_FIVE_PERCENT); - await expect(settings.maxSharesPerTokenHolder).to.be.equal(ethers.constants.WeiPerEther); - await expect(settings.minBlocksForPenalty).to.be.equal(1000); - await expect(settings.minDurationInBlocks).to.be.equal(500); - await expect(settings.minPenaltyInShares).to.be.equal(TWO_HUNDREDTHS); - await expect(settings.minRewardInShares).to.be.equal(TWO_HUNDREDTHS); - await expect(settings.minSharesToCreate).to.be.equal(ethers.constants.WeiPerEther); - await expect(settings.penalty).to.be.equal(ONE_TENTH); - await expect(settings.quorum).to.be.equal(FIFTY_PERCENT); - await expect(settings.reward).to.be.equal(ONE_TENTH); - }); - - describe('createVote(string memory _proposal, uint256 _endBlock)', () => { - it('Should not create a vote if VoteManager is not initialized', async () => { - await expect( - informationalVoteManager.createVote('This proposal should fail', 1), - ).to.be.revertedWith('ElasticDAO: InformationalVote Manager not initialized'); - }); - - it('Should not create a vote if not enough shares to create a vote', async () => { - await informationalVoteManager.initialize(ecosystem.governanceTokenAddress, true, [ - THIRTY_FIVE_PERCENT, // approval - ethers.constants.WeiPerEther, // maxSharesPerTokenHolder - 1000, // minBlocksForPenalty - 500, // minDurationInBlocks - TWO_HUNDREDTHS, // minPenaltyInShares - TWO_HUNDREDTHS, // minRewardInShares - ethers.constants.WeiPerEther, // minSharesToCreate - ONE_TENTH, // penalty - FIFTY_PERCENT, // quoroum - ONE_TENTH, // reward - ]); - - await expect( - informationalVoteManager.createVote('This proposal should fail', 1), - ).to.be.revertedWith('ElasticDAO: Not enough shares to create vote'); - }); - - it('Should not create a vote if the duration is too short', async () => { - await informationalVoteManager.initialize(ecosystem.governanceTokenAddress, true, [ - THIRTY_FIVE_PERCENT, // approval - ethers.constants.WeiPerEther, // maxSharesPerTokenHolder - 1000, // minBlocksForPenalty - 500, // minDurationInBlocks - TWO_HUNDREDTHS, // minPenaltyInShares - TWO_HUNDREDTHS, // minRewardInShares - ethers.constants.WeiPerEther, // minSharesToCreate - ONE_TENTH, // penalty - FIFTY_PERCENT, // quoroum - ONE_TENTH, // reward - ]); - - const tokenStorage = new ethers.Contract(Token.address, Token.abi, summoner); - const token = await tokenStorage.deserialize(ecosystem.governanceTokenAddress, ecosystem); - - await elasticDAO.seedSummoning({ value: ethers.constants.WeiPerEther }); - await elasticDAO.summon(token.maxLambdaPurchase); - - await expect( - informationalVoteManager.createVote('This proposal should fail', 100), - ).to.be.revertedWith('ElasticDAO: InformationalVote period too short'); - }); - - it('Should create a vote', async () => { - await informationalVoteManager.initialize(ecosystem.governanceTokenAddress, true, [ - THIRTY_FIVE_PERCENT, // approval - ethers.constants.WeiPerEther, // maxSharesPerTokenHolder - 1000, // minBlocksForPenalty - 500, // minDurationInBlocks - TWO_HUNDREDTHS, // minPenaltyInShares - TWO_HUNDREDTHS, // minRewardInShares - ethers.constants.WeiPerEther, // minSharesToCreate - ONE_TENTH, // penalty - FIFTY_PERCENT, // quoroum - ONE_TENTH, // reward - ]); - - const settingsContract = new ethers.Contract(Settings.address, Settings.abi, summoner); - const settings = await settingsContract.deserialize(InformationalVoteManager.address); - - elasticDAO.initializeModule(informationalVoteManager.address, 'informationalVoteManager'); - - const tokenStorage = new ethers.Contract(Token.address, Token.abi, summoner); - const token = await tokenStorage.deserialize(ecosystem.governanceTokenAddress, ecosystem); - - await elasticDAO.seedSummoning({ value: ethers.constants.WeiPerEther }); - await elasticDAO.summon(token.maxLambdaPurchase); - - await informationalVoteManager.functions.createVote('First vote should be created', 1000); - await informationalVoteManager.functions.createVote('Second vote should be created', 1000); - - const voteStorage = new ethers.Contract(Vote.address, Vote.abi, summoner); - - expect(await voteStorage.exists(0, settings)).to.equal(true); - expect(await voteStorage.exists(1, settings)).to.equal(true); - - const voteRecord1 = await voteStorage.deserialize(0, settings); - const voteRecord2 = await voteStorage.deserialize(1, settings); - expect(voteRecord1.proposal).to.equal('First vote should be created'); - expect(voteRecord2.proposal).to.equal('Second vote should be created'); - }); - }); - - describe('Factory', () => { - it('Should deploy the Manager of the voteModule using the Factory', async () => { - const ivManager = await sdk.modules.informationalVote.informationalVoteFactory.deployManager( - env.elasticDAO.modules.informationalVote.ballotModelAddress, - elasticDAO.address, - env.elasticDAO.modules.informationalVote.settingsModelAddress, - env.elasticDAO.modules.informationalVote.voteModelAddress, - ecosystem.governanceTokenAddress, - true, - [ - 0.5, // approval - 1, // maxSharesPerTokenHolder - 50, // minBlocksForPenalty - 10, // minDurationInBlocks - 0.1, // minPenaltyInShares - 0.1, // minRewardInShares - 0.5, // minSharesToCreate - 0.1, // penalty - 0.6, // quoroum - 0.1, // reward - ], - ); - - expect(ivManager.address).to.not.equal(undefined); - }); - }); -}); From 0b1d47114522b0053c581b5771b937f7db5e5828 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Wed, 20 Jan 2021 20:22:15 +0200 Subject: [PATCH 002/118] fixes tests --- test/ecosystemTests.js | 6 ------ test/env.js | 3 --- 2 files changed, 9 deletions(-) diff --git a/test/ecosystemTests.js b/test/ecosystemTests.js index 480c84c..8e9f6a6 100644 --- a/test/ecosystemTests.js +++ b/test/ecosystemTests.js @@ -11,8 +11,6 @@ describe('ElasticDAO: Ecosystem Model', () => { let Dao; let Ecosystem; let ecosystemStorage; - let ElasticModule; - let Registrator; let TokenHolder; let Token; @@ -28,8 +26,6 @@ describe('ElasticDAO: Ecosystem Model', () => { Dao = await deployments.get('DAO'); Ecosystem = await deployments.get('Ecosystem'); ecosystemStorage = new ethers.Contract(Ecosystem.address, Ecosystem.abi, agent); - ElasticModule = await deployments.get('ElasticModule'); - Registrator = await deployments.get('Registrator'); TokenHolder = await deployments.get('TokenHolder'); Token = await deployments.get('Token'); }); @@ -43,9 +39,7 @@ describe('ElasticDAO: Ecosystem Model', () => { expect(record.daoAddress).to.equal(ethers.constants.AddressZero); expect(record.daoModelAddress).to.equal(Dao.address); expect(record.ecosystemModelAddress).to.equal(Ecosystem.address); - expect(record.elasticModuleModelAddress).to.equal(ElasticModule.address); expect(record.governanceTokenAddress).to.equal(ethers.constants.AddressZero); - expect(record.registratorAddress).to.equal(Registrator.address); expect(record.tokenHolderModelAddress).to.equal(TokenHolder.address); expect(record.tokenModelAddress).to.equal(Token.address); }); diff --git a/test/env.js b/test/env.js index 9223c9a..877e73e 100644 --- a/test/env.js +++ b/test/env.js @@ -6,7 +6,6 @@ module.exports = async () => { BalanceMultipliers, DAO, Ecosystem, - ElasticModule, Factory, Token, TokenHolder, @@ -15,7 +14,6 @@ module.exports = async () => { deployments.get('BalanceMultipliers'), deployments.get('DAO'), deployments.get('Ecosystem'), - deployments.get('ElasticModule'), deployments.get('ElasticDAOFactory'), deployments.get('Token'), deployments.get('TokenHolder'), @@ -26,7 +24,6 @@ module.exports = async () => { balanceMultipliersModelAddress: BalanceMultipliers.address, daoModelAddress: DAO.address, ecosystemModelAddress: Ecosystem.address, - elasticModuleModelAddress: ElasticModule.address, factoryAddress: Factory.address, tokenModelAddress: Token.address, tokenHolderModelAddress: TokenHolder.address, From bd64d871b6a6af3e633b3ecdffdd4f478096287f Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Wed, 20 Jan 2021 20:22:50 +0200 Subject: [PATCH 003/118] correct version number --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 23a27bb..9bddda1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "contracts", - "version": "1.0.0", + "version": "0.9.0", "description": "Elastic DAO Contracts", "main": "index.js", "repository": "git@github.com:elasticdao/contracts.git", From 38839d0bdf924403496edf60c42edd633cebef43 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Fri, 22 Jan 2021 16:02:57 +0200 Subject: [PATCH 004/118] fixes failing tests with package upgrades --- package.json | 43 +- src/core/ElasticDAO.sol | 65 +- src/core/ElasticDAOFactory.sol | 8 +- src/models/Balance.sol | 12 +- src/tokens/ElasticGovernanceToken.sol | 16 +- yarn.lock | 5538 ++++++++----------------- 6 files changed, 1907 insertions(+), 3775 deletions(-) diff --git a/package.json b/package.json index 9bddda1..65f9773 100644 --- a/package.json +++ b/package.json @@ -26,31 +26,30 @@ }, "dependencies": { "@elastic-dao/sdk": "0.0.9", - "@nomiclabs/hardhat-ethers": "^2.0.0", - "@nomiclabs/hardhat-etherscan": "^2.0.1", - "@nomiclabs/hardhat-waffle": "^2.0.0", - "bignumber.js": "^9.0.1", + "@nomiclabs/hardhat-ethers": "2.0.1", + "@nomiclabs/hardhat-etherscan": "2.1.0", + "@nomiclabs/hardhat-waffle": "2.0.1", + "bignumber.js": "9.0.1", "dotenv": "^8.2.0", - "ethereum-waffle": "^3.0.2", - "ethers": "^5.0.8", - "hardhat": "^2.0.0", - "hardhat-contract-sizer": "^2.0.2", - "hardhat-deploy": "^0.7.0-beta.28", - "hardhat-gas-reporter": "^1.0.1", - "scrypt": "^6.0.3", + "ethereum-waffle": "3.2.1", + "ethers": "5.0.26", + "hardhat": "2.0.8", + "hardhat-contract-sizer": "2.0.2", + "hardhat-deploy": "^0.7.0-beta.44", + "hardhat-gas-reporter": "1.0.4", + "scrypt": "6.0.3", "solc": "0.7.2" }, "devDependencies": { - "chai": "^4.2.0", - "eslint": "^7.9.0", - "eslint-config-airbnb-base": "^14.2.0", - "eslint-plugin-import": "^2.22.0", - "eslint-plugin-mocha": "^8.0.0", - "mocha": "^8.1.1", - "prettier": "^2.1.1", - "prettier-plugin-solidity": "^1.0.0-alpha.57", - "rollup-plugin-inject": "^3.0.2", - "solhint": "^3.2.0", - "solidity-coverage": "^0.7.10" + "chai": "4.2.0", + "eslint": "7.18.0", + "eslint-config-airbnb-base": "14.2.1", + "eslint-plugin-import": "2.22.1", + "eslint-plugin-mocha": "8.0.0", + "mocha": "8.2.1", + "prettier": "2.2.1", + "prettier-plugin-solidity": "1.0.0-beta.3", + "solhint": "3.3.2", + "solidity-coverage": "0.7.14" } } diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index d1218cf..b199825 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -25,10 +25,8 @@ contract ElasticDAO { } modifier onlyAfterTokenInitialized() { Ecosystem.Instance memory ecosystem = _getEcosystem(); - bool tokenInitialized = Token(_getEcosystem().tokenModelAddress).exists( - ecosystem.governanceTokenAddress, - ecosystem - ); + bool tokenInitialized = + Token(_getEcosystem().tokenModelAddress).exists(ecosystem.governanceTokenAddress, ecosystem); require(tokenInitialized, 'ElasticDAO: Please call initializeToken first'); _; } @@ -88,15 +86,16 @@ contract ElasticDAO { require(msg.sender == deployer, 'ElasticDAO: Only deployer can initialize the Token'); Ecosystem.Instance memory ecosystem = _getEcosystem(); - Token.Instance memory token = Configurator(ecosystem.configuratorAddress).buildToken( - _name, - _symbol, - _eByL, - _elasticity, - _k, - _maxLambdaPurchase, - ecosystem - ); + Token.Instance memory token = + Configurator(ecosystem.configuratorAddress).buildToken( + _name, + _symbol, + _eByL, + _elasticity, + _k, + _maxLambdaPurchase, + ecosystem + ); emit ElasticGovernanceTokenDeployed(token.uuid); } @@ -109,22 +108,24 @@ contract ElasticDAO { ); ElasticGovernanceToken tokenContract = ElasticGovernanceToken(token.uuid); - uint256 capitalDelta = ElasticMath.capitalDelta( - // at this stage address(this).balance has the eth present in it(before function join), - // along with msg.value - // hence msg.value is subtracted from capitalDelta because capitalDelta is calculated - // with the eth present in the contract prior to recieving msg.value - address(this).balance - msg.value, - tokenContract.totalSupply() - ); - uint256 deltaE = ElasticMath.deltaE( - _deltaLambda, - capitalDelta, - token.k, - token.elasticity, - token.lambda, - token.m - ); + uint256 capitalDelta = + ElasticMath.capitalDelta( + // at this stage address(this).balance has the eth present in it(before function join), + // along with msg.value + // hence msg.value is subtracted from capitalDelta because capitalDelta is calculated + // with the eth present in the contract prior to recieving msg.value + address(this).balance - msg.value, + tokenContract.totalSupply() + ); + uint256 deltaE = + ElasticMath.deltaE( + _deltaLambda, + capitalDelta, + token.k, + token.elasticity, + token.lambda, + token.m + ); require(deltaE == msg.value, 'ElasticDAO: Incorrect ETH amount'); @@ -164,10 +165,8 @@ contract ElasticDAO { Ecosystem.Instance memory ecosystem = _getEcosystem(); DAO daoContract = DAO(ecosystem.daoModelAddress); DAO.Instance memory dao = daoContract.deserialize(address(this), ecosystem); - Token.Instance memory token = Token(ecosystem.tokenModelAddress).deserialize( - ecosystem.governanceTokenAddress, - ecosystem - ); + Token.Instance memory token = + Token(ecosystem.tokenModelAddress).deserialize(ecosystem.governanceTokenAddress, ecosystem); ElasticGovernanceToken tokenContract = ElasticGovernanceToken(token.uuid); for (uint256 i = 0; i < dao.numberOfSummoners; i = SafeMath.add(i, 1)) { diff --git a/src/core/ElasticDAOFactory.sol b/src/core/ElasticDAOFactory.sol index cdf1a13..3307d0e 100644 --- a/src/core/ElasticDAOFactory.sol +++ b/src/core/ElasticDAOFactory.sol @@ -36,12 +36,8 @@ contract ElasticDAOFactory { uint256 _maxLambdaPurchase ) public payable { // create the DAO - ElasticDAO elasticDAO = new ElasticDAO( - ecosystemModelAddress, - _summoners, - _nameOfDAO, - _numberOfSummoners - ); + ElasticDAO elasticDAO = + new ElasticDAO(ecosystemModelAddress, _summoners, _nameOfDAO, _numberOfSummoners); // initialize the token elasticDAO.initializeToken(_nameOfToken, _symbol, _eByL, _elasticity, _k, _maxLambdaPurchase); diff --git a/src/models/Balance.sol b/src/models/Balance.sol index c1351bd..28a3e4c 100644 --- a/src/models/Balance.sol +++ b/src/models/Balance.sol @@ -38,12 +38,12 @@ contract Balance is EternalModel { record.token = _token; record.tokenHolder = _tokenHolder; - BalanceMultipliers.Instance memory balanceMultipliers = BalanceMultipliers( - record - .ecosystem - .balanceMultipliersModelAddress - ) - .deserialize(_blockNumber, record.ecosystem, record.token); + BalanceMultipliers.Instance memory balanceMultipliers = + BalanceMultipliers(record.ecosystem.balanceMultipliersModelAddress).deserialize( + _blockNumber, + record.ecosystem, + record.token + ); record.blockNumber = _blockNumber; record.k = balanceMultipliers.k; diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index 85b403f..a4db38d 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -41,7 +41,7 @@ contract ElasticGovernanceToken is IElasticToken { * This value changes when {approve} or {transferFrom} are called * @return uint256 */ - function allowance(address _owner, address _spender) external override view returns (uint256) { + function allowance(address _owner, address _spender) external view override returns (uint256) { return _allowances[_owner][_spender]; } @@ -70,7 +70,7 @@ contract ElasticGovernanceToken is IElasticToken { * @param _account - address of the account * @return uint256 */ - function balanceOf(address _account) external override view returns (uint256) { + function balanceOf(address _account) external view override returns (uint256) { Token.Instance memory token = _getToken(); TokenHolder.Instance memory tokenHolder = _getTokenHolder(_account); uint256 t = ElasticMath.t(tokenHolder.lambda, token.k, token.m); @@ -83,7 +83,7 @@ contract ElasticGovernanceToken is IElasticToken { * @param _account - address of the account * @return lambda uint256 - lambda is the number of shares */ - function balanceOfInShares(address _account) external override view returns (uint256 lambda) { + function balanceOfInShares(address _account) external view override returns (uint256 lambda) { TokenHolder.Instance memory tokenHolder = _getTokenHolder(_account); return tokenHolder.lambda; } @@ -96,8 +96,8 @@ contract ElasticGovernanceToken is IElasticToken { */ function balanceOfAt(address _account, uint256 _blockNumber) external - override view + override returns (uint256 t) { t = 0; @@ -116,8 +116,8 @@ contract ElasticGovernanceToken is IElasticToken { */ function balanceOfInSharesAt(address _account, uint256 _blockNumber) external - override view + override returns (uint256 lambda) { Balance.Instance memory balance = _balanceAt(_account, _blockNumber); @@ -216,7 +216,7 @@ contract ElasticGovernanceToken is IElasticToken { return _getToken().name; } - function numberOfTokenHolders() external override view returns (uint256) { + function numberOfTokenHolders() external view override returns (uint256) { return _getToken().numberOfTokenHolders; } @@ -238,12 +238,12 @@ contract ElasticGovernanceToken is IElasticToken { * t = ( lambda * m * k ) * @return uint256 - the value of t */ - function totalSupply() external override view returns (uint256) { + function totalSupply() external view override returns (uint256) { Token.Instance memory token = _getToken(); return ElasticMath.t(token.lambda, token.k, token.m); } - function totalSupplyInShares() external override view returns (uint256) { + function totalSupplyInShares() external view override returns (uint256) { Token.Instance memory token = _getToken(); return token.lambda; } diff --git a/yarn.lock b/yarn.lock index 079b08c..f72bfd4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,16 +3,16 @@ "@babel/code-frame@^7.0.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" - integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== dependencies: "@babel/highlight" "^7.10.4" "@babel/helper-validator-identifier@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" - integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" + integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== "@babel/highlight@^7.10.4": version "7.10.4" @@ -48,10 +48,10 @@ resolved "https://registry.yarnpkg.com/@ensdomains/resolver/-/resolver-0.2.4.tgz#c10fe28bf5efbf49bff4666d909aed0265efbc89" integrity sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA== -"@eslint/eslintrc@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.1.3.tgz#7d1a2b2358552cc04834c0979bd4275362e37085" - integrity sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA== +"@eslint/eslintrc@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.3.0.tgz#d736d6963d7003b6514e6324bec9c602ac340318" + integrity sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg== dependencies: ajv "^6.12.4" debug "^4.1.1" @@ -60,22 +60,22 @@ ignore "^4.0.6" import-fresh "^3.2.1" js-yaml "^3.13.1" - lodash "^4.17.19" + lodash "^4.17.20" minimatch "^3.0.4" strip-json-comments "^3.1.1" -"@ethereum-waffle/chai@^3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/chai/-/chai-3.0.2.tgz#5492398abbf2b64ec2524deac78777ee62d02d08" - integrity sha512-aXE6KqHmCX0aaSGqeaZP0EvhPou4Ii9g/x7u0oIuj7sYchDk09/TTeuMdFs4EKgdTc7nUpQSdpJ6GuO7pLoNbA== +"@ethereum-waffle/chai@^3.2.1": + version "3.2.1" + resolved "https://registry.yarnpkg.com/@ethereum-waffle/chai/-/chai-3.2.1.tgz#5cb542b2a323adf0bc2dda00f48b0eb85944d8ab" + integrity sha512-0aG946J1+2Gg7WnEjtwPEWe+xwLTeBTy6LpCnGecosMf3YINkaf9Xv3Sd7CrXBR88ihCoUhfzfmOloMHIAQPAg== dependencies: - "@ethereum-waffle/provider" "^3.0.2" + "@ethereum-waffle/provider" "^3.2.1" ethers "^5.0.0" -"@ethereum-waffle/compiler@^3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/compiler/-/compiler-3.0.2.tgz#26dd7e63369e3c2ba458d6a26c43afe98e1e200e" - integrity sha512-PV6vtaX9szv4aFd5lXqGgfEbWFOkk2975AUDYHZQERWd9e4oerb1FNjQeXBDlYUjBX2UQ1tLlQFkqud2jcBYBg== +"@ethereum-waffle/compiler@^3.2.1": + version "3.2.1" + resolved "https://registry.yarnpkg.com/@ethereum-waffle/compiler/-/compiler-3.2.1.tgz#612a9056285a94ce28eb57b895770ad10e438bf9" + integrity sha512-URSsbTp4g8HPHAaA4KiAD6Aya9WPx/TULfOr+YpjCJ6YWXqE9wwi3ubf9qJUQxu6W6PsiczBaQhVhpI9RLoVUA== dependencies: "@resolver-engine/imports" "^0.3.3" "@resolver-engine/imports-fs" "^0.3.3" @@ -86,723 +86,410 @@ node-fetch "^2.6.0" solc "^0.6.3" -"@ethereum-waffle/ens@^3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/ens/-/ens-3.0.2.tgz#0ace2f5efbcba79a763697830bf16260c0bd7460" - integrity sha512-XkOVIbUvMt5hl6ZHgceqI7smWUercCV0LQtUjXgXPTUfONsB6JSPqAE2H6cc4sXqn82Q3cPThderLvT5QNTyRA== +"@ethereum-waffle/ens@^3.2.1": + version "3.2.1" + resolved "https://registry.yarnpkg.com/@ethereum-waffle/ens/-/ens-3.2.1.tgz#9f369112d62f7aa88d010be4d133b6d0f5e8c492" + integrity sha512-dXv/Mb8EgEYOKv2jjmkFNFCmSjNv8nPk1Gaegc0J/KXWuTU6CBOhWet7YS5joGO8ORK21MvN2qVgcQj+FYw0Dw== dependencies: "@ensdomains/ens" "^0.4.4" "@ensdomains/resolver" "^0.2.4" ethers "^5.0.1" -"@ethereum-waffle/mock-contract@^3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/mock-contract/-/mock-contract-3.0.2.tgz#ba0ecdd872c1eedb75a223c20d3afbea32d843f6" - integrity sha512-a3THe64cR24TxgwU2Tmk8uwZDWGv9QCKUpEhKVVArxRIF800AKMZfhIF61liXMkSVQDgivtYsayNniYxM8M11Q== +"@ethereum-waffle/mock-contract@^3.2.1": + version "3.2.1" + resolved "https://registry.yarnpkg.com/@ethereum-waffle/mock-contract/-/mock-contract-3.2.1.tgz#bf5f63f61c9749eb3270108893a88ff161e68f58" + integrity sha512-39GMp/IqsHF+3j3XK38cWA+nX7Q6ABfMsYkuAjtfpTguTFQKXx2C1/VJZwGOyb4de2pl4bssmN37VEraB3NWbQ== dependencies: "@ethersproject/abi" "^5.0.1" ethers "^5.0.1" -"@ethereum-waffle/provider@^3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@ethereum-waffle/provider/-/provider-3.0.2.tgz#2416237ca97c1f7d8dfca990fe85c9f27d921f4d" - integrity sha512-jIbaW4mSBZmzIRUxBSuutwucdxXWOp5e3m16ds6PRnMBNd8civ9LwPM6RqwxC8pNTq/APMf6bFqLJo4UVW3PIg== +"@ethereum-waffle/provider@^3.2.1": + version "3.2.1" + resolved "https://registry.yarnpkg.com/@ethereum-waffle/provider/-/provider-3.2.1.tgz#d84c0603936f09afa69ecb671d56f527e9818e71" + integrity sha512-doG18hThqldsYcZIIO0YoiwV+ERx0dCVY6bkg4FKZtoymNelf15zNycb881c6QD9RnLuz6A2Jp9lmnrAD+IvYQ== dependencies: - "@ethereum-waffle/ens" "^3.0.2" + "@ethereum-waffle/ens" "^3.2.1" ethers "^5.0.1" ganache-core "^2.10.2" - -"@ethersproject/abi@5.0.9", "@ethersproject/abi@^5.0.5": - version "5.0.9" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.9.tgz#738c1c557e56d8f395a5a27caef9b0449bc85a10" - integrity sha512-ily2OufA2DTrxkiHQw5GqbkMSnNKuwZBqKsajtT0ERhZy1r9w2CpW1bmtRMIGzaqQxCdn/GEoFogexk72cBBZQ== - 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" - -"@ethersproject/abi@^5.0.0", "@ethersproject/abi@^5.0.0-beta.146", "@ethersproject/abi@^5.0.1", "@ethersproject/abi@^5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.2.tgz#7fe8f080aa1483fe32cd27bb5b8f2019266af1e2" - integrity sha512-Z+5f7xOgtRLu/W2l9Ry5xF7ehh9QVQ0m1vhynmTcS7DMfHgqTd1/PDFC62aw91ZPRCRZsYdZJu8ymokC5e1JSw== - dependencies: - "@ethersproject/address" "^5.0.0" - "@ethersproject/bignumber" "^5.0.0" - "@ethersproject/bytes" "^5.0.0" - "@ethersproject/constants" "^5.0.0" - "@ethersproject/hash" "^5.0.0" - "@ethersproject/keccak256" "^5.0.0" - "@ethersproject/logger" "^5.0.0" - "@ethersproject/properties" "^5.0.0" - "@ethersproject/strings" "^5.0.0" - -"@ethersproject/abstract-provider@5.0.7", "@ethersproject/abstract-provider@^5.0.4": - version "5.0.7" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.0.7.tgz#04ee3bfe43323384e7fecf6c774975b8dec4bdc9" - integrity sha512-NF16JGn6M0zZP5ZS8KtDL2Rh7yHxZbUjBIHLNHMm/0X0BephhjUWy8jqs/Zks6kDJRzNthgmPVy41Ec0RYWPYA== - dependencies: - "@ethersproject/bignumber" "^5.0.7" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/networks" "^5.0.3" - "@ethersproject/properties" "^5.0.3" - "@ethersproject/transactions" "^5.0.5" - "@ethersproject/web" "^5.0.6" - -"@ethersproject/abstract-provider@^5.0.0": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.0.2.tgz#9b4e8f4870f0691463e8d5b092c95dd5275c635d" - integrity sha512-U1s60+nG02x8FKNMoVNI6MG8SguWCoG9HJtwOqWZ38LBRMsDV4c0w4izKx98kcsN3wXw4U2/YAyJ9LlH7+/hkg== - dependencies: - "@ethersproject/bignumber" "^5.0.0" - "@ethersproject/bytes" "^5.0.0" - "@ethersproject/logger" "^5.0.0" - "@ethersproject/networks" "^5.0.0" - "@ethersproject/properties" "^5.0.0" - "@ethersproject/transactions" "^5.0.0" - "@ethersproject/web" "^5.0.0" - -"@ethersproject/abstract-signer@5.0.9", "@ethersproject/abstract-signer@^5.0.4", "@ethersproject/abstract-signer@^5.0.6": - version "5.0.9" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.0.9.tgz#238ddc06031aeb9dfceee2add965292d7dd1acbf" - integrity sha512-CM5UNmXQaA03MyYARFDDRjHWBxujO41tVle7glf5kHcQsDDULgqSVpkliLJMtPzZjOKFeCVZBHybTZDEZg5zzg== - dependencies: - "@ethersproject/abstract-provider" "^5.0.4" - "@ethersproject/bignumber" "^5.0.7" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/properties" "^5.0.3" - -"@ethersproject/abstract-signer@^5.0.0", "@ethersproject/abstract-signer@^5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.0.2.tgz#5776f888fda816de1d08ddb0e74778ecb9590f69" - integrity sha512-CzzXbeqKlgayE4YTnvvreGBG3n+HxakGXrxaGM6LjBZnOOIVSYi6HMFG8ZXls7UspRY4hvMrtnKEJKDCOngSBw== - dependencies: - "@ethersproject/abstract-provider" "^5.0.0" - "@ethersproject/bignumber" "^5.0.0" - "@ethersproject/bytes" "^5.0.0" - "@ethersproject/logger" "^5.0.0" - "@ethersproject/properties" "^5.0.0" - -"@ethersproject/address@5.0.8", "@ethersproject/address@^5.0.4", "@ethersproject/address@^5.0.5": + patch-package "^6.2.2" + postinstall-postinstall "^2.1.0" + +"@ethersproject/abi@5.0.0-beta.153": + version "5.0.0-beta.153" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.0-beta.153.tgz#43a37172b33794e4562999f6e2d555b7599a8eee" + integrity sha512-aXweZ1Z7vMNzJdLpR1CZUAIgnwjrZeUSvN9syCwlBaEBUFJmFY+HHnfuTI5vIhVs/mRkfJVrbEyl51JZQqyjAg== + dependencies: + "@ethersproject/address" ">=5.0.0-beta.128" + "@ethersproject/bignumber" ">=5.0.0-beta.130" + "@ethersproject/bytes" ">=5.0.0-beta.129" + "@ethersproject/constants" ">=5.0.0-beta.128" + "@ethersproject/hash" ">=5.0.0-beta.128" + "@ethersproject/keccak256" ">=5.0.0-beta.127" + "@ethersproject/logger" ">=5.0.0-beta.129" + "@ethersproject/properties" ">=5.0.0-beta.131" + "@ethersproject/strings" ">=5.0.0-beta.130" + +"@ethersproject/abi@5.0.10", "@ethersproject/abi@^5.0.0-beta.146", "@ethersproject/abi@^5.0.1", "@ethersproject/abi@^5.0.10", "@ethersproject/abi@^5.0.2": + version "5.0.10" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.10.tgz#c32baa919ad0e5cddabb2f3a8aed0eaeeed7fa4a" + integrity sha512-cfC3lGgotfxX3SMri4+CisOPwignoj/QGHW9J29spC4R4Qqcnk/SYuVkPFBMdLbvBp3f/pGiVqPNwont0TSXhg== + dependencies: + "@ethersproject/address" "^5.0.9" + "@ethersproject/bignumber" "^5.0.13" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/constants" "^5.0.8" + "@ethersproject/hash" "^5.0.10" + "@ethersproject/keccak256" "^5.0.7" + "@ethersproject/logger" "^5.0.8" + "@ethersproject/properties" "^5.0.7" + "@ethersproject/strings" "^5.0.8" + +"@ethersproject/abstract-provider@5.0.8", "@ethersproject/abstract-provider@^5.0.8": version "5.0.8" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.0.8.tgz#0c551659144a5a7643c6bea337149d410825298f" - integrity sha512-V87DHiZMZR6hmFYmoGaHex0D53UEbZpW75uj8AqPbjYUmi65RB4N2LPRcJXuWuN2R0Y2CxkvW6ArijWychr5FA== - dependencies: - "@ethersproject/bignumber" "^5.0.10" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/keccak256" "^5.0.3" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/rlp" "^5.0.3" - -"@ethersproject/address@^5.0.0", "@ethersproject/address@^5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.0.2.tgz#80d0ddfb7d4bd0d32657747fa4bdd2defef2e00a" - integrity sha512-+rz26RKj7ujGfQynys4V9VJRbR+wpC6eL8F22q3raWMH3152Ha31GwJPWzxE/bEA+43M/zTNVwY0R53gn53L2Q== - dependencies: - "@ethersproject/bignumber" "^5.0.0" - "@ethersproject/bytes" "^5.0.0" - "@ethersproject/keccak256" "^5.0.0" - "@ethersproject/logger" "^5.0.0" - "@ethersproject/rlp" "^5.0.0" - bn.js "^4.4.0" - -"@ethersproject/base64@5.0.6", "@ethersproject/base64@^5.0.3": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.0.6.tgz#26311ebf29ea3d0b9c300ccf3e1fdc44b7481516" - integrity sha512-HwrGn8YMiUf7bcdVvB4NJ+eWT0BtEFpDtrYxVXEbR7p/XBSJjwiR7DEggIiRvxbualMKg+EZijQWJ3az2li0uw== - dependencies: - "@ethersproject/bytes" "^5.0.4" - -"@ethersproject/base64@^5.0.0": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.0.2.tgz#48b3bb8d640a963bd8ee196cfeacd592155a0ca8" - integrity sha512-0FE5RH5cUDddOiQEDpWtyHjkSW4D5/rdJzA3KTZo8Fk5ab/Y8vdzqbamsXPyPsXU3gS+zCE5Qq4EKVOWlWLLTA== + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.0.8.tgz#880793c29bfed33dff4c2b2be7ecb9ba966d52c0" + integrity sha512-fqJXkewcGdi8LogKMgRyzc/Ls2js07yor7+g9KfPs09uPOcQLg7cc34JN+lk34HH9gg2HU0DIA5797ZR8znkfw== + dependencies: + "@ethersproject/bignumber" "^5.0.13" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/logger" "^5.0.8" + "@ethersproject/networks" "^5.0.7" + "@ethersproject/properties" "^5.0.7" + "@ethersproject/transactions" "^5.0.9" + "@ethersproject/web" "^5.0.12" + +"@ethersproject/abstract-signer@5.0.11", "@ethersproject/abstract-signer@^5.0.10", "@ethersproject/abstract-signer@^5.0.2": + version "5.0.11" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.0.11.tgz#675da9ec168905c60ee79a6da95f7157ca956f46" + integrity sha512-RKOgPSEYafknA62SrD3OCK42AllHE4YBfKYXyQeM+sBP7Nq3X5FpzeoY4uzC43P4wIhmNoTHCKQuwnX7fBqb6Q== dependencies: - "@ethersproject/bytes" "^5.0.0" + "@ethersproject/abstract-provider" "^5.0.8" + "@ethersproject/bignumber" "^5.0.13" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/logger" "^5.0.8" + "@ethersproject/properties" "^5.0.7" -"@ethersproject/basex@5.0.6", "@ethersproject/basex@^5.0.3": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.0.6.tgz#ab95c32e48288a3d868726463506641cb1e9fb6b" - integrity sha512-Y/8dowRxBF3bsKkqEp7XN4kcFFQ0o5xxP1YyopfqkXejaOEGiD7ToQdQ0pIZpAJ5GreW56oFOTDDSO6ZcUCNYg== +"@ethersproject/address@5.0.9", "@ethersproject/address@>=5.0.0-beta.128", "@ethersproject/address@^5.0.2", "@ethersproject/address@^5.0.9": + version "5.0.9" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.0.9.tgz#347ef30dc8243c682574a3f23ff63f73c8f8cbf1" + integrity sha512-gKkmbZDMyGbVjr8nA5P0md1GgESqSGH7ILIrDidPdNXBl4adqbuA3OAuZx/O2oGpL6PtJ9BDa0kHheZ1ToHU3w== dependencies: - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/properties" "^5.0.3" + "@ethersproject/bignumber" "^5.0.13" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/keccak256" "^5.0.7" + "@ethersproject/logger" "^5.0.8" + "@ethersproject/rlp" "^5.0.7" -"@ethersproject/basex@^5.0.0": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.0.2.tgz#13029ce0ad63674f4d4dbebf6763181fb22f0e6d" - integrity sha512-p4m2CeQqI9vma3XipRbP2iDf6zTsbroE0MEXBAYXidsoJQSvePKrC6MVRKfTzfcHej1b9wfmjVBzqhqn3FRhIA== +"@ethersproject/base64@5.0.7", "@ethersproject/base64@^5.0.7": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.0.7.tgz#d5da73699b4a33dc92bd8e5056ad1880b262057d" + integrity sha512-S5oh5DVfCo06xwJXT8fQC68mvJfgScTl2AXvbYMsHNfIBTDb084Wx4iA9MNlEReOv6HulkS+gyrUM/j3514rSw== dependencies: - "@ethersproject/bytes" "^5.0.0" - "@ethersproject/properties" "^5.0.0" + "@ethersproject/bytes" "^5.0.9" -"@ethersproject/bignumber@5.0.12", "@ethersproject/bignumber@^5.0.10", "@ethersproject/bignumber@^5.0.7", "@ethersproject/bignumber@^5.0.8": - version "5.0.12" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.0.12.tgz#fe4a78667d7cb01790f75131147e82d6ea7e7cba" - integrity sha512-mbFZjwthx6vFlHG9owXP/C5QkNvsA+xHpDCkPPPdG2n1dS9AmZAL5DI0InNLid60rQWL3MXpEl19tFmtL7Q9jw== +"@ethersproject/basex@5.0.7", "@ethersproject/basex@^5.0.7": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.0.7.tgz#2f7026b12c9dee6cdc7b7bf1805461836e635495" + integrity sha512-OsXnRsujGmYD9LYyJlX+cVe5KfwgLUbUJrJMWdzRWogrygXd5HvGd7ygX1AYjlu1z8W/+t2FoQnczDR/H2iBjA== dependencies: - "@ethersproject/bytes" "^5.0.8" - "@ethersproject/logger" "^5.0.5" - bn.js "^4.4.0" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/properties" "^5.0.7" -"@ethersproject/bignumber@^5.0.0", "@ethersproject/bignumber@^5.0.5": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.0.5.tgz#31bd7e75aad46ace345fae69b1f5bb120906af1b" - integrity sha512-24ln7PV0g8ZzjcVZiLW9Wod0i+XCmK6zKkAaxw5enraTIT1p7gVOcSXFSzNQ9WYAwtiFQPvvA+TIO2oEITZNJA== +"@ethersproject/bignumber@5.0.13", "@ethersproject/bignumber@>=5.0.0-beta.130", "@ethersproject/bignumber@^5.0.13", "@ethersproject/bignumber@^5.0.5": + version "5.0.13" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.0.13.tgz#a5466412b3b80104097b9c694f6ae827df4353fe" + integrity sha512-b89bX5li6aK492yuPP5mPgRVgIxxBP7ksaBtKX5QQBsrZTpNOjf/MR4CjcUrAw8g+RQuD6kap9lPjFgY4U1/5A== dependencies: - "@ethersproject/bytes" "^5.0.0" - "@ethersproject/logger" "^5.0.0" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/logger" "^5.0.8" bn.js "^4.4.0" -"@ethersproject/bytes@5.0.8", "@ethersproject/bytes@^5.0.4", "@ethersproject/bytes@^5.0.8": - version "5.0.8" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.0.8.tgz#cf1246a6a386086e590063a4602b1ffb6cc43db1" - integrity sha512-O+sJNVGzzuy51g+EMK8BegomqNIg+C2RO6vOt0XP6ac4o4saiq69FnjlsrNslaiMFVO7qcEHBsWJ9hx1tj1lMw== - dependencies: - "@ethersproject/logger" "^5.0.5" - -"@ethersproject/bytes@^5.0.0", "@ethersproject/bytes@^5.0.2": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.0.3.tgz#b3769963ae0188a35713d343890a903bda20af9c" - integrity sha512-AyPMAlY+Amaw4Zfp8OAivm1xYPI8mqiUYmEnSUk1CnS2NrQGHEMmFJFiOJdS3gDDpgSOFhWIjZwxKq2VZpqNTA== - dependencies: - "@ethersproject/logger" "^5.0.0" - -"@ethersproject/constants@5.0.7", "@ethersproject/constants@^5.0.4": - version "5.0.7" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.0.7.tgz#44ff979e5781b17c8c6901266896c3ee745f4e7e" - integrity sha512-cbQK1UpE4hamB52Eg6DLhJoXeQ1plSzekh5Ujir1xdREdwdsZPPXKczkrWqBBR0KyywJZHN/o/hj0w8j7scSGg== - dependencies: - "@ethersproject/bignumber" "^5.0.7" - -"@ethersproject/constants@^5.0.0": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.0.2.tgz#f7ac0b320e2bbec1a5950da075015f8bc4e8fed1" - integrity sha512-nNoVlNP6bgpog7pQ2EyD1xjlaXcy1Cl4kK5v1KoskHj58EtB6TK8M8AFGi3GgHTdMldfT4eN3OsoQ/CdOTVNFA== +"@ethersproject/bytes@5.0.9", "@ethersproject/bytes@>=5.0.0-beta.129", "@ethersproject/bytes@^5.0.2", "@ethersproject/bytes@^5.0.9": + version "5.0.9" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.0.9.tgz#2748247402ad20df69f3a3e935dc7b58c0d75c08" + integrity sha512-k+17ZViDtAugC0s7HM6rdsTWEdIYII4RPCDkPEuxKc6i40Bs+m6tjRAtCECX06wKZnrEoR9pjOJRXHJ/VLoOcA== dependencies: - "@ethersproject/bignumber" "^5.0.0" + "@ethersproject/logger" "^5.0.8" -"@ethersproject/contracts@5.0.8": +"@ethersproject/constants@5.0.8", "@ethersproject/constants@>=5.0.0-beta.128", "@ethersproject/constants@^5.0.8": version "5.0.8" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.0.8.tgz#71d3ba16853a1555be2e161a6741df186f81c73b" - integrity sha512-PecBL4vnsrpuks2lzzkRsOts8csJy338HNDKDIivbFmx92BVzh3ohOOv3XsoYPSXIHQvobF959W+aSk3RCZL/g== - dependencies: - "@ethersproject/abi" "^5.0.5" - "@ethersproject/abstract-provider" "^5.0.4" - "@ethersproject/abstract-signer" "^5.0.4" - "@ethersproject/address" "^5.0.4" - "@ethersproject/bignumber" "^5.0.7" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/constants" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/properties" "^5.0.3" - -"@ethersproject/contracts@^5.0.0", "@ethersproject/contracts@^5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.0.2.tgz#f19ed8335ceeb6abb60f5d45641f0a2a62b6fbc5" - integrity sha512-Ud3oW8mBNIWE+WHRjvwVEwfvshn7lfYWSSKG0fPSb6baRN9mLOoNguX+VIv3W5Sne9w2utnBmxLF2ESXitw64A== - dependencies: - "@ethersproject/abi" "^5.0.0" - "@ethersproject/abstract-provider" "^5.0.0" - "@ethersproject/abstract-signer" "^5.0.0" - "@ethersproject/address" "^5.0.0" - "@ethersproject/bignumber" "^5.0.0" - "@ethersproject/bytes" "^5.0.0" - "@ethersproject/constants" "^5.0.0" - "@ethersproject/logger" "^5.0.0" - "@ethersproject/properties" "^5.0.0" - -"@ethersproject/hash@5.0.9", "@ethersproject/hash@^5.0.4": - version "5.0.9" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.0.9.tgz#81252a848185b584aa600db4a1a68cad9229a4d4" - integrity sha512-e8/i2ZDeGSgCxXT0vocL54+pMbw5oX5fNjb2E3bAIvdkh5kH29M7zz1jHu1QDZnptIuvCZepIbhUH8lxKE2/SQ== - dependencies: - "@ethersproject/abstract-signer" "^5.0.6" - "@ethersproject/address" "^5.0.5" - "@ethersproject/bignumber" "^5.0.8" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/keccak256" "^5.0.3" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/properties" "^5.0.4" - "@ethersproject/strings" "^5.0.4" - -"@ethersproject/hash@^5.0.0": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.0.2.tgz#6d69558786961836d530b8b4a8714eac5388aec7" - integrity sha512-dWGvNwmVRX2bxoQQ3ciMw46Vzl1nqfL+5R8+2ZxsRXD3Cjgw1dL2mdjJF7xMMWPvPdrlhKXWSK0gb8VLwHZ8Cw== + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.0.8.tgz#50f2e23f48c0d1d0de3759ea79b68ec3e06435a1" + integrity sha512-sCc73pFBsl59eDfoQR5OCEZCRv5b0iywadunti6MQIr5lt3XpwxK1Iuzd8XSFO02N9jUifvuZRrt0cY0+NBgTg== dependencies: - "@ethersproject/bytes" "^5.0.0" - "@ethersproject/keccak256" "^5.0.0" - "@ethersproject/logger" "^5.0.0" - "@ethersproject/strings" "^5.0.0" + "@ethersproject/bignumber" "^5.0.13" -"@ethersproject/hdnode@5.0.7", "@ethersproject/hdnode@^5.0.4": - version "5.0.7" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.0.7.tgz#c7bce94a337ea65e37c46bab09a83e1c1a555d99" - integrity sha512-89tphqlji4y/LNE1cSaMQ3hrBtJ4lO1qWGi2hn54LiHym85DTw+zAKbA8QgmdSdJDLGR/kc9VHaIPQ+vZQ2LkQ== - dependencies: - "@ethersproject/abstract-signer" "^5.0.4" - "@ethersproject/basex" "^5.0.3" - "@ethersproject/bignumber" "^5.0.7" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/pbkdf2" "^5.0.3" - "@ethersproject/properties" "^5.0.3" - "@ethersproject/sha2" "^5.0.3" - "@ethersproject/signing-key" "^5.0.4" - "@ethersproject/strings" "^5.0.4" - "@ethersproject/transactions" "^5.0.5" - "@ethersproject/wordlists" "^5.0.4" - -"@ethersproject/hdnode@^5.0.0": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.0.2.tgz#c4f2152590a64822d0c0feb90f09cc247af657e0" - integrity sha512-QAUI5tfseTFqv00Vnbwzofqse81wN9TaL+x5GufTHIHJXgVdguxU+l39E3VYDCmO+eVAA6RCn5dJgeyra+PU2g== - dependencies: - "@ethersproject/abstract-signer" "^5.0.0" - "@ethersproject/basex" "^5.0.0" - "@ethersproject/bignumber" "^5.0.0" - "@ethersproject/bytes" "^5.0.0" - "@ethersproject/logger" "^5.0.0" - "@ethersproject/pbkdf2" "^5.0.0" - "@ethersproject/properties" "^5.0.0" - "@ethersproject/sha2" "^5.0.0" - "@ethersproject/signing-key" "^5.0.0" - "@ethersproject/strings" "^5.0.0" - "@ethersproject/transactions" "^5.0.0" - "@ethersproject/wordlists" "^5.0.0" - -"@ethersproject/json-wallets@5.0.9", "@ethersproject/json-wallets@^5.0.6": +"@ethersproject/contracts@5.0.9", "@ethersproject/contracts@^5.0.2": version "5.0.9" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.0.9.tgz#2e1708c2854c4ab764e35920bd1f44c948b95434" - integrity sha512-EWuFvJd8nu90dkmJwmJddxOYCvFvMkKBsZi8rxTme2XEZsHKOFnybVkoL23u7ZtApuEfTKmVcR2PTwgZwqDsKw== - dependencies: - "@ethersproject/abstract-signer" "^5.0.4" - "@ethersproject/address" "^5.0.4" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/hdnode" "^5.0.4" - "@ethersproject/keccak256" "^5.0.3" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/pbkdf2" "^5.0.3" - "@ethersproject/properties" "^5.0.3" - "@ethersproject/random" "^5.0.3" - "@ethersproject/strings" "^5.0.4" - "@ethersproject/transactions" "^5.0.5" - aes-js "3.0.0" - scrypt-js "3.0.1" - -"@ethersproject/json-wallets@^5.0.0": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.0.4.tgz#e09bf2d34279c6dd2b4a4d4c44db65471bacc68b" - integrity sha512-jqtb+X3rJXWG/w+Qyr7vq1V+fdc5jiLlyc6akwI3SQIHTfcuuyF+eZRd9u2/455urNwV3nuCsnrgxs2NrtHHIw== - dependencies: - "@ethersproject/abstract-signer" "^5.0.0" - "@ethersproject/address" "^5.0.0" - "@ethersproject/bytes" "^5.0.0" - "@ethersproject/hdnode" "^5.0.0" - "@ethersproject/keccak256" "^5.0.0" - "@ethersproject/logger" "^5.0.0" - "@ethersproject/pbkdf2" "^5.0.0" - "@ethersproject/properties" "^5.0.0" - "@ethersproject/random" "^5.0.0" - "@ethersproject/strings" "^5.0.0" - "@ethersproject/transactions" "^5.0.0" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.0.9.tgz#6c67c0ebe20ee1af903f7f43568401023334a181" + integrity sha512-CCTxVeDh6sjdSEbjzONhtwPjECvaHE62oGkY8M7kP0CHmgLD2SEGel0HZib8e5oQKRKGly9AKcUFW4g3rQ0AQw== + dependencies: + "@ethersproject/abi" "^5.0.10" + "@ethersproject/abstract-provider" "^5.0.8" + "@ethersproject/abstract-signer" "^5.0.10" + "@ethersproject/address" "^5.0.9" + "@ethersproject/bignumber" "^5.0.13" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/constants" "^5.0.8" + "@ethersproject/logger" "^5.0.8" + "@ethersproject/properties" "^5.0.7" + +"@ethersproject/hash@5.0.10", "@ethersproject/hash@>=5.0.0-beta.128", "@ethersproject/hash@^5.0.10": + version "5.0.10" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.0.10.tgz#41bf37428e8ddbc229ffd81c47af667174cb491a" + integrity sha512-Tf0bvs6YFhw28LuHnhlDWyr0xfcDxSXdwM4TcskeBbmXVSKLv3bJQEEEBFUcRX0fJuslR3gCVySEaSh7vuMx5w== + dependencies: + "@ethersproject/abstract-signer" "^5.0.10" + "@ethersproject/address" "^5.0.9" + "@ethersproject/bignumber" "^5.0.13" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/keccak256" "^5.0.7" + "@ethersproject/logger" "^5.0.8" + "@ethersproject/properties" "^5.0.7" + "@ethersproject/strings" "^5.0.8" + +"@ethersproject/hdnode@5.0.8", "@ethersproject/hdnode@^5.0.8": + version "5.0.8" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.0.8.tgz#2b52ede921cfbce8de49da774ec5a74025fc2bb1" + integrity sha512-Mscpjd7BBjxYSWghaNMwV0xrBBkOoCq6YEPRm9MgE24CiBlzzbfEB5DGq6hiZqhQaxPkdCUtKKqZi3nt9hx43g== + dependencies: + "@ethersproject/abstract-signer" "^5.0.10" + "@ethersproject/basex" "^5.0.7" + "@ethersproject/bignumber" "^5.0.13" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/logger" "^5.0.8" + "@ethersproject/pbkdf2" "^5.0.7" + "@ethersproject/properties" "^5.0.7" + "@ethersproject/sha2" "^5.0.7" + "@ethersproject/signing-key" "^5.0.8" + "@ethersproject/strings" "^5.0.8" + "@ethersproject/transactions" "^5.0.9" + "@ethersproject/wordlists" "^5.0.8" + +"@ethersproject/json-wallets@5.0.10", "@ethersproject/json-wallets@^5.0.10": + version "5.0.10" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.0.10.tgz#cdc9c27cb486762a3313e25f6f2fef0eb890dbaf" + integrity sha512-Ux36u+d7Dm0M5AQ+mWuHdvfGPMN8K1aaLQgwzrsD4ELTWlwRuHuQbmn7/GqeOpbfaV6POLwdYcBk2TXjlGp/IQ== + dependencies: + "@ethersproject/abstract-signer" "^5.0.10" + "@ethersproject/address" "^5.0.9" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/hdnode" "^5.0.8" + "@ethersproject/keccak256" "^5.0.7" + "@ethersproject/logger" "^5.0.8" + "@ethersproject/pbkdf2" "^5.0.7" + "@ethersproject/properties" "^5.0.7" + "@ethersproject/random" "^5.0.7" + "@ethersproject/strings" "^5.0.8" + "@ethersproject/transactions" "^5.0.9" aes-js "3.0.0" scrypt-js "3.0.1" -"@ethersproject/keccak256@5.0.6", "@ethersproject/keccak256@^5.0.3": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.0.6.tgz#5b5ba715ef1be86efde5c271f896fa0daf0e1efe" - integrity sha512-eJ4Id/i2rwrf5JXEA7a12bG1phuxjj47mPZgDUbttuNBodhSuZF2nEO5QdpaRjmlphQ8Kt9PNqY/z7lhtJptZg== - dependencies: - "@ethersproject/bytes" "^5.0.4" - js-sha3 "0.5.7" - -"@ethersproject/keccak256@^5.0.0": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.0.2.tgz#7ed4a95bb45ee502cf4532223833740a83602797" - integrity sha512-MbroXutc0gPNYIrUjS4Aw0lDuXabdzI7+l7elRWr1G6G+W0v00e/3gbikWkCReGtt2Jnt4lQSgnflhDwQGcIhA== +"@ethersproject/keccak256@5.0.7", "@ethersproject/keccak256@>=5.0.0-beta.127", "@ethersproject/keccak256@^5.0.7": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.0.7.tgz#2eedb5e4c160fcdf0079660f8ae362d7855ea943" + integrity sha512-zpUBmofWvx9PGfc7IICobgFQSgNmTOGTGLUxSYqZzY/T+b4y/2o5eqf/GGmD7qnTGzKQ42YlLNo+LeDP2qe55g== dependencies: - "@ethersproject/bytes" "^5.0.0" + "@ethersproject/bytes" "^5.0.9" js-sha3 "0.5.7" -"@ethersproject/logger@5.0.8", "@ethersproject/logger@^5.0.5": +"@ethersproject/logger@5.0.8", "@ethersproject/logger@>=5.0.0-beta.129", "@ethersproject/logger@^5.0.8": version "5.0.8" resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.0.8.tgz#135c1903d35c878265f3cbf2b287042c4c20d5d4" integrity sha512-SkJCTaVTnaZ3/ieLF5pVftxGEFX56pTH+f2Slrpv7cU0TNpUZNib84QQdukd++sWUp/S7j5t5NW+WegbXd4U/A== -"@ethersproject/logger@^5.0.0": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.0.4.tgz#09fa4765b5691233e3afb6617cb38a700f9dd2e4" - integrity sha512-alA2LiAy1LdQ/L1SA9ajUC7MvGAEQLsICEfKK4erX5qhkXE1LwLSPIzobtOWFsMHf2yrXGKBLnnpuVHprI3sAw== - -"@ethersproject/networks@5.0.6", "@ethersproject/networks@^5.0.3": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.0.6.tgz#4d6586bbebfde1c027504ebf6dfb783b29c3803a" - integrity sha512-2Cg1N5109zzFOBfkyuPj+FfF7ioqAsRffmybJ2lrsiB5skphIAE72XNSCs4fqktlf+rwSh/5o/UXRjXxvSktZw== - dependencies: - "@ethersproject/logger" "^5.0.5" - -"@ethersproject/networks@^5.0.0": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.0.2.tgz#a49e82cf071e3618e87e3c5d69fdbcf54dc6766c" - integrity sha512-T7HVd62D4izNU2tDHf6xUDo7k4JOGX4Lk7vDmVcDKrepSWwL2OmGWrqSlkRe2a1Dnz4+1VPE6fb6+KsmSRe82g== - dependencies: - "@ethersproject/logger" "^5.0.0" - -"@ethersproject/pbkdf2@5.0.6", "@ethersproject/pbkdf2@^5.0.3": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.0.6.tgz#105dbfb08cd5fcf33869b42bfdc35a3ebd978cbd" - integrity sha512-CUYciSxR/AaCoKMJk3WUW+BDhR41G3C+O9lOeZ4bR1wDhLKL2Z8p0ciF5XDEiVbmI4CToW6boVKybeVMdngRrg== - dependencies: - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/sha2" "^5.0.3" - -"@ethersproject/pbkdf2@^5.0.0": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.0.2.tgz#d12c5f434bbdf6f52401eddb7d753a713dd9e4ea" - integrity sha512-OJFxdX/VtGI5M04lAzXKEOb76XBzjCOzGyko3/bMWat3ePAw7RveBOLyhm79SBs2fh21MSYgdG6JScEMHoSImw== +"@ethersproject/networks@5.0.7", "@ethersproject/networks@^5.0.7": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.0.7.tgz#8d06e41197b27c2404d89a29ca21f741a01acbfc" + integrity sha512-dI14QATndIcUgcCBL1c5vUr/YsI5cCHLN81rF7PU+yS7Xgp2/Rzbr9+YqpC6NBXHFUASjh6GpKqsVMpufAL0BQ== dependencies: - "@ethersproject/bytes" "^5.0.0" - "@ethersproject/sha2" "^5.0.0" + "@ethersproject/logger" "^5.0.8" -"@ethersproject/properties@5.0.6", "@ethersproject/properties@^5.0.3", "@ethersproject/properties@^5.0.4": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.0.6.tgz#44d82aaa294816fd63333e7def42426cf0e87b3b" - integrity sha512-a9DUMizYhJ0TbtuDkO9iYlb2CDlpSKqGPDr+amvlZhRspQ6jbl5Eq8jfu4SCcGlcfaTbguJmqGnyOGn1EFt6xA== +"@ethersproject/pbkdf2@5.0.7", "@ethersproject/pbkdf2@^5.0.7": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.0.7.tgz#a36fdb7327760ec0096857053e01c923a63417da" + integrity sha512-0SNLNixPMqnosH6pyc4yPiUu/C9/Jbu+f6I8GJW9U2qNpMBddmRJviwseoha5Zw1V+Aw0Z/yvYyzIIE8yPXqLA== dependencies: - "@ethersproject/logger" "^5.0.5" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/sha2" "^5.0.7" -"@ethersproject/properties@^5.0.0": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.0.2.tgz#2facb62d2f2d968c7b3d0befa5bcc884cc565d3b" - integrity sha512-FxAisPGAOACQjMJzewl9OJG6lsGCPTm5vpUMtfeoxzAlAb2lv+kHzQPUh9h4jfAILzE8AR1jgXMzRmlhwyra1Q== - dependencies: - "@ethersproject/logger" "^5.0.0" - -"@ethersproject/providers@5.0.17": - version "5.0.17" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.0.17.tgz#f380e7831149e24e7a1c6c9b5fb1d6dfc729d024" - integrity sha512-bJnvs5X7ttU5x2ekGJYG7R3Z+spZawLFfR0IDsbaMDLiCwZOyrgk+VTBU7amSFLT0WUhWFv8WwSUB+AryCQG1Q== - dependencies: - "@ethersproject/abstract-provider" "^5.0.4" - "@ethersproject/abstract-signer" "^5.0.4" - "@ethersproject/address" "^5.0.4" - "@ethersproject/basex" "^5.0.3" - "@ethersproject/bignumber" "^5.0.7" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/constants" "^5.0.4" - "@ethersproject/hash" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/networks" "^5.0.3" - "@ethersproject/properties" "^5.0.3" - "@ethersproject/random" "^5.0.3" - "@ethersproject/rlp" "^5.0.3" - "@ethersproject/sha2" "^5.0.3" - "@ethersproject/strings" "^5.0.4" - "@ethersproject/transactions" "^5.0.5" - "@ethersproject/web" "^5.0.6" +"@ethersproject/properties@5.0.7", "@ethersproject/properties@>=5.0.0-beta.131", "@ethersproject/properties@^5.0.7": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.0.7.tgz#951d11ba592ff90bbe8ec34c5a03a5157e3b3360" + integrity sha512-812H1Rus2vjw0zbasfDI1GLNPDsoyX1pYqiCgaR1BuyKxUTbwcH1B+214l6VGe1v+F6iEVb7WjIwMjKhb4EUsg== + dependencies: + "@ethersproject/logger" "^5.0.8" + +"@ethersproject/providers@5.0.19", "@ethersproject/providers@^5.0.5": + version "5.0.19" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.0.19.tgz#94c8f1a86755ee4187911fc6250e94b1116c089a" + integrity sha512-G+flo1jK1y/rvQy6b71+Nu7qOlkOKz+XqpgqFMZslkCzGuzQRmk9Qp7Ln4soK8RSyP1e5TCujaRf1H+EZahoaw== + dependencies: + "@ethersproject/abstract-provider" "^5.0.8" + "@ethersproject/abstract-signer" "^5.0.10" + "@ethersproject/address" "^5.0.9" + "@ethersproject/basex" "^5.0.7" + "@ethersproject/bignumber" "^5.0.13" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/constants" "^5.0.8" + "@ethersproject/hash" "^5.0.10" + "@ethersproject/logger" "^5.0.8" + "@ethersproject/networks" "^5.0.7" + "@ethersproject/properties" "^5.0.7" + "@ethersproject/random" "^5.0.7" + "@ethersproject/rlp" "^5.0.7" + "@ethersproject/sha2" "^5.0.7" + "@ethersproject/strings" "^5.0.8" + "@ethersproject/transactions" "^5.0.9" + "@ethersproject/web" "^5.0.12" bech32 "1.1.4" ws "7.2.3" -"@ethersproject/providers@^5.0.0", "@ethersproject/providers@^5.0.5": - version "5.0.5" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.0.5.tgz#fa28498ce9683d1d99f6cb11e1a7fe8d4886e0ce" - integrity sha512-ZR3yFg/m8qDl7317yXOHE7tKeGfoyZIZ/imhVC4JqAH+SX1rb6bdZcSjhJfet7rLmnJSsnYLTgIiVIT85aVLgg== - dependencies: - "@ethersproject/abstract-provider" "^5.0.0" - "@ethersproject/abstract-signer" "^5.0.0" - "@ethersproject/address" "^5.0.0" - "@ethersproject/bignumber" "^5.0.0" - "@ethersproject/bytes" "^5.0.0" - "@ethersproject/constants" "^5.0.0" - "@ethersproject/hash" "^5.0.0" - "@ethersproject/logger" "^5.0.0" - "@ethersproject/networks" "^5.0.0" - "@ethersproject/properties" "^5.0.0" - "@ethersproject/random" "^5.0.0" - "@ethersproject/rlp" "^5.0.0" - "@ethersproject/strings" "^5.0.0" - "@ethersproject/transactions" "^5.0.0" - "@ethersproject/web" "^5.0.0" - ws "7.2.3" - -"@ethersproject/random@5.0.6", "@ethersproject/random@^5.0.3": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.0.6.tgz#9be80a1065f2b8e6f321dccb3ebeb4886cac9ea4" - integrity sha512-8nsVNaZvZ9OD5NXfzE4mmz8IH/1DYJbAR95xpRxZkIuNmfn6QlMp49ccJYZWGhs6m0Zj2+FXjx3pzXfYlo9/dA== - dependencies: - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - -"@ethersproject/random@^5.0.0": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.0.2.tgz#bb58aca69a85e8de506686117f050d03dac69023" - integrity sha512-kLeS+6bwz37WR2zbe69gudyoGVoUzljQO0LhifnATsZ7rW0JZ9Zgt0h5aXY7tqFDo9TvdqeCwUFdp1t3T5Fkhg== - dependencies: - "@ethersproject/bytes" "^5.0.0" - "@ethersproject/logger" "^5.0.0" - -"@ethersproject/rlp@5.0.6", "@ethersproject/rlp@^5.0.3": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.0.6.tgz#29f9097348a3c330811997433b7df89ab51cd644" - integrity sha512-M223MTaydfmQSsvqAl0FJZDYFlSqt6cgbhnssLDwqCKYegAHE16vrFyo+eiOapYlt32XAIJm0BXlqSunULzZuQ== - dependencies: - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - -"@ethersproject/rlp@^5.0.0": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.0.2.tgz#d6b550a2ac5e484f15f0f63337e522004d2e78cd" - integrity sha512-oE0M5jqQ67fi2SuMcrpoewOpEuoXaD8M9JeR9md1bXRMvDYgKXUtDHs22oevpEOdnO2DPIRabp6MVHa4aDuWmw== - dependencies: - "@ethersproject/bytes" "^5.0.0" - "@ethersproject/logger" "^5.0.0" - -"@ethersproject/sha2@5.0.6", "@ethersproject/sha2@^5.0.3": - version "5.0.6" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.0.6.tgz#175116dc10b866a0a381f6316d094bcc510bee3c" - integrity sha512-30gypDLkfkP5gE3llqi0jEuRV8m4/nvzeqmqMxiihZ7veFQHqDaGpyFeHzFim+qGeH9fq0lgYjavLvwW69+Fkw== - dependencies: - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - hash.js "1.1.3" - -"@ethersproject/sha2@^5.0.0": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.0.2.tgz#baefc78c071be8729b180759eb29267129314252" - integrity sha512-VFl4qSStjQZaygpqoAHswaCY59qBm1Sm0rf8iv0tmgVsRf0pBg2nJaNf9NXXvcuJ9AYPyXl57dN8kozdC4z5Cg== - dependencies: - "@ethersproject/bytes" "^5.0.0" - "@ethersproject/logger" "^5.0.0" - hash.js "1.1.3" - -"@ethersproject/signing-key@5.0.7", "@ethersproject/signing-key@^5.0.4": +"@ethersproject/random@5.0.7", "@ethersproject/random@^5.0.7": version "5.0.7" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.0.7.tgz#d03bfc5f565efb962bafebf8e6965e70d1c46d31" - integrity sha512-JYndnhFPKH0daPcIjyhi+GMcw3srIHkQ40hGRe6DA0CdGrpMfgyfSYDQ2D8HL2lgR+Xm4SHfEB0qba6+sCyrvg== - dependencies: - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/properties" "^5.0.3" - elliptic "6.5.3" - -"@ethersproject/signing-key@^5.0.0": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.0.3.tgz#adb84360e147bfd336cb2fe114100120732dc10a" - integrity sha512-5QPZaBRGCLzfVMbFb3LcVjNR0UbTXnwDHASnQYfbzwUOnFYHKxHsrcbl/5ONGoppgi8yXgOocKqlPCFycJJVWQ== + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.0.7.tgz#e364268ce68bf6d300c36d654e622fd9d26b3a86" + integrity sha512-PxSRWwN3s+FH9AWMZU6AcWJsNQ9KzqKV6NgdeKPtxahdDjCuXxTAuzTZNXNRK+qj+Il351UnweAGd+VuZcOAlQ== dependencies: - "@ethersproject/bytes" "^5.0.0" - "@ethersproject/logger" "^5.0.0" - "@ethersproject/properties" "^5.0.0" - elliptic "6.5.3" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/logger" "^5.0.8" -"@ethersproject/solidity@5.0.7": +"@ethersproject/rlp@5.0.7", "@ethersproject/rlp@^5.0.7": version "5.0.7" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.0.7.tgz#72a3455f47a454db2dcf363992d42e9045dc7fce" - integrity sha512-dUevKUZ06p/VMLP/+cz4QUV+lA17NixucDJfm0ioWF0B3R0Lf+6wqwPchcqiAXlxkNFGIax7WNLgGMh4CkQ8iw== - dependencies: - "@ethersproject/bignumber" "^5.0.7" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/keccak256" "^5.0.3" - "@ethersproject/sha2" "^5.0.3" - "@ethersproject/strings" "^5.0.4" - -"@ethersproject/solidity@^5.0.0", "@ethersproject/solidity@^5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.0.2.tgz#431cee341ec51e022bd897b93fef04521f414756" - integrity sha512-RygurUe1hPW1LDYAPXy4471AklGWNnxgFWc3YUE6H11gzkit26jr6AyZH4Yyjw38eBBL6j0AOfQzMWm+NhxZ9g== + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.0.7.tgz#cfa4fa6415960a435b7814e1a29bdfea657e2b6e" + integrity sha512-ulUTVEuV7PT4jJTPpfhRHK57tkLEDEY9XSYJtrSNHOqdwMvH0z7BM2AKIMq4LVDlnu4YZASdKrkFGEIO712V9w== dependencies: - "@ethersproject/bignumber" "^5.0.0" - "@ethersproject/bytes" "^5.0.0" - "@ethersproject/keccak256" "^5.0.0" - "@ethersproject/sha2" "^5.0.0" - "@ethersproject/strings" "^5.0.0" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/logger" "^5.0.8" -"@ethersproject/strings@5.0.7", "@ethersproject/strings@^5.0.4": +"@ethersproject/sha2@5.0.7", "@ethersproject/sha2@^5.0.7": version "5.0.7" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.0.7.tgz#8dc68f794c9e2901f3b75e53b2afbcb6b6c15037" - integrity sha512-a+6T80LvmXGMOOWQTZHtGGQEg1z4v8rm8oX70KNs55YtPXI/5J3LBbVf5pyqCKSlmiBw5IaepPvs5XGalRUSZQ== + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.0.7.tgz#ef9f18770c9f90a6cfd73840b0c3400910219099" + integrity sha512-MbUqz68hhp5RsaZdqi1eg1rrtiqt5wmhRYqdA7MX8swBkzW2KiLgK+Oh25UcWhUhdi1ImU9qrV6if5j0cC7Bxg== dependencies: - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/constants" "^5.0.4" - "@ethersproject/logger" "^5.0.5" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/logger" "^5.0.8" + hash.js "1.1.3" -"@ethersproject/strings@^5.0.0": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.0.2.tgz#1753408c3c889813fd0992abd76393e3e47a2619" - integrity sha512-oNa+xvSqsFU96ndzog0IBTtsRFGOqGpzrXJ7shXLBT7juVeSEyZA/sYs0DMZB5mJ9FEjHdZKxR/rTyBY91vuXg== +"@ethersproject/signing-key@5.0.8", "@ethersproject/signing-key@^5.0.8": + version "5.0.8" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.0.8.tgz#156522e542916b9aa9135527b40c5b6f9235af02" + integrity sha512-YKxQM45eDa6WAD+s3QZPdm1uW1MutzVuyoepdRRVmMJ8qkk7iOiIhUkZwqKLNxKzEJijt/82ycuOREc9WBNAKg== dependencies: - "@ethersproject/bytes" "^5.0.0" - "@ethersproject/constants" "^5.0.0" - "@ethersproject/logger" "^5.0.0" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/logger" "^5.0.8" + "@ethersproject/properties" "^5.0.7" + elliptic "6.5.3" -"@ethersproject/transactions@5.0.8", "@ethersproject/transactions@^5.0.5": +"@ethersproject/solidity@5.0.8", "@ethersproject/solidity@^5.0.2": version "5.0.8" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.0.8.tgz#3b4d7041e13b957a9c4f131e0aea9dae7b6f5a23" - integrity sha512-i7NtOXVzUe+YSU6QufzlRrI2WzHaTmULAKHJv4duIZMLqzehCBXGA9lTpFgFdqGYcQJ7vOtNFC2BB2mSjmuXqg== - dependencies: - "@ethersproject/address" "^5.0.4" - "@ethersproject/bignumber" "^5.0.7" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/constants" "^5.0.4" - "@ethersproject/keccak256" "^5.0.3" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/properties" "^5.0.3" - "@ethersproject/rlp" "^5.0.3" - "@ethersproject/signing-key" "^5.0.4" - -"@ethersproject/transactions@^5.0.0", "@ethersproject/transactions@^5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.0.2.tgz#590ede71fc87b45be7bd46002e18ae52246a2347" - integrity sha512-jZp0ZbbJlq4JLZY6qoMzNtp2HQsX6USQposi3ns0MPUdn3OdZJBDtrcO15r/2VS5t/K1e1GE5MI1HmMKlcTbbQ== - dependencies: - "@ethersproject/address" "^5.0.0" - "@ethersproject/bignumber" "^5.0.0" - "@ethersproject/bytes" "^5.0.0" - "@ethersproject/constants" "^5.0.0" - "@ethersproject/keccak256" "^5.0.0" - "@ethersproject/logger" "^5.0.0" - "@ethersproject/properties" "^5.0.0" - "@ethersproject/rlp" "^5.0.0" - "@ethersproject/signing-key" "^5.0.0" - -"@ethersproject/units@5.0.8": - version "5.0.8" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.0.8.tgz#563325b20fe1eceff7b61857711d5e2b3f38fd09" - integrity sha512-3O4MaNHFs05vC5v2ZGqVFVWtO1WyqFejO78M7Qh16njo282aoMlENtVI6cn2B36zOLFXRvYt2pYx6xCG53qKzg== + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.0.8.tgz#a260116a794bc97558d89e98f59831ce8d25c733" + integrity sha512-OJkyBq9KaoGsi8E8mYn6LX+vKyCURvxSp0yuGBcOqEFM3vkn9PsCiXsHdOXdNBvlHG5evJXwAYC2UR0TzgJeKA== dependencies: - "@ethersproject/bignumber" "^5.0.7" - "@ethersproject/constants" "^5.0.4" - "@ethersproject/logger" "^5.0.5" + "@ethersproject/bignumber" "^5.0.13" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/keccak256" "^5.0.7" + "@ethersproject/sha2" "^5.0.7" + "@ethersproject/strings" "^5.0.8" -"@ethersproject/units@^5.0.0": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.0.2.tgz#de1461ff3ad2587e57bf367d056b6b72cfceda78" - integrity sha512-PSuzycBA1zmRysTtKtp+XYZ3HIJfbmfRdZchOUxdyeGo5siUi9H6mYQcxdJHv82oKp/FniMj8qS8qtLQThhOEg== +"@ethersproject/strings@5.0.8", "@ethersproject/strings@>=5.0.0-beta.130", "@ethersproject/strings@^5.0.8": + version "5.0.8" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.0.8.tgz#11a1b0ed1e8417408693789839f0b5f4e323c0c9" + integrity sha512-5IsdXf8tMY8QuHl8vTLnk9ehXDDm6x9FB9S9Og5IA1GYhLe5ZewydXSjlJlsqU2t9HRbfv97OJZV/pX8DVA/Hw== dependencies: - "@ethersproject/bignumber" "^5.0.0" - "@ethersproject/constants" "^5.0.0" - "@ethersproject/logger" "^5.0.0" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/constants" "^5.0.8" + "@ethersproject/logger" "^5.0.8" -"@ethersproject/wallet@5.0.9": +"@ethersproject/transactions@5.0.9", "@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.0.2", "@ethersproject/transactions@^5.0.9": version "5.0.9" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.0.9.tgz#976c7d950489c40308d676869d24e59ab7b82ad1" - integrity sha512-GfpQF56PO/945SJq7Wdg5F5U6wkxaDgkAzcgGbCW6Joz8oW8MzKItkvYCzMh+j/8gJMzFncsuqX4zg2gq3J6nQ== - dependencies: - "@ethersproject/abstract-provider" "^5.0.4" - "@ethersproject/abstract-signer" "^5.0.4" - "@ethersproject/address" "^5.0.4" - "@ethersproject/bignumber" "^5.0.7" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/hash" "^5.0.4" - "@ethersproject/hdnode" "^5.0.4" - "@ethersproject/json-wallets" "^5.0.6" - "@ethersproject/keccak256" "^5.0.3" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/properties" "^5.0.3" - "@ethersproject/random" "^5.0.3" - "@ethersproject/signing-key" "^5.0.4" - "@ethersproject/transactions" "^5.0.5" - "@ethersproject/wordlists" "^5.0.4" - -"@ethersproject/wallet@^5.0.0", "@ethersproject/wallet@^5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.0.2.tgz#714ca8324c1b3b66e51b9b4e0358c882e88caf1d" - integrity sha512-gg86ynLV5k5caNnYpJoYc6WyIUHKMTjOITCk5zXGyVbbkXE07y/fGql4A51W0C6mWkeb5Mzz8AKqzHZECdH30w== - dependencies: - "@ethersproject/abstract-provider" "^5.0.0" - "@ethersproject/abstract-signer" "^5.0.0" - "@ethersproject/address" "^5.0.0" - "@ethersproject/bignumber" "^5.0.0" - "@ethersproject/bytes" "^5.0.0" - "@ethersproject/hash" "^5.0.0" - "@ethersproject/hdnode" "^5.0.0" - "@ethersproject/json-wallets" "^5.0.0" - "@ethersproject/keccak256" "^5.0.0" - "@ethersproject/logger" "^5.0.0" - "@ethersproject/properties" "^5.0.0" - "@ethersproject/random" "^5.0.0" - "@ethersproject/signing-key" "^5.0.0" - "@ethersproject/transactions" "^5.0.0" - "@ethersproject/wordlists" "^5.0.0" - -"@ethersproject/web@5.0.11", "@ethersproject/web@^5.0.6": - version "5.0.11" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.0.11.tgz#d47da612b958b4439e415782a53c8f8461522d68" - integrity sha512-x03ihbPoN1S8Gsh9WSwxkYxUIumLi02ZEKJku1C43sxBfe+mdprWyvujzYlpuoRNfWRgNhdRDKMP8JbG6MwNGA== - dependencies: - "@ethersproject/base64" "^5.0.3" - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/properties" "^5.0.3" - "@ethersproject/strings" "^5.0.4" - -"@ethersproject/web@^5.0.0": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.0.3.tgz#f5673923009bb855302f0296ddb932da8e42f0a1" - integrity sha512-9WoIWNxbFOk+8TiWqQMQbYJUIFeC1Z7zNr7oCHpVyhxF0EY54ZVXlP/Y7VJ7KzK++A/iMGOuTIGeL5sMqa2QMg== - dependencies: - "@ethersproject/base64" "^5.0.0" - "@ethersproject/bytes" "^5.0.0" - "@ethersproject/logger" "^5.0.0" - "@ethersproject/properties" "^5.0.0" - "@ethersproject/strings" "^5.0.0" - -"@ethersproject/wordlists@5.0.7", "@ethersproject/wordlists@^5.0.4": - version "5.0.7" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.0.7.tgz#4e5ad38cfbef746b196a3290c0d41696eb7ab468" - integrity sha512-ZjQtYxm41FmHfYgpkdQG++EDcBPQWv9O6FfP6NndYRVaXaQZh6eq3sy7HQP8zCZ8dznKgy6ZyKECS8qdvnGHwA== + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.0.9.tgz#ccfcc1d395b5e3ce7342545fa28bfe5541182fd6" + integrity sha512-0Fu1yhdFBkrbMjenEr+39tmDxuHmaw0pe9Jb18XuKoItj7Z3p7+UzdHLr2S/okvHDHYPbZE5gtANDdQ3ZL1nBA== + dependencies: + "@ethersproject/address" "^5.0.9" + "@ethersproject/bignumber" "^5.0.13" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/constants" "^5.0.8" + "@ethersproject/keccak256" "^5.0.7" + "@ethersproject/logger" "^5.0.8" + "@ethersproject/properties" "^5.0.7" + "@ethersproject/rlp" "^5.0.7" + "@ethersproject/signing-key" "^5.0.8" + +"@ethersproject/units@5.0.9": + version "5.0.9" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.0.9.tgz#f8dc406f593eadcba883d6e86cc077203b03e7da" + integrity sha512-4jIkcMVrJ3lCgXMO4M/2ww0/T/IN08vJTZld7FIAwa6aoBDTAy71+sby3sShl1SG3HEeKYbI3fBWauCUgPRUpQ== + dependencies: + "@ethersproject/bignumber" "^5.0.13" + "@ethersproject/constants" "^5.0.8" + "@ethersproject/logger" "^5.0.8" + +"@ethersproject/wallet@5.0.10", "@ethersproject/wallet@^5.0.2": + version "5.0.10" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.0.10.tgz#16ad0864d9e0e2b57fb32d768ea4161891d62727" + integrity sha512-5siYr38NhqZKH6DUr6u4PdhgOKur8Q6sw+JID2TitEUmW0tOl8f6rpxAe77tw6SJT60D2UcvgsyLtl32+Nl+ig== + dependencies: + "@ethersproject/abstract-provider" "^5.0.8" + "@ethersproject/abstract-signer" "^5.0.10" + "@ethersproject/address" "^5.0.9" + "@ethersproject/bignumber" "^5.0.13" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/hash" "^5.0.10" + "@ethersproject/hdnode" "^5.0.8" + "@ethersproject/json-wallets" "^5.0.10" + "@ethersproject/keccak256" "^5.0.7" + "@ethersproject/logger" "^5.0.8" + "@ethersproject/properties" "^5.0.7" + "@ethersproject/random" "^5.0.7" + "@ethersproject/signing-key" "^5.0.8" + "@ethersproject/transactions" "^5.0.9" + "@ethersproject/wordlists" "^5.0.8" + +"@ethersproject/web@5.0.12", "@ethersproject/web@^5.0.12": + version "5.0.12" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.0.12.tgz#f123397c107f863c31fce5f31a97c66ec155e755" + integrity sha512-gVxS5iW0bgidZ76kr7LsTxj4uzN5XpCLzvZrLp8TP+4YgxHfCeetFyQkRPgBEAJdNrexdSBayvyJvzGvOq0O8g== dependencies: - "@ethersproject/bytes" "^5.0.4" - "@ethersproject/hash" "^5.0.4" - "@ethersproject/logger" "^5.0.5" - "@ethersproject/properties" "^5.0.3" - "@ethersproject/strings" "^5.0.4" + "@ethersproject/base64" "^5.0.7" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/logger" "^5.0.8" + "@ethersproject/properties" "^5.0.7" + "@ethersproject/strings" "^5.0.8" -"@ethersproject/wordlists@^5.0.0": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.0.2.tgz#eded47314509c8608373fc2b22879ee2b71b7c7c" - integrity sha512-6vKDQcjjpnfdSCr0+jNxpFH3ieKxUPkm29tQX2US7a3zT/sJU/BGlKBR7D8oOpwdE0hpkHhJyMlypRBK+A2avA== +"@ethersproject/wordlists@5.0.8", "@ethersproject/wordlists@^5.0.8": + version "5.0.8" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.0.8.tgz#593319b710a5a1f4e839b72641aa765b4f111137" + integrity sha512-px2mloc1wAcdTbzv0ZotTx+Uh/dfnDO22D9Rx8xr7+/PUwAhZQjoJ9t7Hn72nsaN83rWBXsLvFcIRZju4GIaEQ== dependencies: - "@ethersproject/bytes" "^5.0.0" - "@ethersproject/hash" "^5.0.0" - "@ethersproject/logger" "^5.0.0" - "@ethersproject/properties" "^5.0.0" - "@ethersproject/strings" "^5.0.0" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/hash" "^5.0.10" + "@ethersproject/logger" "^5.0.8" + "@ethersproject/properties" "^5.0.7" + "@ethersproject/strings" "^5.0.8" -"@nodelib/fs.scandir@2.1.3": - version "2.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz#3a582bdb53804c6ba6d146579c46e52130cf4a3b" - integrity sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw== +"@nodelib/fs.scandir@2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" + integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA== dependencies: - "@nodelib/fs.stat" "2.0.3" + "@nodelib/fs.stat" "2.0.4" run-parallel "^1.1.9" -"@nodelib/fs.stat@2.0.3", "@nodelib/fs.stat@^2.0.2": - version "2.0.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz#34dc5f4cabbc720f4e60f75a747e7ecd6c175bd3" - integrity sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA== +"@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655" + integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q== "@nodelib/fs.walk@^1.2.3": - version "1.2.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz#011b9202a70a6366e436ca5c065844528ab04976" - integrity sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ== + version "1.2.6" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063" + integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow== dependencies: - "@nodelib/fs.scandir" "2.1.3" + "@nodelib/fs.scandir" "2.1.4" fastq "^1.6.0" "@nomiclabs/ethereumjs-vm@^4.1.1": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@nomiclabs/ethereumjs-vm/-/ethereumjs-vm-4.2.0.tgz#a853bdb4fb032529f810f32bb767551d19d7ce57" - integrity sha512-+XwqoO941bILTO4KDLIUJ37U42ySxw6it7jyoi0tKv0/VUcOrWKF1TCQWMv6dBDRlxpPQd273n9o5SVlYYLRWQ== + version "4.2.1" + resolved "https://registry.yarnpkg.com/@nomiclabs/ethereumjs-vm/-/ethereumjs-vm-4.2.1.tgz#768a6a071f88a9f3d27e560b899f86191d53bb72" + integrity sha512-vVloT6g/QNPasIrGWpR583b9nn1cBjNIQtaVdunEvwVFnEmTpsE0U67OiAiqYZmd0g7zqQrj2jepw0GEgnAz7Q== dependencies: async "^2.1.2" async-eventemitter "^0.2.2" @@ -820,15 +507,15 @@ safe-buffer "^5.1.1" util.promisify "^1.0.0" -"@nomiclabs/hardhat-ethers@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.0.0.tgz#ebab032b3aed03945ea560f56bb67aec56a30cbc" - integrity sha512-fIi6XP9PgKqwSNVcLDr6S5hvGlc21PendaLD5eGdXEXc9aYQ0OJX8Mk3evs+p78x7W9n9U3ZcKtTiGc1+YScDw== - -"@nomiclabs/hardhat-etherscan@^2.0.1": +"@nomiclabs/hardhat-ethers@2.0.1": version "2.0.1" - resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-2.0.1.tgz#576c162b0c2b8f5913b3853f4591e98ccc1c2e4d" - integrity sha512-5xPh5xhLXO1tDO0VTc4qlqqgv2m1bL+pXLSFibUVJ2EzzXHKn1C4ioHmYgseIkoNC3iG19cSJ7gRcQz4u54pGQ== + resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.0.1.tgz#f86a6fa210dbe6270adffccc75e93ed60a856904" + integrity sha512-uTFHDhhvJ+UjfvvMeQxD3ZALuzuI3FXzTYT1Z5N3ebyZL5z4Ogwt55GB0R9tdKY0p5HhDhBjU/gsCjUEwIVoaw== + +"@nomiclabs/hardhat-etherscan@2.1.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-2.1.0.tgz#08512c3e602155dc0d2becb193cd2e0155867839" + integrity sha512-YK9/UZI1Ct9TYfqZJnjIERlFC7bFrG0eUS2O0kFrH8RjLdcQXBI0GNpxXGAuDbotBg0t8wRKHibbK50TQu0ybA== dependencies: "@ethersproject/abi" "^5.0.2" "@ethersproject/address" "^5.0.2" @@ -837,10 +524,10 @@ node-fetch "^2.6.0" semver "^6.3.0" -"@nomiclabs/hardhat-waffle@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-waffle/-/hardhat-waffle-2.0.0.tgz#b06533c802da1a9d614e432f719d2816384df9b3" - integrity sha512-CnG9JC0rgqa68LTgyETxBUEWYAovvNGVs5abqaXjG80eF7iMLjDjM8IjOM87siAaxaxFCf6VBMJmtueqVq7jZw== +"@nomiclabs/hardhat-waffle@2.0.1": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-waffle/-/hardhat-waffle-2.0.1.tgz#5d43654fba780720c5033dea240fe14f70ef4bd2" + integrity sha512-2YR2V5zTiztSH9n8BYWgtv3Q+EL0N5Ltm1PAr5z20uAY4SkkfylJ98CIqt18XFvxTD5x4K2wKBzddjV9ViDAZQ== dependencies: "@types/sinon-chai" "^3.2.3" "@types/web3" "1.0.19" @@ -893,72 +580,72 @@ path-browserify "^1.0.0" url "^0.11.0" -"@sentry/core@5.24.2": - version "5.24.2" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.24.2.tgz#1724652855c0887a690c3fc6acd2519d4072b511" - integrity sha512-nuAwCGU1l9hgMinl5P/8nIQGRXDP2FI9cJnq5h1qiP/XIOvJkJz2yzBR6nTyqr4vBth0tvxQJbIpDNGd7vHJLg== +"@sentry/core@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.30.0.tgz#6b203664f69e75106ee8b5a2fe1d717379b331f3" + integrity sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg== dependencies: - "@sentry/hub" "5.24.2" - "@sentry/minimal" "5.24.2" - "@sentry/types" "5.24.2" - "@sentry/utils" "5.24.2" + "@sentry/hub" "5.30.0" + "@sentry/minimal" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" tslib "^1.9.3" -"@sentry/hub@5.24.2": - version "5.24.2" - resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.24.2.tgz#64a02fd487599945e488ae23aba4ce4df44ee79e" - integrity sha512-xmO1Ivvpb5Qr9WgekinuZZlpl9Iw7iPETUe84HQOhUrXf+2gKO+LaUYMMsYSVDwXQEmR6/tTMyOtS6iavldC6w== +"@sentry/hub@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.30.0.tgz#2453be9b9cb903404366e198bd30c7ca74cdc100" + integrity sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ== dependencies: - "@sentry/types" "5.24.2" - "@sentry/utils" "5.24.2" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" tslib "^1.9.3" -"@sentry/minimal@5.24.2": - version "5.24.2" - resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.24.2.tgz#14e8b136842398a32987459f0574359b6dc57a1f" - integrity sha512-biFpux5bI3R8xiD/Zzvrk1kRE6bqPtfWXmZYAHRtaUMCAibprTKSY9Ta8QYHynOAEoJ5Akedy6HUsEkK5DoZfA== +"@sentry/minimal@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.30.0.tgz#ce3d3a6a273428e0084adcb800bc12e72d34637b" + integrity sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw== dependencies: - "@sentry/hub" "5.24.2" - "@sentry/types" "5.24.2" + "@sentry/hub" "5.30.0" + "@sentry/types" "5.30.0" tslib "^1.9.3" "@sentry/node@^5.18.1": - version "5.24.2" - resolved "https://registry.yarnpkg.com/@sentry/node/-/node-5.24.2.tgz#6e06bf26f1e0b23e122a14f17aa57671d3428c4d" - integrity sha512-ddfU2tLTvhnY+NqzLIA/gxMt/uxq7R204Nb2J5qqE0WAgbh0dtylNAzfKZTizLdbZfRnpeISmd+CBILh3tavog== - dependencies: - "@sentry/core" "5.24.2" - "@sentry/hub" "5.24.2" - "@sentry/tracing" "5.24.2" - "@sentry/types" "5.24.2" - "@sentry/utils" "5.24.2" + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-5.30.0.tgz#4ca479e799b1021285d7fe12ac0858951c11cd48" + integrity sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg== + dependencies: + "@sentry/core" "5.30.0" + "@sentry/hub" "5.30.0" + "@sentry/tracing" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" cookie "^0.4.1" https-proxy-agent "^5.0.0" lru_map "^0.3.3" tslib "^1.9.3" -"@sentry/tracing@5.24.2": - version "5.24.2" - resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-5.24.2.tgz#a36b4f9bf699c5e07e99a148360091c8e727c51f" - integrity sha512-1uDgvGGVF8lb3hRXbhNnns+8DBUKjhRKOFR5Z3RExjrDFYTDbHmoNtV73Q12Ra+Iht9HTZnIBOqYD3oSZIbJ0w== +"@sentry/tracing@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-5.30.0.tgz#501d21f00c3f3be7f7635d8710da70d9419d4e1f" + integrity sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw== dependencies: - "@sentry/hub" "5.24.2" - "@sentry/minimal" "5.24.2" - "@sentry/types" "5.24.2" - "@sentry/utils" "5.24.2" + "@sentry/hub" "5.30.0" + "@sentry/minimal" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" tslib "^1.9.3" -"@sentry/types@5.24.2": - version "5.24.2" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.24.2.tgz#e2c25d1e75d8dbec5dbbd9a309a321425b61c2ca" - integrity sha512-HcOK00R0tQG5vzrIrqQ0jC28+z76jWSgQCzXiessJ5SH/9uc6NzdO7sR7K8vqMP2+nweCHckFohC8G0T1DLzuQ== +"@sentry/types@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.30.0.tgz#19709bbe12a1a0115bc790b8942917da5636f402" + integrity sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw== -"@sentry/utils@5.24.2": - version "5.24.2" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.24.2.tgz#90b7dff939bbbf4bb8edcac6aac2d04a0552af80" - integrity sha512-oPGde4tNEDHKk0Cg9q2p0qX649jLDUOwzJXHKpd0X65w3A6eJByDevMr8CSzKV9sesjrUpxqAv6f9WWlz185tA== +"@sentry/utils@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.30.0.tgz#9a5bd7ccff85ccfe7856d493bffa64cabc41e980" + integrity sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww== dependencies: - "@sentry/types" "5.24.2" + "@sentry/types" "5.30.0" tslib "^1.9.3" "@sindresorhus/is@^0.14.0": @@ -966,20 +653,15 @@ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== -"@solidity-parser/parser@^0.7.0": - version "0.7.0" - resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.7.0.tgz#b8c69c408c729413c090de6bc4f92bb73442ea68" - integrity sha512-YJ333ezgd9slnwCpFQVfsBcYsTcLWZRpVswlKgS82YDZPzzNtVnkEs5DX5+jMsu8PNnVxwZuxC6ucukima9x6w== - -"@solidity-parser/parser@^0.7.1": - version "0.7.1" - resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.7.1.tgz#660210130e4237476cb55e2882064809f80f861e" - integrity sha512-5ma2uuwPAEX1TPl2rAPAAuGlBkKnn2oUKQvnhTFlDIB8U/KDWX77FpHtL6Rcz+OwqSCWx9IClxACgyIEJ/GhIw== +"@solidity-parser/parser@^0.11.0": + version "0.11.1" + resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.11.1.tgz#fa840af64840c930f24a9c82c08d4a092a068add" + integrity sha512-H8BSBoKE8EubJa0ONqecA2TviT3TnHeC4NpgnAHSUiuhZoQBfPB4L2P9bs8R6AoTW10Endvh3vc+fomVMIDIYQ== -"@solidity-parser/parser@^0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.8.0.tgz#e56fe5f0e29753f928c8fb1ddf5f59e5d71363e9" - integrity sha512-4Eg1iWe6ZuJC9Ynfd8D2cnu06So0QL6V3i+fgQRqT8twPMr+N+kUvS5K7ILgWpuoAag/jb3r0wBDfmpib+yvaw== +"@solidity-parser/parser@^0.8.2": + version "0.8.2" + resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.8.2.tgz#a6a5e93ac8dca6884a99a532f133beba59b87b69" + integrity sha512-8LySx3qrNXPgB5JiULfG10O3V7QTxI/TLzSw5hFQhXWSkVxZBAv4rZQ0sYgLEbc8g3L2lmnujj1hKul38Eu5NQ== "@szmarczak/http-timer@^1.1.2": version "1.1.2" @@ -988,38 +670,38 @@ dependencies: defer-to-connect "^1.0.1" -"@truffle/error@^0.0.7": - version "0.0.7" - resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.0.7.tgz#e9db39885575647ef08bf624b0c13fe46d41a209" - integrity sha512-UIfVKsXSXocKnn5+RNklUXNoGd/JVj7V8KmC48TQzmjU33HQI86PX0JDS7SpHMHasI3w9X//1q7Lu7nZtj3Zzg== +"@truffle/error@^0.0.11": + version "0.0.11" + resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.0.11.tgz#2789c0042d7e796dcbb840c7a9b5d2bcd8e0e2d8" + integrity sha512-ju6TucjlJkfYMmdraYY/IBJaFb+Sa+huhYtOoyOJ+G29KcgytUVnDzKGwC7Kgk6IsxQMm62Mc1E0GZzFbGGipw== -"@truffle/interface-adapter@^0.3.0": - version "0.3.3" - resolved "https://registry.yarnpkg.com/@truffle/interface-adapter/-/interface-adapter-0.3.3.tgz#61305378cf81776769ef36c60d394e568ac4a2ee" - integrity sha512-l3I4WFTfnBSIfG96IOBRtAIE6AHDAxcOUJE7W5zh9hocQwzQlGWc2yEyyTcLa0656TTM8RxaZZ2S/KdHHMvCaw== +"@truffle/interface-adapter@^0.4.18": + version "0.4.18" + resolved "https://registry.yarnpkg.com/@truffle/interface-adapter/-/interface-adapter-0.4.18.tgz#1aac45596997d208085d5168f82b990624610646" + integrity sha512-P9JVSYD/CX3V+NgTWu+Bf71sLh8pMwrCpbiYRB93pRw/1H3ZTvt5iDC2MVvVxCs8FkSiy4OZzQK/DJ8+hXAmYw== dependencies: bn.js "^4.11.8" ethers "^4.0.32" - lodash "^4.17.13" - web3 "1.2.2" + source-map-support "^0.5.19" + web3 "1.2.9" -"@truffle/provider@^0.1.17": - version "0.1.19" - resolved "https://registry.yarnpkg.com/@truffle/provider/-/provider-0.1.19.tgz#3e6f15fdd8475ca5d0c846d2b412cc823f1fb767" - integrity sha512-ke8iQmzW4Y99+8iff8xQcc+mCNU4AkwtaZ/iSpmVD8qpLytw8/DSNCm0RiEz9/+I93Q1zqI4Jnij/rXnkS2Njw== +"@truffle/provider@^0.2.24": + version "0.2.25" + resolved "https://registry.yarnpkg.com/@truffle/provider/-/provider-0.2.25.tgz#32a9539b625fad2d2203be9843e8a9d3011aebed" + integrity sha512-BohKgT2357c2dYCH2IQwldQ4EJkfsWUClpb3j+kR8ng02vbsyAPe0HMH463I+h+tiDKvL757dBltXpe0DBJusg== dependencies: - "@truffle/error" "^0.0.7" - "@truffle/interface-adapter" "^0.3.0" - web3 "1.2.1" + "@truffle/error" "^0.0.11" + "@truffle/interface-adapter" "^0.4.18" + web3 "1.2.9" -"@types/bignumber.js@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@types/bignumber.js/-/bignumber.js-5.0.0.tgz#d9f1a378509f3010a3255e9cc822ad0eeb4ab969" - integrity sha512-0DH7aPGCClywOFaxxjE6UwpN2kQYe9LwuDQMv+zYA97j5GkOMo8e66LYT+a8JYU7jfmUFRZLa9KycxHDsKXJCA== +"@types/bn.js@*": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.0.tgz#32c5d271503a12653c62cf4d2b45e6eab8cebc68" + integrity sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA== dependencies: - bignumber.js "*" + "@types/node" "*" -"@types/bn.js@*", "@types/bn.js@^4.11.3", "@types/bn.js@^4.11.4", "@types/bn.js@^4.11.5": +"@types/bn.js@^4.11.3", "@types/bn.js@^4.11.4", "@types/bn.js@^4.11.5": version "4.11.6" resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== @@ -1027,14 +709,9 @@ "@types/node" "*" "@types/chai@*": - version "4.2.12" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.12.tgz#6160ae454cd89dae05adc3bb97997f488b608201" - integrity sha512-aN5IAC8QNtSUdQzxu7lGBgYAOuU1tmRU4c9dIq5OKGf/SBVjXo+ffM2wEjudAWbgpOhy60nLoAGH1xm8fpCKFQ== - -"@types/color-name@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" - integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + version "4.2.14" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.2.14.tgz#44d2dd0b5de6185089375d976b4ec5caf6861193" + integrity sha512-G+ITQPXkwTrslfG5L/BksmbLUA0M1iybEsmCWPqzSxsRRhJZimBKJkoMi8fr/CPygPTj4zO5pJH7I2/cm9M7SQ== "@types/concat-stream@^1.6.0": version "1.6.0" @@ -1081,32 +758,32 @@ "@types/node" "*" "@types/node-fetch@^2.5.5": - version "2.5.7" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.7.tgz#20a2afffa882ab04d44ca786449a276f9f6bbf3c" - integrity sha512-o2WVNf5UhWRkxlf6eq+jMZDu7kjgpgJfl4xVNlvryc95O/6F2ld8ztKX+qu+Rjyet93WAWm5LjeX9H5FGkODvw== + version "2.5.8" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.8.tgz#e199c835d234c7eb0846f6618012e558544ee2fb" + integrity sha512-fbjI6ja0N5ZA8TV53RUqzsKNkl9fv8Oj3T7zxW7FGv1GSH7gwJaNF8dzCjrqKaxKeUpTz4yT1DaJFq/omNpGfw== dependencies: "@types/node" "*" form-data "^3.0.0" "@types/node@*": - version "14.11.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.11.2.tgz#2de1ed6670439387da1c9f549a2ade2b0a799256" - integrity sha512-jiE3QIxJ8JLNcb1Ps6rDbysDhN4xa8DJJvuC9prr6w+1tIh+QAbYyNF3tyiZNLDBIuBCf4KEcV2UvQm/V60xfA== + version "14.14.22" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.22.tgz#0d29f382472c4ccf3bd96ff0ce47daf5b7b84b18" + integrity sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw== -"@types/node@^10.0.3", "@types/node@^10.12.18", "@types/node@^10.3.2": - version "10.17.28" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.28.tgz#0e36d718a29355ee51cec83b42d921299200f6d9" - integrity sha512-dzjES1Egb4c1a89C7lKwQh8pwjYmlOAG9dW1pBgxEk57tMrLnssOfEthz8kdkNaBd7lIqQx7APm5+mZ619IiCQ== +"@types/node@^10.0.3", "@types/node@^10.12.18": + version "10.17.51" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.51.tgz#639538575befbcf3d3861f95c41de8e47124d674" + integrity sha512-KANw+MkL626tq90l++hGelbl67irOJzGhUJk6a1Bt8QHOeh9tztJx+L0AqttraWKinmZn7Qi5lJZJzx45Gq0dg== -"@types/node@^12.6.1": - version "12.12.54" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.54.tgz#a4b58d8df3a4677b6c08bfbc94b7ad7a7a5f82d1" - integrity sha512-ge4xZ3vSBornVYlDnk7yZ0gK6ChHf/CHB7Gl1I0Jhah8DDnEQqBzgohYG4FX4p81TNirSETOiSyn+y1r9/IR6w== +"@types/node@^12.12.6", "@types/node@^12.6.1": + version "12.19.15" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.19.15.tgz#0de7e978fb43db62da369db18ea088a63673c182" + integrity sha512-lowukE3GUI+VSYSu6VcBXl14d61Rp5hA1D+61r16qnwC0lYNSqdxcvRh0pswejorHfS+HgwBasM8jLXz0/aOsw== "@types/node@^8.0.0": - version "8.10.62" - resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.62.tgz#8d0d0db44a46ae7679d92e2e36d41bf1c3625d6a" - integrity sha512-76fupxOYVxk36kb7O/6KtrAPZ9jnSK3+qisAX4tQMEuGNdlvl7ycwatlHqjoE6jHfVtXFM3pCrCixZOidc5cuw== + version "8.10.66" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.66.tgz#dd035d409df322acc83dff62a602f12a5783bbb3" + integrity sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw== "@types/pbkdf2@^3.0.0": version "3.1.0" @@ -1116,9 +793,9 @@ "@types/node" "*" "@types/qs@^6.2.31", "@types/qs@^6.9.4": - version "6.9.4" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.4.tgz#a59e851c1ba16c0513ea123830dd639a0a15cb6a" - integrity sha512-+wYo+L6ZF6BMoEjtf8zB2esQsqdV6WsjRK/GP9WOgLPrq87PbNWgIxS76dS5uvl/QXtHGakZmwTznIfcPXcKlQ== + version "6.9.5" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.5.tgz#434711bdd49eb5ee69d90c1d67c354a9a8ecb18b" + integrity sha512-/JHkVHtx/REVG0VVToGRGH2+23hsYLHdyG+GrvoUGlGAd0ErauXDyvHtRI/7H7mzLm+tBCKA7pfcpkQ1lf58iQ== "@types/secp256k1@^4.0.1": version "4.0.1" @@ -1128,29 +805,29 @@ "@types/node" "*" "@types/sinon-chai@^3.2.3": - version "3.2.4" - resolved "https://registry.yarnpkg.com/@types/sinon-chai/-/sinon-chai-3.2.4.tgz#c425625681f4f8d3a43a7551a77f590ce1c49b21" - integrity sha512-xq5KOWNg70PRC7dnR2VOxgYQ6paumW+4pTZP+6uTSdhpYsAUEeeT5bw6rRHHQrZ4KyR+M5ojOR+lje6TGSpUxA== + version "3.2.5" + resolved "https://registry.yarnpkg.com/@types/sinon-chai/-/sinon-chai-3.2.5.tgz#df21ae57b10757da0b26f512145c065f2ad45c48" + integrity sha512-bKQqIpew7mmIGNRlxW6Zli/QVyc3zikpGzCa797B/tRnD9OtHvZ/ts8sYXV+Ilj9u3QRaUEM8xrjgd1gwm1BpQ== dependencies: "@types/chai" "*" "@types/sinon" "*" "@types/sinon@*": - version "9.0.4" - resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-9.0.4.tgz#e934f904606632287a6e7f7ab0ce3f08a0dad4b1" - integrity sha512-sJmb32asJZY6Z2u09bl0G2wglSxDlROlAejCjsnor+LzBMz17gu8IU7vKC/vWDnv9zEq2wqADHVXFjf4eE8Gdw== + version "9.0.10" + resolved "https://registry.yarnpkg.com/@types/sinon/-/sinon-9.0.10.tgz#7fb9bcb6794262482859cab66d59132fca18fcf7" + integrity sha512-/faDC0erR06wMdybwI/uR8wEKV/E83T0k4sepIpB7gXuy2gzx2xiOjmztq6a2Y6rIGJ04D+6UU0VBmWy+4HEMA== dependencies: "@types/sinonjs__fake-timers" "*" "@types/sinonjs__fake-timers@*": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.1.tgz#681df970358c82836b42f989188d133e218c458e" - integrity sha512-yYezQwGWty8ziyYLdZjwxyMb0CZR49h8JALHGrxjQHWlqGgc8kLdHEgWrgL0uZ29DMvEVBDnHU2Wg36zKSIUtA== + version "6.0.2" + resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.2.tgz#3a84cf5ec3249439015e14049bd3161419bf9eae" + integrity sha512-dIPoZ3g5gcx9zZEszaxLSVTvMReD3xxyyDnQUjA6IYDG9Ba2AV0otMPs+77sG9ojB4Qr2N2Vk5RnKeuA0X/0bg== "@types/underscore@*": - version "1.10.22" - resolved "https://registry.yarnpkg.com/@types/underscore/-/underscore-1.10.22.tgz#8e0a134a2df0afe8da24bcf006e7f94925a3e15f" - integrity sha512-fiJulOOmc747q+mZwBtLyBu6yBX2uI4biuQ1Y3JvcU7YjmdOEOracUXTiET/PAWI2hhoUH1t4HbwJj42YEnbkg== + version "1.10.24" + resolved "https://registry.yarnpkg.com/@types/underscore/-/underscore-1.10.24.tgz#dede004deed3b3f99c4db0bdb9ee21cae25befdd" + integrity sha512-T3NQD8hXNW2sRsSbLNjF/aBo18MyJlbw0lSpQHB/eZZtScPdexN4HSa8cByYwTw9Wy7KuOFr81mlDQcQQaZ79w== "@types/web3@1.0.19": version "1.0.19" @@ -1160,24 +837,15 @@ "@types/bn.js" "*" "@types/underscore" "*" -"@web3-js/scrypt-shim@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@web3-js/scrypt-shim/-/scrypt-shim-0.1.0.tgz#0bf7529ab6788311d3e07586f7d89107c3bea2cc" - integrity sha512-ZtZeWCc/s0nMcdx/+rZwY1EcuRdemOK9ag21ty9UsHkFxsNb/AaoucUz0iPuyGe0Ku+PFuRmWZG7Z7462p9xPw== - dependencies: - scryptsy "^2.1.0" - semver "^6.3.0" +"@ungap/promise-all-settled@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" + integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== -"@web3-js/websocket@^1.0.29": - version "1.0.30" - resolved "https://registry.yarnpkg.com/@web3-js/websocket/-/websocket-1.0.30.tgz#9ea15b7b582cf3bf3e8bc1f4d3d54c0731a87f87" - integrity sha512-fDwrD47MiDrzcJdSeTLF75aCcxVVt8B1N74rA+vh2XCAvFy4tEWJjtnUtj2QG7/zlQ6g9cQ88bZFBxwd9/FmtA== - dependencies: - debug "^2.2.0" - es5-ext "^0.10.50" - nan "^2.14.0" - typedarray-to-buffer "^3.1.5" - yaeti "^0.0.6" +"@yarnpkg/lockfile@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== abbrev@1: version "1.1.1" @@ -1232,20 +900,20 @@ accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" -acorn-jsx@^5.0.0, acorn-jsx@^5.2.0: +acorn-jsx@^5.0.0, acorn-jsx@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== acorn@^6.0.7: - version "6.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" - integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== + version "6.4.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" + integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== acorn@^7.4.0: - version "7.4.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" - integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w== + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== address@^1.0.1: version "1.1.2" @@ -1268,30 +936,30 @@ aes-js@^3.1.1: integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== agent-base@6: - version "6.0.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.1.tgz#808007e4e5867decb0ab6ab2f928fbdb5a596db4" - integrity sha512-01q25QQDwLSsyfhrKbn8yuur+JNw0H+0Y4JiGIKd3z9aYk/w/2kxD/Upc+t2ZBBSUNff50VjPsSW2YxM8QYKVg== + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" -ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4, ajv@^6.6.1, ajv@^6.9.1: - version "6.12.5" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.5.tgz#19b0e8bae8f476e5ba666300387775fb1a00a4da" - integrity sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag== +ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.6.1, ajv@^6.9.1: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + 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" -ajv@^6.12.3: - version "6.12.4" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.4.tgz#0614facc4522127fa713445c6bfd3ebd376e2234" - integrity sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ== +ajv@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.0.3.tgz#13ae747eff125cafb230ac504b2406cf371eece2" + integrity sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ== dependencies: fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" uri-js "^4.2.2" amdefine@>=0.0.4: @@ -1309,13 +977,6 @@ ansi-colors@4.1.1, ansi-colors@^4.1.1: resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== -ansi-colors@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" - integrity sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA== - dependencies: - ansi-wrap "^0.1.0" - ansi-escapes@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" @@ -1328,13 +989,6 @@ ansi-escapes@^4.3.0: dependencies: type-fest "^0.11.0" -ansi-gray@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" - integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE= - dependencies: - ansi-wrap "0.1.0" - ansi-regex@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" @@ -1367,37 +1021,18 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.0" -ansi-styles@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" - integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: - "@types/color-name" "^1.1.1" color-convert "^2.0.1" -ansi-wrap@0.1.0, ansi-wrap@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" - integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= - antlr4@4.7.1: version "4.7.1" resolved "https://registry.yarnpkg.com/antlr4/-/antlr4-4.7.1.tgz#69984014f096e9e775f53dd9744bf994d8959773" integrity sha512-haHyTW7Y9joE5MVs37P2lNYfU2RWBLfcRDD8OWldcdZm5TiCE91B5Xl1oWSwiDUSd4rlExpt2pu1fksYQjRBYQ== -any-promise@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" - integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= - -anymatch@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" - integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== - dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" - anymatch@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" @@ -1406,18 +1041,6 @@ anymatch@~3.1.1: normalize-path "^3.0.0" picomatch "^2.0.4" -append-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1" - integrity sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE= - dependencies: - buffer-equal "^1.0.0" - -archy@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" - integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= - argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -1430,78 +1053,32 @@ arr-diff@^4.0.0: resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= -arr-filter@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/arr-filter/-/arr-filter-1.1.2.tgz#43fdddd091e8ef11aa4c45d9cdc18e2dff1711ee" - integrity sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4= - dependencies: - make-iterator "^1.0.0" - -arr-flatten@^1.0.1, arr-flatten@^1.1.0: +arr-flatten@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== -arr-map@^2.0.0, arr-map@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/arr-map/-/arr-map-2.0.2.tgz#3a77345ffc1cf35e2a91825601f9e58f2e24cac4" - integrity sha1-Onc0X/wc814qkYJWAfnljy4kysQ= - dependencies: - make-iterator "^1.0.0" - arr-union@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= -array-each@^1.0.0, array-each@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" - integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8= - array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI= array-includes@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" - integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== + version "3.1.2" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.2.tgz#a8db03e0b88c8c6aeddc49cb132f9bcab4ebf9c8" + integrity sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0" + es-abstract "^1.18.0-next.1" + get-intrinsic "^1.0.1" is-string "^1.0.5" -array-initial@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/array-initial/-/array-initial-1.1.0.tgz#2fa74b26739371c3947bd7a7adc73be334b3d795" - integrity sha1-L6dLJnOTccOUe9enrcc74zSz15U= - dependencies: - array-slice "^1.0.0" - is-number "^4.0.0" - -array-last@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/array-last/-/array-last-1.3.0.tgz#7aa77073fec565ddab2493f5f88185f404a9d336" - integrity sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg== - dependencies: - is-number "^4.0.0" - -array-slice@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4" - integrity sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w== - -array-sort@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-sort/-/array-sort-1.0.0.tgz#e4c05356453f56f53512a7d1d6123f2c54c0a88a" - integrity sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg== - dependencies: - default-compare "^1.0.0" - get-value "^2.0.6" - kind-of "^5.0.2" - array-union@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" @@ -1513,22 +1090,24 @@ array-unique@^0.3.2: integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= array.prototype.flat@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" - integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" + integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" + es-abstract "^1.18.0-next.1" -array.prototype.map@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array.prototype.map/-/array.prototype.map-1.0.2.tgz#9a4159f416458a23e9483078de1106b2ef68f8ec" - integrity sha512-Az3OYxgsa1g7xDYp86l0nnN4bcmuEITGe1rbdEBVkrqkzMgDcbdQ2R7r41pNzti+4NMces3H8gMmuioZUilLgw== +array.prototype.map@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array.prototype.map/-/array.prototype.map-1.0.3.tgz#1609623618d3d84134a37d4a220030c2bd18420b" + integrity sha512-nNcb30v0wfDyIe26Yif3PcV1JXQp4zEeEfupG7L4SRjnD6HLbO5b2a7eVSba53bOx4YCHYMBHt+Fp4vYstneRA== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" + es-abstract "^1.18.0-next.1" es-array-method-boxes-properly "^1.0.0" - is-string "^1.0.4" + is-string "^1.0.5" asap@~2.0.6: version "2.0.6" @@ -1577,20 +1156,10 @@ astral-regex@^1.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== -async-done@^1.2.0, async-done@^1.2.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/async-done/-/async-done-1.3.2.tgz#5e15aa729962a4b07414f528a88cdf18e0b290a2" - integrity sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.2" - process-nextick-args "^2.0.0" - stream-exhaust "^1.0.1" - -async-each@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" - integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== async-eventemitter@^0.2.2: version "0.2.4" @@ -1604,13 +1173,6 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== -async-settle@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/async-settle/-/async-settle-1.0.0.tgz#1d0a914bb02575bec8a8f3a74e5080f72b2c0c6b" - integrity sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs= - dependencies: - async-done "^1.2.2" - async@1.x, async@^1.4.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" @@ -1651,16 +1213,16 @@ aws-sign2@~0.7.0: integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= aws4@^1.8.0: - version "1.10.1" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.1.tgz#e1e82e4f3e999e2cfd61b161280d16a111f86428" - integrity sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA== + version "1.11.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== -axios@^0.19.2: - version "0.19.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" - integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== +axios@^0.21.1: + version "0.21.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" + integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== dependencies: - follow-redirects "1.5.10" + follow-redirects "^1.10.0" babel-code-frame@^6.26.0: version "6.26.0" @@ -2181,21 +1743,6 @@ babylon@^6.18.0: resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== -bach@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/bach/-/bach-1.2.0.tgz#4b3ce96bf27134f79a1b414a51c14e34c3bd9880" - integrity sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA= - dependencies: - arr-filter "^1.1.1" - arr-flatten "^1.0.1" - arr-map "^2.0.0" - array-each "^1.0.0" - array-initial "^1.0.0" - array-last "^1.1.1" - async-done "^1.2.2" - async-settle "^1.0.0" - now-and-later "^2.0.0" - backoff@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/backoff/-/backoff-2.5.0.tgz#f616eda9d3e4b66b8ca7fca79f695722c5f8e26f" @@ -2208,17 +1755,17 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= -base-x@^3.0.2: +base-x@^3.0.2, base-x@^3.0.8: version "3.0.8" resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.8.tgz#1e1106c2537f0162e8b52474a557ebb09000018d" integrity sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA== dependencies: safe-buffer "^5.0.1" -base64-js@^1.0.2: - version "1.3.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" - integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== base@^0.11.1: version "0.11.2" @@ -2245,27 +1792,17 @@ bech32@1.1.4: resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== -bignumber.js@*: - version "9.0.0" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.0.tgz#805880f84a329b5eac6e7cb6f8274b6d82bdf075" - integrity sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A== - -bignumber.js@^9.0.0, bignumber.js@^9.0.1: +bignumber.js@9.0.1, bignumber.js@^9.0.0, bignumber.js@^9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.1.tgz#8d7ba124c882bfd8e43260c67475518d0689e4e5" integrity sha512-IdZR9mh6ahOBv/hYGiXyVuyCetmGJhtYkqLBpTStdhEGjegpPlUawydyaF3pbIOFynJTpllEs+NP+CS9jKFLjA== -binary-extensions@^1.0.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" - integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== - binary-extensions@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" - integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -bindings@^1.2.1, bindings@^1.5.0: +bindings@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== @@ -2290,14 +1827,6 @@ bip66@^1.1.5: dependencies: safe-buffer "^5.0.1" -bl@^1.0.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7" - integrity sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww== - dependencies: - readable-stream "^2.3.5" - safe-buffer "^5.1.1" - blakejs@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.1.0.tgz#69df92ef953aa88ca51a32df6ab1c54a155fc7a5" @@ -2323,7 +1852,7 @@ bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.10.0, bn.js@^4.11.0, bn.js@^4.11.1, bn.js@^ resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== -bn.js@^5.1.1, bn.js@^5.1.2: +bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2: version "5.1.3" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ== @@ -2352,7 +1881,7 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^2.3.1, braces@^2.3.2: +braces@^2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== @@ -2417,11 +1946,11 @@ browserify-des@^1.0.0: safe-buffer "^5.1.2" browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= + version "4.1.0" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== dependencies: - bn.js "^4.1.0" + bn.js "^5.0.0" randombytes "^2.0.1" browserify-sign@^4.0.0: @@ -2463,34 +1992,6 @@ bs58check@^2.1.2: create-hash "^1.1.0" safe-buffer "^5.1.2" -buffer-alloc-unsafe@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" - integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== - -buffer-alloc@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" - integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== - dependencies: - buffer-alloc-unsafe "^1.1.0" - buffer-fill "^1.0.0" - -buffer-crc32@~0.2.3: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" - integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= - -buffer-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" - integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74= - -buffer-fill@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" - integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= - buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -2513,13 +2014,20 @@ buffer-xor@^2.0.1: dependencies: safe-buffer "^5.1.1" -buffer@^5.0.5, buffer@^5.2.1, buffer@^5.6.0: - version "5.6.0" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" - integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== +buffer@^5.0.5, buffer@^5.2.1, buffer@^5.5.0, buffer@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +bufferutil@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.3.tgz#66724b756bed23cd7c28c4d306d7994f9943cc6b" + integrity sha512-yEYTwGndELGvfXsImMBLop58eaGW+YdONi1fNjTINSY98tmMmFijBG6WXgdkfuLNt4imzQNtIE+eBp1PVpMCSw== dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" + node-gyp-build "^4.2.0" bytes@3.1.0: version "3.1.0" @@ -2577,6 +2085,14 @@ cachedown@1.0.0: abstract-leveldown "^2.4.1" lru-cache "^3.2.0" +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + caller-callsite@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-2.0.0.tgz#847e0fce0a223750a9a027c54b33731ad3154134" @@ -2606,15 +2122,20 @@ camelcase@^3.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= -camelcase@^5.0.0, camelcase@^5.3.1: +camelcase@^5.0.0: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +camelcase@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + caniuse-lite@^1.0.30000844: - version "1.0.30001116" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001116.tgz#f3a3dea347f9294a3bdc4292309039cc84117fb8" - integrity sha512-f2lcYnmAI5Mst9+g0nkMIznFGsArRmZ0qU+dnq8l91hymdc2J3SFbiPhOJEeDqC1vtE8nc1qNQyklzB8veJefQ== + version "1.0.30001179" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001179.tgz#b0803883b4471a6c62066fb1752756f8afc699c8" + integrity sha512-blMmO0QQujuUWZKyVrD1msR4WNDAqb/UPO1Sw2WWsQ7deoM5bJiicKnWJ1Y0NS/aGINSnKPIWBMw5luX+NDUCA== caseless@^0.12.0, caseless@~0.12.0: version "0.12.0" @@ -2622,14 +2143,14 @@ caseless@^0.12.0, caseless@~0.12.0: integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= cbor@^5.0.2: - version "5.1.0" - resolved "https://registry.yarnpkg.com/cbor/-/cbor-5.1.0.tgz#c3be220dcbbd96a338d279a664237aed3f596904" - integrity sha512-qzEc7kUShdMbWTaUH7X+aHW8owvBU3FS0dfYR1lGYpoZr0mGJhhojLlZJH653x/DfeMZ56h315FRNBUIG1R7qg== + version "5.2.0" + resolved "https://registry.yarnpkg.com/cbor/-/cbor-5.2.0.tgz#4cca67783ccd6de7b50ab4ed62636712f287a67c" + integrity sha512-5IMhi9e1QU76ppa5/ajP1BmMWZ2FHkhAhjeVKQ/EFCgYSEaeVaoGtL7cxJskf9oCCk+XjzaIdc3IuU/dbA/o2A== dependencies: - bignumber.js "^9.0.0" + bignumber.js "^9.0.1" nofilter "^1.0.4" -chai@^4.2.0: +chai@4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw== @@ -2706,10 +2227,10 @@ chokidar@3.3.0: optionalDependencies: fsevents "~2.1.1" -chokidar@3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.3.1.tgz#c84e5b3d18d9a4d77558fef466b1bf16bbeb3450" - integrity sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg== +chokidar@3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.3.tgz#c1df38231448e45ca4ac588e6c79573ba6a57d5b" + integrity sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ== dependencies: anymatch "~3.1.1" braces "~3.0.2" @@ -2717,33 +2238,14 @@ chokidar@3.3.1: is-binary-path "~2.1.0" is-glob "~4.0.1" normalize-path "~3.0.0" - readdirp "~3.3.0" + readdirp "~3.5.0" optionalDependencies: fsevents "~2.1.2" -chokidar@^2.0.0: - version "2.1.8" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" - integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== - 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" - chokidar@^3.4.0: - version "3.4.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d" - integrity sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A== + version "3.5.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" + integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== dependencies: anymatch "~3.1.1" braces "~3.0.2" @@ -2751,9 +2253,9 @@ chokidar@^3.4.0: is-binary-path "~2.1.0" is-glob "~4.0.1" normalize-path "~3.0.0" - readdirp "~3.4.0" + readdirp "~3.5.0" optionalDependencies: - fsevents "~2.1.2" + fsevents "~2.3.1" chownr@^1.1.1: version "1.1.4" @@ -2765,6 +2267,17 @@ ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +cids@^0.7.1: + version "0.7.5" + resolved "https://registry.yarnpkg.com/cids/-/cids-0.7.5.tgz#60a08138a99bfb69b6be4ceb63bfef7a396b28b2" + integrity sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA== + dependencies: + buffer "^5.5.0" + class-is "^1.1.0" + multibase "~0.6.0" + multicodec "^1.0.0" + multihashes "~0.4.15" + cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -2773,6 +2286,11 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: inherits "^2.0.1" safe-buffer "^5.0.1" +class-is@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/class-is/-/class-is-1.1.0.tgz#9d3c0fba0440d211d843cec3dedfa48055005825" + integrity sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw== + class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -2833,11 +2351,6 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" -clone-buffer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" - integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg= - clone-response@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" @@ -2845,39 +2358,16 @@ clone-response@^1.0.2: dependencies: mimic-response "^1.0.0" -clone-stats@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" - integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= - -clone@2.1.2, clone@^2.0.0, clone@^2.1.1: +clone@2.1.2, clone@^2.0.0: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= -cloneable-readable@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec" - integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ== - dependencies: - inherits "^2.0.1" - process-nextick-args "^2.0.0" - readable-stream "^2.3.5" - code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= -collection-map@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-map/-/collection-map-1.0.0.tgz#aea0f06f8d26c780c2b75494385544b2255af18c" - integrity sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw= - dependencies: - arr-map "^2.0.2" - for-own "^1.0.0" - make-iterator "^1.0.0" - collection-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" @@ -2910,11 +2400,6 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-support@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" - integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== - colors@^1.1.2, colors@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" @@ -2942,11 +2427,6 @@ commander@3.0.2: resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== -commander@^2.8.1: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - component-emitter@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" @@ -2967,10 +2447,10 @@ concat-stream@^1.5.1, concat-stream@^1.6.0, concat-stream@^1.6.2: readable-stream "^2.2.2" typedarray "^0.0.6" -confusing-browser-globals@^1.0.9: - version "1.0.9" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz#72bc13b483c0276801681871d4898516f8f54fdd" - integrity sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw== +confusing-browser-globals@^1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59" + integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA== contains-path@^0.1.0: version "0.1.0" @@ -2984,12 +2464,21 @@ content-disposition@0.5.3: dependencies: safe-buffer "5.1.2" +content-hash@^2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/content-hash/-/content-hash-2.5.2.tgz#bbc2655e7c21f14fd3bfc7b7d4bfe6e454c9e211" + integrity sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw== + dependencies: + cids "^0.7.1" + multicodec "^0.5.5" + multihashes "^0.4.15" + content-type@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== -convert-source-map@^1.5.0, convert-source-map@^1.5.1: +convert-source-map@^1.5.1: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== @@ -3021,23 +2510,15 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -copy-props@^2.0.1: - version "2.0.4" - resolved "https://registry.yarnpkg.com/copy-props/-/copy-props-2.0.4.tgz#93bb1cadfafd31da5bb8a9d4b41f471ec3a72dfe" - integrity sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A== - dependencies: - each-props "^1.3.0" - is-plain-object "^2.0.1" - core-js-pure@^3.0.1: - version "3.6.5" - resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.5.tgz#c79e75f5e38dbc85a662d91eea52b8256d53b813" - integrity sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA== + version "3.8.3" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.8.3.tgz#10e9e3b2592ecaede4283e8f3ad7020811587c02" + integrity sha512-V5qQZVAr9K0xu7jXg1M7qTEwuxUgqr7dUOezGaNa7i+Xn9oXAU/d1fzqD9ObuwpVQOaorO5s70ckyi1woP9lVA== core-js@^2.4.0, core-js@^2.5.0: - version "2.6.11" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" - integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== + version "2.6.12" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.12.tgz#d9333dfa7b065e347cc5682219d6f690859cc2ec" + integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" @@ -3170,31 +2651,31 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8, debug@^2.6. dependencies: ms "2.0.0" -debug@3.2.6, debug@^3.1.0: +debug@3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== dependencies: ms "^2.1.1" -debug@4, debug@^4.1.1: +debug@4, debug@^4.0.1, debug@^4.1.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== + dependencies: + ms "2.1.2" + +debug@4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== dependencies: ms "2.1.2" -debug@=3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - -debug@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== +debug@^3.1.0: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" @@ -3203,6 +2684,11 @@ decamelize@^1.1.1, decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + decode-uri-component@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" @@ -3215,59 +2701,6 @@ decompress-response@^3.2.0, decompress-response@^3.3.0: dependencies: mimic-response "^1.0.0" -decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1" - integrity sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ== - dependencies: - file-type "^5.2.0" - is-stream "^1.1.0" - tar-stream "^1.5.2" - -decompress-tarbz2@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz#3082a5b880ea4043816349f378b56c516be1a39b" - integrity sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A== - dependencies: - decompress-tar "^4.1.0" - file-type "^6.1.0" - is-stream "^1.1.0" - seek-bzip "^1.0.5" - unbzip2-stream "^1.0.9" - -decompress-targz@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee" - integrity sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w== - dependencies: - decompress-tar "^4.1.1" - file-type "^5.2.0" - is-stream "^1.1.0" - -decompress-unzip@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-4.0.1.tgz#deaaccdfd14aeaf85578f733ae8210f9b4848f69" - integrity sha1-3qrM39FK6vhVePczroIQ+bSEj2k= - dependencies: - file-type "^3.8.0" - get-stream "^2.2.0" - pify "^2.3.0" - yauzl "^2.4.2" - -decompress@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.1.tgz#007f55cc6a62c055afa37c07eb6a4ee1b773f118" - integrity sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ== - dependencies: - decompress-tar "^4.0.0" - decompress-tarbz2 "^4.0.0" - decompress-targz "^4.0.0" - decompress-unzip "^4.0.1" - graceful-fs "^4.1.10" - make-dir "^1.0.0" - pify "^2.3.0" - strip-dirs "^2.0.0" - deep-eql@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" @@ -3292,18 +2725,6 @@ deep-is@^0.1.3, deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= -default-compare@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/default-compare/-/default-compare-1.0.0.tgz#cb61131844ad84d84788fb68fd01681ca7781a2f" - integrity sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ== - dependencies: - kind-of "^5.0.2" - -default-resolution@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/default-resolution/-/default-resolution-2.0.0.tgz#bcb82baa72ad79b426a76732f1a81ad6df26d684" - integrity sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ= - defer-to-connect@^1.0.1: version "1.1.3" resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" @@ -3381,11 +2802,6 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= -detect-file@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" - integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= - detect-indent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" @@ -3478,24 +2894,6 @@ duplexer3@^0.1.4: resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= -duplexify@^3.6.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" - integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== - dependencies: - end-of-stream "^1.0.0" - inherits "^2.0.1" - readable-stream "^2.0.0" - stream-shift "^1.0.0" - -each-props@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/each-props/-/each-props-1.3.2.tgz#ea45a414d16dd5cfa419b1a81720d5ca06892333" - integrity sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA== - dependencies: - is-plain-object "^2.0.1" - object.defaults "^1.1.0" - ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -3510,32 +2908,9 @@ ee-first@1.1.1: integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= electron-to-chromium@^1.3.47: - version "1.3.538" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.538.tgz#15226638ee9db5d8e74f4c860cef6078d8e1e871" - integrity sha512-rlyYXLlOoZkJuvY4AJXUpP7CHRVtwZz311HPVoEO1UHo/kqDCsP1pNas0A9paZuPEiYGdLwrjllF2hs69NEaTw== - -elliptic@6.3.3: - version "6.3.3" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.3.3.tgz#5482d9646d54bcb89fd7d994fc9e2e9568876e3f" - integrity sha1-VILZZG1UvLif19mU/J4ulWiHbj8= - dependencies: - bn.js "^4.4.0" - brorand "^1.0.1" - hash.js "^1.0.0" - inherits "^2.0.1" - -elliptic@6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" - integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== - 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" + version "1.3.642" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.642.tgz#8b884f50296c2ae2a9997f024d0e3e57facc2b94" + integrity sha512-cev+jOrz/Zm1i+Yh334Hed6lQVOkkemk2wRozfMF4MtTR7pxf3r3L5Rbd7uX1zMcEqVJ7alJBnJL7+JffkC6FQ== elliptic@6.5.3, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3: version "6.5.3" @@ -3561,9 +2936,9 @@ emoji-regex@^8.0.0: integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== emoji-regex@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.0.0.tgz#48a2309cc8a1d2e9d23bc6a67c39b63032e76ea4" - integrity sha512-6p1NII1Vm62wni/VR/cUMauVQoxmLVb9csqQlvLz+hO2gk8U2UYDfXHQSUYIBKmZwAKz867IDqG7B+u0mj+M6w== + version "9.2.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.0.tgz#a26da8e832b16a9753309f25e35e3c0efb9a066a" + integrity sha512-DNc3KFPK18bPdElMJnf/Pkv5TXhxFU3YFDEuGLDRtPmV4rkmCjBkCSEp22u6rBHdSN9Vlp/GK7k98prmE1Jgug== encode-utf8@^1.0.2: version "1.0.3" @@ -3593,7 +2968,7 @@ encoding@^0.1.11: dependencies: iconv-lite "^0.6.2" -end-of-stream@^1.0.0, end-of-stream@^1.1.0: +end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -3613,9 +2988,9 @@ env-paths@^2.2.0: integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA== errno@~0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" - integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== dependencies: prr "~1.0.1" @@ -3626,40 +3001,25 @@ error-ex@^1.2.0, error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.2, es-abstract@^1.17.4, es-abstract@^1.17.5: - version "1.17.6" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" - integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.2.0" - is-regex "^1.1.0" - object-inspect "^1.7.0" - object-keys "^1.1.1" - object.assign "^4.1.0" - string.prototype.trimend "^1.0.1" - string.prototype.trimstart "^1.0.1" - -es-abstract@^1.18.0-next.0: - version "1.18.0-next.0" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.0.tgz#b302834927e624d8e5837ed48224291f2c66e6fc" - integrity sha512-elZXTZXKn51hUBdJjSZGYRujuzilgXo8vSPQzjGYXLvSlGiCo8VO8ZGV3kjo9a0WNJJ57hENagwbtlRuHuzkcQ== +es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: + version "1.18.0-next.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.2.tgz#088101a55f0541f595e7e057199e27ddc8f3a5c2" + integrity sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw== dependencies: + call-bind "^1.0.2" es-to-primitive "^1.2.1" function-bind "^1.1.1" + get-intrinsic "^1.0.2" has "^1.0.3" has-symbols "^1.0.1" - is-callable "^1.2.0" - is-negative-zero "^2.0.0" + is-callable "^1.2.2" + is-negative-zero "^2.0.1" is-regex "^1.1.1" - object-inspect "^1.8.0" + object-inspect "^1.9.0" object-keys "^1.1.1" - object.assign "^4.1.0" - string.prototype.trimend "^1.0.1" - string.prototype.trimstart "^1.0.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.3" + string.prototype.trimstart "^1.0.3" es-array-method-boxes-properly@^1.0.0: version "1.0.0" @@ -3667,11 +3027,12 @@ es-array-method-boxes-properly@^1.0.0: integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== es-get-iterator@^1.0.2: - version "1.1.0" - resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.0.tgz#bb98ad9d6d63b31aacdc8f89d5d0ee57bcb5b4c8" - integrity sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ== + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.1.tgz#b93ddd867af16d5118e00881396533c1c6647ad9" + integrity sha512-qorBw8Y7B15DVLaJWy6WdEV/ZkieBcu6QCq/xzWzGOKJqgG1j754vXRfZ3NY7HSShneqU43mPB4OkQBTkvHhFw== dependencies: - es-abstract "^1.17.4" + call-bind "^1.0.0" + get-intrinsic "^1.0.1" has-symbols "^1.0.1" is-arguments "^1.0.4" is-map "^2.0.1" @@ -3688,7 +3049,7 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50: +es5-ext@^0.10.35, es5-ext@^0.10.50: version "0.10.53" resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== @@ -3697,7 +3058,7 @@ es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50: es6-symbol "~3.1.3" next-tick "~1.0.0" -es6-iterator@^2.0.1, es6-iterator@^2.0.3, es6-iterator@~2.0.3: +es6-iterator@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" integrity sha1-p96IkUGgWpSwhUQDstCg+/qY87c= @@ -3714,16 +3075,6 @@ es6-symbol@^3.1.1, es6-symbol@~3.1.3: d "^1.0.1" ext "^1.1.2" -es6-weak-map@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" - integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== - dependencies: - d "1" - es5-ext "^0.10.46" - es6-iterator "^2.0.3" - es6-symbol "^3.1.1" - escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -3734,7 +3085,7 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1 resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -escape-string-regexp@^4.0.0: +escape-string-regexp@4.0.0, escape-string-regexp@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== @@ -3751,16 +3102,16 @@ escodegen@1.8.x: optionalDependencies: source-map "~0.2.0" -eslint-config-airbnb-base@^14.2.0: - version "14.2.0" - resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.0.tgz#fe89c24b3f9dc8008c9c0d0d88c28f95ed65e9c4" - integrity sha512-Snswd5oC6nJaevs3nZoLSTvGJBvzTfnBqOIArkf3cbyTyq9UD79wOk8s+RiL6bhca0p/eRO6veczhf6A/7Jy8Q== +eslint-config-airbnb-base@14.2.1: + version "14.2.1" + resolved "https://registry.yarnpkg.com/eslint-config-airbnb-base/-/eslint-config-airbnb-base-14.2.1.tgz#8a2eb38455dc5a312550193b319cdaeef042cd1e" + integrity sha512-GOrQyDtVEc1Xy20U7vsB2yAoB4nBlfH5HZJeatRXHleO+OS5Ot+MWij4Dpltw4/DyIkqUfqz1epfhVR5XWWQPA== dependencies: - confusing-browser-globals "^1.0.9" - object.assign "^4.1.0" + confusing-browser-globals "^1.0.10" + object.assign "^4.1.2" object.entries "^1.1.2" -eslint-import-resolver-node@^0.3.3: +eslint-import-resolver-node@^0.3.4: version "0.3.4" resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== @@ -3776,17 +3127,17 @@ eslint-module-utils@^2.6.0: debug "^2.6.9" pkg-dir "^2.0.0" -eslint-plugin-import@^2.22.0: - version "2.22.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.0.tgz#92f7736fe1fde3e2de77623c838dd992ff5ffb7e" - integrity sha512-66Fpf1Ln6aIS5Gr/55ts19eUuoDhAbZgnr6UxK5hbDx6l/QgQgx61AePq+BV4PP2uXQFClgMVzep5zZ94qqsxg== +eslint-plugin-import@2.22.1: + version "2.22.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702" + integrity sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw== dependencies: array-includes "^3.1.1" array.prototype.flat "^1.2.3" contains-path "^0.1.0" debug "^2.6.9" doctrine "1.5.0" - eslint-import-resolver-node "^0.3.3" + eslint-import-resolver-node "^0.3.4" eslint-module-utils "^2.6.0" has "^1.0.3" minimatch "^3.0.4" @@ -3795,7 +3146,7 @@ eslint-plugin-import@^2.22.0: resolve "^1.17.0" tsconfig-paths "^3.9.0" -eslint-plugin-mocha@^8.0.0: +eslint-plugin-mocha@8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/eslint-plugin-mocha/-/eslint-plugin-mocha-8.0.0.tgz#7ec5d228bcb3735301701dfbc3376320a1ca3791" integrity sha512-n67etbWDz6NQM+HnTwZHyBwz/bLlYPOxUbw7bPuCyFujv7ZpaT/Vn6KTAbT02gf7nRljtYIjWcTxK/n8a57rQQ== @@ -3811,7 +3162,7 @@ eslint-scope@^4.0.3: esrecurse "^4.1.0" estraverse "^4.1.1" -eslint-scope@^5.1.0: +eslint-scope@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== @@ -3838,6 +3189,54 @@ eslint-visitor-keys@^1.0.0, eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3 resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== +eslint-visitor-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" + integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== + +eslint@7.18.0: + version "7.18.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.18.0.tgz#7fdcd2f3715a41fe6295a16234bd69aed2c75e67" + integrity sha512-fbgTiE8BfUJZuBeq2Yi7J3RB3WGUQ9PNuNbmgi6jt9Iv8qrkxfy19Ds3OpL1Pm7zg3BtTVhvcUZbIRQ0wmSjAQ== + dependencies: + "@babel/code-frame" "^7.0.0" + "@eslint/eslintrc" "^0.3.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.2.0" + esutils "^2.0.2" + file-entry-cache "^6.0.0" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash "^4.17.20" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.4" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + eslint@^5.6.0: version "5.16.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" @@ -3880,49 +3279,6 @@ eslint@^5.6.0: table "^5.2.3" text-table "^0.2.0" -eslint@^7.9.0: - version "7.9.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.9.0.tgz#522aeccc5c3a19017cf0cb46ebfd660a79acf337" - integrity sha512-V6QyhX21+uXp4T+3nrNfI3hQNBDa/P8ga7LoQOenwrlEFXrEnUEE+ok1dMtaS3b6rmLXhT1TkTIsG75HMLbknA== - dependencies: - "@babel/code-frame" "^7.0.0" - "@eslint/eslintrc" "^0.1.3" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.0.1" - doctrine "^3.0.0" - enquirer "^2.3.5" - eslint-scope "^5.1.0" - eslint-utils "^2.1.0" - eslint-visitor-keys "^1.3.0" - espree "^7.3.0" - esquery "^1.2.0" - esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^12.1.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash "^4.17.19" - minimatch "^3.0.4" - natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^5.2.3" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - espree@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" @@ -3932,22 +3288,15 @@ espree@^5.0.1: acorn-jsx "^5.0.0" eslint-visitor-keys "^1.0.0" -espree@^7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.0.tgz#dc30437cf67947cf576121ebd780f15eeac72348" - integrity sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw== +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== dependencies: acorn "^7.4.0" - acorn-jsx "^5.2.0" + acorn-jsx "^5.3.1" eslint-visitor-keys "^1.3.0" -esprima-extract-comments@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/esprima-extract-comments/-/esprima-extract-comments-1.1.0.tgz#0dacab567a5900240de6d344cf18c33617becbc9" - integrity sha512-sBQUnvJwpeE9QnPrxh7dpI/dp67erYG4WXEAreAMoelPRpMR7NWb4YtwRPn9b+H1uLQKl/qS8WYmyaljTpjIsw== - dependencies: - esprima "^4.0.0" - esprima@2.7.x, esprima@^2.7.1: version "2.7.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" @@ -3987,11 +3336,6 @@ estraverse@^5.1.0, estraverse@^5.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== -estree-walker@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" - integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== - esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -4023,13 +3367,13 @@ eth-ens-namehash@2.0.8, eth-ens-namehash@^2.0.8: idna-uts46-hx "^2.3.1" js-sha3 "^0.5.7" -eth-gas-reporter@^0.2.19: - version "0.2.19" - resolved "https://registry.yarnpkg.com/eth-gas-reporter/-/eth-gas-reporter-0.2.19.tgz#57ce74e0617d021d04fd1789a4232837d0f41918" - integrity sha512-yQmbAa6O9/Yl/syNml2A0R+ZLQnJ9m9jogFXHzjMWVBMUVnAcEskOVyxaMYddkclZdYIMxE99tQy830C2jLsAQ== +eth-gas-reporter@^0.2.20: + version "0.2.20" + resolved "https://registry.yarnpkg.com/eth-gas-reporter/-/eth-gas-reporter-0.2.20.tgz#431c144f00cd01cc29ce211a10a4e5a539a84e25" + integrity sha512-gp/PhKrr3hYEEFg5emIQxbhQkVH2mg+iHcM6GvqhzFx5IkZGeQx+5oNzYDEfBXQefcA90rwWHId6eCty6jbdDA== dependencies: "@ethersproject/abi" "^5.0.0-beta.146" - "@solidity-parser/parser" "^0.8.0" + "@solidity-parser/parser" "^0.8.2" cli-table3 "^0.5.0" colors "^1.1.2" ethereumjs-util "6.2.0" @@ -4111,10 +3455,10 @@ eth-query@^2.0.2, eth-query@^2.1.0, eth-query@^2.1.2: json-rpc-random-id "^1.0.0" xtend "^4.0.1" -eth-sig-util@2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-2.3.0.tgz#c54a6ac8e8796f7e25f59cf436982a930e645231" - integrity sha512-ugD1AvaggvKaZDgnS19W5qOfepjGc7qHrt7TrAaL54gJw9SHvgIXJ3r2xOMW30RWJZNP+1GlTOy5oye7yXA4xA== +eth-sig-util@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-3.0.0.tgz#75133b3d7c20a5731af0690c385e184ab942b97e" + integrity sha512-4eFkMOhpGbTxBQ3AMzVf0haUX2uTur7DpWiHzWyTURa28BVJJtOkcb9Ok5TV0YvEPG61DODPW7ZUATbJTslioQ== dependencies: buffer "^5.2.1" elliptic "^6.4.0" @@ -4207,15 +3551,15 @@ ethereum-cryptography@^0.1.2, ethereum-cryptography@^0.1.3: secp256k1 "^4.0.1" setimmediate "^1.0.5" -ethereum-waffle@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/ethereum-waffle/-/ethereum-waffle-3.0.2.tgz#3d68f04e61dd01d67633e3c93ed15810b7743b88" - integrity sha512-VJQTL9oBbHIQRxQFuh1NBXoFXSlTIY6DrkPpO7CvevXRI9ixxq01nSc6hPYUIVy7s+U03sp4ply497O6mD3gsQ== +ethereum-waffle@3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ethereum-waffle/-/ethereum-waffle-3.2.1.tgz#9d6d6b93484c5e1b77dfdeb646c050ed877e836e" + integrity sha512-Fhg7BaBuV+Xo5XT+NEC3UTKGunvpq+iQPglZbIAJF6ZcwQwkiKfJUDuB0ZSkg5ntbRS4gpahfoXj1nTzdtx8UA== dependencies: - "@ethereum-waffle/chai" "^3.0.2" - "@ethereum-waffle/compiler" "^3.0.2" - "@ethereum-waffle/mock-contract" "^3.0.2" - "@ethereum-waffle/provider" "^3.0.2" + "@ethereum-waffle/chai" "^3.2.1" + "@ethereum-waffle/compiler" "^3.2.1" + "@ethereum-waffle/mock-contract" "^3.2.1" + "@ethereum-waffle/provider" "^3.2.1" ethers "^5.0.1" ethereumjs-abi@0.6.5: @@ -4226,17 +3570,17 @@ ethereumjs-abi@0.6.5: bn.js "^4.10.0" ethereumjs-util "^4.3.0" -ethereumjs-abi@0.6.7: - version "0.6.7" - resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.7.tgz#d1d1c5cdb8d910a7d97645ba9e93be5d153bba2e" - integrity sha512-EMLOA8ICO5yAaXDhjVEfYjsJIXYutY8ufTE93eEKwsVtp2usQreKwsDTJ9zvam3omYqNuffr8IONIqb2uUslGQ== +ethereumjs-abi@0.6.8, ethereumjs-abi@^0.6.8: + version "0.6.8" + resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz#71bc152db099f70e62f108b7cdfca1b362c6fcae" + integrity sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA== dependencies: bn.js "^4.11.8" ethereumjs-util "^6.0.0" -ethereumjs-abi@^0.6.8, "ethereumjs-abi@git+https://github.com/ethereumjs/ethereumjs-abi.git": +"ethereumjs-abi@git+https://github.com/ethereumjs/ethereumjs-abi.git": version "0.6.8" - resolved "git+https://github.com/ethereumjs/ethereumjs-abi.git#1cfbb13862f90f0b391d8a699544d5fe4dfb8c7b" + resolved "git+https://github.com/ethereumjs/ethereumjs-abi.git#1ce6a1d64235fabe2aaf827fd606def55693508f" dependencies: bn.js "^4.11.8" ethereumjs-util "^6.0.0" @@ -4323,19 +3667,6 @@ ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2, ethereumjs-tx@ ethereum-common "^0.0.18" ethereumjs-util "^5.0.0" -ethereumjs-util@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.1.0.tgz#e9c51e5549e8ebd757a339cc00f5380507e799c8" - integrity sha512-URESKMFbDeJxnAxPppnk2fN6Y3BIatn9fwn76Lm8bQlt+s52TpG8dN9M66MLPuRAiAOIqL3dfwqWJf0sd0fL0Q== - dependencies: - bn.js "^4.11.0" - create-hash "^1.1.2" - ethjs-util "0.1.6" - keccak "^1.0.2" - rlp "^2.0.0" - safe-buffer "^5.1.1" - secp256k1 "^3.0.1" - ethereumjs-util@6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.0.tgz#23ec79b2488a7d041242f01e25f24e5ad0357960" @@ -4349,6 +3680,19 @@ ethereumjs-util@6.2.0: rlp "^2.2.3" secp256k1 "^3.0.1" +ethereumjs-util@6.2.1, ethereumjs-util@^6.0.0, ethereumjs-util@^6.1.0, ethereumjs-util@^6.2.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" + integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== + 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" + ethereumjs-util@^4.3.0: version "4.5.1" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-4.5.1.tgz#f4bf9b3b515a484e3cc8781d61d9d980f7c83bd0" @@ -4373,23 +3717,10 @@ ethereumjs-util@^5.0.0, ethereumjs-util@^5.0.1, ethereumjs-util@^5.1.1, ethereum rlp "^2.0.0" safe-buffer "^5.1.1" -ethereumjs-util@^6.0.0, ethereumjs-util@^6.1.0, ethereumjs-util@^6.2.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" - integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== - 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" - ethereumjs-util@^7.0.2: - version "7.0.5" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.0.5.tgz#bc6e178dedbccc4b188c9ae6ae38db1906884b7b" - integrity sha512-gLLZVXYUHR6pamO3h/+M1jzKz7qE20PKFyFKtq1PrIHA6wcLI96mDz96EMkkhXfrpk30rhpkw0iRnzxKhqaIdQ== + version "7.0.7" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.0.7.tgz#484fb9c03b766b2ee64821281070616562fb5a59" + integrity sha512-vU5rtZBlZsgkTw3o6PDKyB8li2EgLavnAbsKcfsH2YhHH1Le+PP8vEiMnAnvgc1B6uMoaM5GDCrVztBw0Q5K9g== dependencies: "@types/bn.js" "^4.11.3" bn.js "^5.1.2" @@ -4436,143 +3767,76 @@ ethereumjs-vm@^2.1.0, ethereumjs-vm@^2.3.4, ethereumjs-vm@^2.6.0: rustbn.js "~0.2.0" safe-buffer "^5.1.1" -ethereumjs-wallet@0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/ethereumjs-wallet/-/ethereumjs-wallet-0.6.3.tgz#b0eae6f327637c2aeb9ccb9047b982ac542e6ab1" - integrity sha512-qiXPiZOsStem+Dj/CQHbn5qex+FVkuPmGH7SvSnA9F3tdRDt8dLMyvIj3+U05QzVZNPYh4HXEdnzoYI4dZkr9w== +ethereumjs-wallet@0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/ethereumjs-wallet/-/ethereumjs-wallet-0.6.5.tgz#685e9091645cee230ad125c007658833991ed474" + integrity sha512-MDwjwB9VQVnpp/Dc1XzA6J1a3wgHQ4hSvA1uWNatdpOrtCbPVuQSKSyRnjLvS0a+KKMw2pvQ9Ybqpb3+eW8oNA== dependencies: aes-js "^3.1.1" bs58check "^2.1.2" + ethereum-cryptography "^0.1.3" ethereumjs-util "^6.0.0" - hdkey "^1.1.0" randombytes "^2.0.6" safe-buffer "^5.1.2" - scrypt.js "^0.3.0" + scryptsy "^1.2.1" utf8 "^3.0.0" uuid "^3.3.2" -ethers@4.0.0-beta.3: - version "4.0.0-beta.3" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.0-beta.3.tgz#15bef14e57e94ecbeb7f9b39dd0a4bd435bc9066" - integrity sha512-YYPogooSknTwvHg3+Mv71gM/3Wcrx+ZpCzarBj3mqs9njjRkrOo2/eufzhHloOCo3JSoNI4TQJJ6yU5ABm3Uog== +ethers@5.0.26, ethers@^5.0.0, ethers@^5.0.1, ethers@^5.0.9: + version "5.0.26" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.0.26.tgz#ef43c6b6aad71f10c1a184003f69b142d7d03bae" + integrity sha512-MqA8Fvutn3qEW0yBJOHeV6KZmRpF2rqlL2B5058AGkUFsuu6j5Ns/FRlMsbGeQwBz801IB23jQp7vjRfFsKSkg== + dependencies: + "@ethersproject/abi" "5.0.10" + "@ethersproject/abstract-provider" "5.0.8" + "@ethersproject/abstract-signer" "5.0.11" + "@ethersproject/address" "5.0.9" + "@ethersproject/base64" "5.0.7" + "@ethersproject/basex" "5.0.7" + "@ethersproject/bignumber" "5.0.13" + "@ethersproject/bytes" "5.0.9" + "@ethersproject/constants" "5.0.8" + "@ethersproject/contracts" "5.0.9" + "@ethersproject/hash" "5.0.10" + "@ethersproject/hdnode" "5.0.8" + "@ethersproject/json-wallets" "5.0.10" + "@ethersproject/keccak256" "5.0.7" + "@ethersproject/logger" "5.0.8" + "@ethersproject/networks" "5.0.7" + "@ethersproject/pbkdf2" "5.0.7" + "@ethersproject/properties" "5.0.7" + "@ethersproject/providers" "5.0.19" + "@ethersproject/random" "5.0.7" + "@ethersproject/rlp" "5.0.7" + "@ethersproject/sha2" "5.0.7" + "@ethersproject/signing-key" "5.0.8" + "@ethersproject/solidity" "5.0.8" + "@ethersproject/strings" "5.0.8" + "@ethersproject/transactions" "5.0.9" + "@ethersproject/units" "5.0.9" + "@ethersproject/wallet" "5.0.10" + "@ethersproject/web" "5.0.12" + "@ethersproject/wordlists" "5.0.8" + +ethers@^4.0.32, ethers@^4.0.40, ethers@^4.0.46: + version "4.0.48" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.48.tgz#330c65b8133e112b0613156e57e92d9009d8fbbe" + integrity sha512-sZD5K8H28dOrcidzx9f8KYh8083n5BexIO3+SbE4jK83L85FxtpXZBCQdXb8gkg+7sBqomcLhhkU7UHL+F7I2g== dependencies: - "@types/node" "^10.3.2" aes-js "3.0.0" bn.js "^4.4.0" - elliptic "6.3.3" + elliptic "6.5.3" hash.js "1.1.3" js-sha3 "0.5.7" - scrypt-js "2.0.3" + scrypt-js "2.0.4" setimmediate "1.0.4" uuid "2.0.1" xmlhttprequest "1.8.0" -ethers@^4.0.32, ethers@^4.0.40: - version "4.0.47" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.47.tgz#91b9cd80473b1136dd547095ff9171bd1fc68c85" - integrity sha512-hssRYhngV4hiDNeZmVU/k5/E8xmLG8UpcNUzg6mb7lqhgpFPH/t7nuv20RjRrEf0gblzvi2XwR5Te+V3ZFc9pQ== - dependencies: - aes-js "3.0.0" - bn.js "^4.4.0" - elliptic "6.5.2" - 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" - -ethers@^4.0.46: - version "4.0.48" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.48.tgz#330c65b8133e112b0613156e57e92d9009d8fbbe" - integrity sha512-sZD5K8H28dOrcidzx9f8KYh8083n5BexIO3+SbE4jK83L85FxtpXZBCQdXb8gkg+7sBqomcLhhkU7UHL+F7I2g== - dependencies: - aes-js "3.0.0" - bn.js "^4.4.0" - elliptic "6.5.3" - 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" - -ethers@^5.0.0, ethers@^5.0.1, ethers@^5.0.8: - version "5.0.8" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.0.8.tgz#c13d0fdf5e66db8085e2036d3309ed2f8a17ed89" - integrity sha512-of/rPgJ7E3yyBADUv5A7Gtkd7EB8ta/T9NS5CCG9tj9cifnXcI3KIdYQ7d8AS+9vm38pR1g6S5I+Q/mRnlQZlg== - dependencies: - "@ethersproject/abi" "^5.0.0" - "@ethersproject/abstract-provider" "^5.0.0" - "@ethersproject/abstract-signer" "^5.0.0" - "@ethersproject/address" "^5.0.0" - "@ethersproject/base64" "^5.0.0" - "@ethersproject/basex" "^5.0.0" - "@ethersproject/bignumber" "^5.0.0" - "@ethersproject/bytes" "^5.0.0" - "@ethersproject/constants" "^5.0.0" - "@ethersproject/contracts" "^5.0.0" - "@ethersproject/hash" "^5.0.0" - "@ethersproject/hdnode" "^5.0.0" - "@ethersproject/json-wallets" "^5.0.0" - "@ethersproject/keccak256" "^5.0.0" - "@ethersproject/logger" "^5.0.0" - "@ethersproject/networks" "^5.0.0" - "@ethersproject/pbkdf2" "^5.0.0" - "@ethersproject/properties" "^5.0.0" - "@ethersproject/providers" "^5.0.0" - "@ethersproject/random" "^5.0.0" - "@ethersproject/rlp" "^5.0.0" - "@ethersproject/sha2" "^5.0.0" - "@ethersproject/signing-key" "^5.0.0" - "@ethersproject/solidity" "^5.0.0" - "@ethersproject/strings" "^5.0.0" - "@ethersproject/transactions" "^5.0.0" - "@ethersproject/units" "^5.0.0" - "@ethersproject/wallet" "^5.0.0" - "@ethersproject/web" "^5.0.0" - "@ethersproject/wordlists" "^5.0.0" - -ethers@^5.0.9: - version "5.0.24" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.0.24.tgz#fbb8e4d35070d134f2eb846c07500b8c0eaef6d3" - integrity sha512-77CEtVC88fJGEhxGXRvQqAEH6e2A+ZFiv2FBT6ikXndlty5sw6vMatAhg1v+w3CaaGZOf1CP81jl4Mc8Zrj08A== - dependencies: - "@ethersproject/abi" "5.0.9" - "@ethersproject/abstract-provider" "5.0.7" - "@ethersproject/abstract-signer" "5.0.9" - "@ethersproject/address" "5.0.8" - "@ethersproject/base64" "5.0.6" - "@ethersproject/basex" "5.0.6" - "@ethersproject/bignumber" "5.0.12" - "@ethersproject/bytes" "5.0.8" - "@ethersproject/constants" "5.0.7" - "@ethersproject/contracts" "5.0.8" - "@ethersproject/hash" "5.0.9" - "@ethersproject/hdnode" "5.0.7" - "@ethersproject/json-wallets" "5.0.9" - "@ethersproject/keccak256" "5.0.6" - "@ethersproject/logger" "5.0.8" - "@ethersproject/networks" "5.0.6" - "@ethersproject/pbkdf2" "5.0.6" - "@ethersproject/properties" "5.0.6" - "@ethersproject/providers" "5.0.17" - "@ethersproject/random" "5.0.6" - "@ethersproject/rlp" "5.0.6" - "@ethersproject/sha2" "5.0.6" - "@ethersproject/signing-key" "5.0.7" - "@ethersproject/solidity" "5.0.7" - "@ethersproject/strings" "5.0.7" - "@ethersproject/transactions" "5.0.8" - "@ethersproject/units" "5.0.8" - "@ethersproject/wallet" "5.0.9" - "@ethersproject/web" "5.0.11" - "@ethersproject/wordlists" "5.0.7" - -ethjs-unit@0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" - integrity sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk= +ethjs-unit@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" + integrity sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk= dependencies: bn.js "4.11.6" number-to-bn "1.7.0" @@ -4595,6 +3859,16 @@ eventemitter3@3.1.2: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== +eventemitter3@4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" + integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + events@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" @@ -4634,13 +3908,6 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expand-tilde@^2.0.0, expand-tilde@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= - dependencies: - homedir-polyfill "^1.0.1" - express@^4.14.0: version "4.17.1" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" @@ -4699,7 +3966,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@^3.0.0, extend@~3.0.2: +extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== @@ -4727,14 +3994,6 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" -extract-comments@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/extract-comments/-/extract-comments-1.1.0.tgz#b90bca033a056bd69b8ba1c6b6b120fc2ee95c18" - integrity sha512-dzbZV2AdSSVW/4E7Ti5hZdHWbA+Z80RJsJhr5uiL10oyjl/gy7/o+HI1HwK4/WSZhlq4SNKU3oUzXlM13Qx02Q== - dependencies: - esprima-extract-comments "^1.1.0" - parse-code-context "^1.0.0" - extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -4752,16 +4011,6 @@ fake-merkle-patricia-tree@^1.0.1: dependencies: checkpoint-store "^1.1.0" -fancy-log@^1.3.2: - version "1.3.3" - resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7" - integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw== - dependencies: - ansi-gray "^0.1.1" - color-support "^1.1.3" - parse-node-version "^1.0.0" - time-stamp "^1.0.0" - fast-deep-equal@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -4773,9 +4022,9 @@ fast-diff@^1.1.2: integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== fast-glob@^3.0.3: - version "3.2.4" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.4.tgz#d20aefbf99579383e7f3cc66529158c9b98554d3" - integrity sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ== + version "3.2.5" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" + integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" @@ -4789,30 +4038,18 @@ fast-json-stable-stringify@^2.0.0: resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@^1.0.0: - version "1.1.4" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz#e6a754cc8f15e58987aa9cbd27af66fd6f4e5af9" - integrity sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk= - fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= fastq@^1.6.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.8.0.tgz#550e1f9f59bbc65fe185cb6a9b4d95357107f481" - integrity sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q== + version "1.10.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.10.0.tgz#74dbefccade964932cdf500473ef302719c652bb" + integrity sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA== dependencies: reusify "^1.0.4" -fd-slicer@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" - integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= - dependencies: - pend "~1.2.0" - fetch-ponyfill@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/fetch-ponyfill/-/fetch-ponyfill-4.1.0.tgz#ae3ce5f732c645eab87e4ae8793414709b239893" @@ -4834,20 +4071,12 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" -file-type@^3.8.0: - version "3.9.0" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" - integrity sha1-JXoHg4TR24CHvESdEH1SpSZyuek= - -file-type@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-5.2.0.tgz#2ddbea7c73ffe36368dfae49dc338c058c2b8ad6" - integrity sha1-LdvqfHP/42No365J3DOMBYwritY= - -file-type@^6.1.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919" - integrity sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg== +file-entry-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.0.tgz#7921a89c391c6d93efec2169ac6bf300c527ea0a" + integrity sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA== + dependencies: + flat-cache "^3.0.4" file-uri-to-path@1.0.0: version "1.0.0" @@ -4891,12 +4120,12 @@ find-up@3.0.0, find-up@^3.0.0: dependencies: locate-path "^3.0.0" -find-up@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== +find-up@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: - locate-path "^5.0.0" + locate-path "^6.0.0" path-exists "^4.0.0" find-up@^1.0.0: @@ -4914,41 +4143,13 @@ find-up@^2.0.0, find-up@^2.1.0: dependencies: locate-path "^2.0.0" -findup-sync@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" - integrity sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw= - dependencies: - detect-file "^1.0.0" - is-glob "^3.1.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" - -findup-sync@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" - integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== - dependencies: - detect-file "^1.0.0" - is-glob "^4.0.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" - -fined@^1.0.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fined/-/fined-1.2.0.tgz#d00beccf1aa2b475d16d423b0238b713a2c4a37b" - integrity sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng== +find-yarn-workspace-root@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/find-yarn-workspace-root/-/find-yarn-workspace-root-1.2.1.tgz#40eb8e6e7c2502ddfaa2577c176f221422f860db" + integrity sha512-dVtfb0WuQG+8Ag2uWkbG79hOUzEsRrhBzgfn86g2sJPkzmcpGdghbNTfUKGTxymFrY/tLIodDzLoW9nOJ4FY8Q== dependencies: - expand-tilde "^2.0.2" - is-plain-object "^2.0.3" - object.defaults "^1.1.0" - object.pick "^1.2.0" - parse-filepath "^1.0.1" - -flagged-respawn@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" - integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== + fs-extra "^4.0.3" + micromatch "^3.1.4" flat-cache@^2.0.1: version "2.0.1" @@ -4959,31 +4160,41 @@ flat-cache@^2.0.1: rimraf "2.6.3" write "1.0.3" +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + flat@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.0.tgz#090bec8b05e39cba309747f1d588f04dbaf98db2" - integrity sha512-Px/TiLIznH7gEDlPXcUD4KnBusa6kR6ayRUVcnEAbreRIuhkqow/mun59BuRXwoYk7ZQOLW1ZM05ilIvK38hFw== + version "4.1.1" + resolved "https://registry.yarnpkg.com/flat/-/flat-4.1.1.tgz#a392059cc382881ff98642f5da4dde0a959f309b" + integrity sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA== dependencies: is-buffer "~2.0.3" +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + flatted@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== +flatted@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" + integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== + flow-stoplight@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/flow-stoplight/-/flow-stoplight-1.0.0.tgz#4a292c5bcff8b39fa6cc0cb1a853d86f27eeff7b" integrity sha1-SiksW8/4s5+mzAyxqFPYbyfu/3s= -flush-write-stream@^1.0.2: - version "1.1.1" - resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" - integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== - dependencies: - inherits "^2.0.3" - readable-stream "^2.3.6" - fmix@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/fmix/-/fmix-0.1.0.tgz#c7bbf124dec42c9d191cfb947d0a9778dd986c0c" @@ -4991,37 +4202,23 @@ fmix@^0.1.0: dependencies: imul "^1.0.0" -follow-redirects@1.5.10: - version "1.5.10" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" - integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== - dependencies: - debug "=3.1.0" - -follow-redirects@^1.12.1: - version "1.13.0" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.0.tgz#b42e8d93a2a7eea5ed88633676d6597bc8e384db" - integrity sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA== +follow-redirects@^1.10.0, follow-redirects@^1.12.1: + version "1.13.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.1.tgz#5f69b813376cee4fd0474a3aba835df04ab763b7" + integrity sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg== -for-each@~0.3.3: +for-each@^0.3.3, for-each@~0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" integrity sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw== dependencies: is-callable "^1.1.3" -for-in@^1.0.1, for-in@^1.0.2: +for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= -for-own@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" - integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= - dependencies: - for-in "^1.0.1" - forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -5081,11 +4278,6 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= -fs-constants@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" - integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== - fs-extra@^0.30.0: version "0.30.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" @@ -5097,7 +4289,7 @@ fs-extra@^0.30.0: path-is-absolute "^1.0.0" rimraf "^2.2.8" -fs-extra@^4.0.2: +fs-extra@^4.0.2, fs-extra@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94" integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg== @@ -5125,14 +4317,14 @@ fs-extra@^8.1.0: universalify "^0.1.0" fs-extra@^9.0.0: - version "9.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" - integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== dependencies: at-least-node "^1.0.0" graceful-fs "^4.2.0" jsonfile "^6.0.1" - universalify "^1.0.0" + universalify "^2.0.0" fs-minipass@^1.2.5: version "1.2.7" @@ -5141,14 +4333,6 @@ fs-minipass@^1.2.5: dependencies: minipass "^2.6.0" -fs-mkdirp-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" - integrity sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes= - dependencies: - graceful-fs "^4.1.11" - through2 "^2.0.3" - fs-readdir-recursive@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" @@ -5159,19 +4343,16 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^1.2.7: - version "1.2.13" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" - integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== - dependencies: - bindings "^1.5.0" - nan "^2.12.1" - fsevents@~2.1.1, fsevents@~2.1.2: version "2.1.3" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== +fsevents@~2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.1.tgz#b209ab14c61012636c8863507edf7fb68cc54e9f" + integrity sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw== + function-bind@^1.1.1, function-bind@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -5182,19 +4363,19 @@ functional-red-black-tree@^1.0.1, functional-red-black-tree@~1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -ganache-cli@6.9.0: - version "6.9.0" - resolved "https://registry.yarnpkg.com/ganache-cli/-/ganache-cli-6.9.0.tgz#94d7e26964dff80b7382a33829ec75e15709a948" - integrity sha512-ZdL6kPrApXF/O+f6uU431OJcwxMk69H3KPDSHHrMP82ZvZRNpDHbR+rVv7XX/YUeoQ5q6nZ2AFiGiFAVn9pfzA== +ganache-cli@^6.11.0: + version "6.12.2" + resolved "https://registry.yarnpkg.com/ganache-cli/-/ganache-cli-6.12.2.tgz#c0920f7db0d4ac062ffe2375cb004089806f627a" + integrity sha512-bnmwnJDBDsOWBUP8E/BExWf85TsdDEFelQSzihSJm9VChVO1SHp94YXLP5BlA4j/OTxp0wR4R1Tje9OHOuAJVw== dependencies: - ethereumjs-util "6.1.0" + ethereumjs-util "6.2.1" source-map-support "0.5.12" yargs "13.2.4" ganache-core@^2.10.2: - version "2.11.2" - resolved "https://registry.yarnpkg.com/ganache-core/-/ganache-core-2.11.2.tgz#821a8e7beaa65b32e408ccae2e2ec49194c4e378" - integrity sha512-yZSMdR2xtqG2IdApeB6OywtMxwcHMp6Y5TUBwPyKe5/GripP8xnEpSKBluhxoyqEotg+Z2S8mjIXJyAm+NnMGw== + version "2.13.2" + resolved "https://registry.yarnpkg.com/ganache-core/-/ganache-core-2.13.2.tgz#27e6fc5417c10e6e76e2e646671869d7665814a3" + integrity sha512-tIF5cR+ANQz0+3pHWxHjIwHqFXcVo0Mb+kcsNhglNFALcYo49aQpnS9dqHartqPfMFjiHh/qFoD3mYK0d/qGgw== dependencies: abstract-leveldown "3.0.0" async "2.6.2" @@ -5203,28 +4384,30 @@ ganache-core@^2.10.2: clone "2.1.2" debug "3.2.6" encoding-down "5.0.4" - eth-sig-util "2.3.0" - ethereumjs-abi "0.6.7" + eth-sig-util "3.0.0" + ethereumjs-abi "0.6.8" ethereumjs-account "3.0.0" ethereumjs-block "2.2.2" ethereumjs-common "1.5.0" ethereumjs-tx "2.1.2" - ethereumjs-util "6.2.0" + ethereumjs-util "6.2.1" ethereumjs-vm "4.2.0" heap "0.2.6" + keccak "3.0.1" level-sublevel "6.6.4" levelup "3.1.1" - lodash "4.17.14" + lodash "4.17.20" lru-cache "5.1.1" - merkle-patricia-tree "2.3.2" + merkle-patricia-tree "3.0.0" + patch-package "6.2.2" seedrandom "3.0.1" source-map-support "0.5.12" tmp "0.1.0" web3-provider-engine "14.2.1" - websocket "1.0.29" + websocket "1.0.32" optionalDependencies: - ethereumjs-wallet "0.6.3" - web3 "1.2.4" + ethereumjs-wallet "0.6.5" + web3 "1.2.11" get-caller-file@^1.0.1: version "1.0.3" @@ -5241,19 +4424,20 @@ get-func-name@^2.0.0: resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= +get-intrinsic@^1.0.1, get-intrinsic@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.2.tgz#6820da226e50b24894e08859469dc68361545d49" + integrity sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + get-port@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" integrity sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw= -get-stream@^2.2.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" - integrity sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4= - dependencies: - object-assign "^4.0.1" - pinkie-promise "^2.0.0" - get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -5293,14 +4477,6 @@ ghost-testrpc@^0.0.2: chalk "^2.4.2" node-emoji "^1.10.0" -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0: version "5.1.1" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" @@ -5308,35 +4484,6 @@ glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" -glob-stream@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" - integrity sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ= - dependencies: - extend "^3.0.0" - glob "^7.1.1" - glob-parent "^3.1.0" - is-negated-glob "^1.0.0" - ordered-read-streams "^1.0.0" - pumpify "^1.3.5" - readable-stream "^2.1.5" - remove-trailing-separator "^1.0.1" - to-absolute-glob "^2.0.0" - unique-stream "^2.0.2" - -glob-watcher@^5.0.3: - version "5.0.5" - resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-5.0.5.tgz#aa6bce648332924d9a8489be41e3e5c52d4186dc" - integrity sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw== - dependencies: - anymatch "^2.0.0" - async-done "^1.2.0" - chokidar "^2.0.0" - is-negated-glob "^1.0.0" - just-debounce "^1.0.0" - normalize-path "^3.0.0" - object.defaults "^1.1.0" - glob@7.1.3: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" @@ -5349,7 +4496,7 @@ glob@7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -glob@7.1.6, glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@~7.1.6: +glob@7.1.6, glob@^7.0.0, glob@^7.1.2, glob@^7.1.3, glob@~7.1.6: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -5372,15 +4519,6 @@ glob@^5.0.15: once "^1.3.0" path-is-absolute "^1.0.0" -global-modules@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" - integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== - dependencies: - global-prefix "^1.0.1" - is-windows "^1.0.1" - resolve-dir "^1.0.0" - global-modules@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" @@ -5388,17 +4526,6 @@ global-modules@^2.0.0: dependencies: global-prefix "^3.0.0" -global-prefix@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= - dependencies: - expand-tilde "^2.0.2" - homedir-polyfill "^1.0.1" - ini "^1.3.4" - is-windows "^1.0.1" - which "^1.2.14" - global-prefix@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" @@ -5408,13 +4535,13 @@ global-prefix@^3.0.0: kind-of "^6.0.2" which "^1.3.1" -global@~4.3.0: - version "4.3.2" - resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" - integrity sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8= +global@~4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" + integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== dependencies: min-document "^2.19.0" - process "~0.5.1" + process "^0.11.10" globals@^11.7.0: version "11.12.0" @@ -5447,13 +4574,6 @@ globby@^10.0.1: merge2 "^1.2.3" slash "^3.0.0" -glogg@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.2.tgz#2d7dd702beda22eb3bffadf880696da6d846313f" - integrity sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA== - dependencies: - sparkles "^1.0.0" - got@9.6.0: version "9.6.0" resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" @@ -5491,7 +4611,7 @@ got@^7.1.0: url-parse-lax "^1.0.0" url-to-options "^1.0.1" -graceful-fs@^4.0.0, graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0: +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0: version "4.2.4" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== @@ -5501,47 +4621,6 @@ growl@1.10.5: resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== -gulp-cli@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/gulp-cli/-/gulp-cli-2.3.0.tgz#ec0d380e29e52aa45e47977f0d32e18fd161122f" - integrity sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A== - dependencies: - ansi-colors "^1.0.1" - archy "^1.0.0" - array-sort "^1.0.0" - color-support "^1.1.3" - concat-stream "^1.6.0" - copy-props "^2.0.1" - fancy-log "^1.3.2" - gulplog "^1.0.0" - interpret "^1.4.0" - isobject "^3.0.1" - liftoff "^3.1.0" - matchdep "^2.0.0" - mute-stdout "^1.0.0" - pretty-hrtime "^1.0.0" - replace-homedir "^1.0.0" - semver-greatest-satisfied-range "^1.1.0" - v8flags "^3.2.0" - yargs "^7.1.0" - -gulp@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/gulp/-/gulp-4.0.2.tgz#543651070fd0f6ab0a0650c6a3e6ff5a7cb09caa" - integrity sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA== - dependencies: - glob-watcher "^5.0.3" - gulp-cli "^2.2.0" - undertaker "^1.2.1" - vinyl-fs "^3.0.0" - -gulplog@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" - integrity sha1-4oxNRdBey77YGDY86PnFkmIp/+U= - dependencies: - glogg "^1.0.0" - handlebars@^4.0.1: version "4.7.6" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.6.tgz#d4c05c1baf90e9945f77aa68a7a219aa4a7df74e" @@ -5567,7 +4646,7 @@ har-validator@~5.1.3: ajv "^6.12.3" har-schema "^2.0.0" -hardhat-contract-sizer@^2.0.2: +hardhat-contract-sizer@2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/hardhat-contract-sizer/-/hardhat-contract-sizer-2.0.2.tgz#735e00c4776188683886226b9b37dfe75cbd16fa" integrity sha512-6vDj3OoqPvzuEnURY2lN6veFXH8uIBRgnaIJoN7cpn7ENuciIR3qotNgLtbC6BNp4y0Cn/8FeMfKS6MdAvIdgQ== @@ -5575,10 +4654,10 @@ hardhat-contract-sizer@^2.0.2: cli-table3 "^0.6.0" colors "^1.4.0" -hardhat-deploy@^0.7.0-beta.28: - version "0.7.0-beta.28" - resolved "https://registry.yarnpkg.com/hardhat-deploy/-/hardhat-deploy-0.7.0-beta.28.tgz#e71dc7d7a97903773c717818e8ecb7eef8f97a5c" - integrity sha512-oWAVa636zyOXecvLkZ/hpph1PvqwoK0DnqjA21En4amfTjLx5Do6XlrGcNJAKrH9LRTnfg2dc7zmTauBqFM5+g== +hardhat-deploy@^0.7.0-beta.44: + version "0.7.0-beta.44" + resolved "https://registry.yarnpkg.com/hardhat-deploy/-/hardhat-deploy-0.7.0-beta.44.tgz#e03eb60765d4ecc3711dc7aadaba60c64b1d381c" + integrity sha512-eIM8RrLDgD12wINTdduYshxqNP/uz9qMCgao37jl6iiZ2LwHkNTL/X+RtTVfq/vS7bvLW7qpjymHJiak5rd1Pg== dependencies: "@ethersproject/abi" "^5.0.2" "@ethersproject/abstract-signer" "^5.0.2" @@ -5591,30 +4670,32 @@ hardhat-deploy@^0.7.0-beta.28: "@ethersproject/transactions" "^5.0.2" "@ethersproject/wallet" "^5.0.2" "@types/qs" "^6.9.4" - axios "^0.19.2" + axios "^0.21.1" chalk "^4.1.0" chokidar "^3.4.0" debug "^4.1.1" + form-data "^3.0.0" fs-extra "^9.0.0" match-all "^1.2.6" murmur-128 "^0.2.1" qs "^6.9.4" -hardhat-gas-reporter@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.1.tgz#37f96da5f11e5ae34b28a68c5d972d3168165c95" - integrity sha512-YC+SCYIkBdRtISNbisU2BwDSelUdCrIKRsJXt3M9Jw1VF5CmtSZb8VuuOc2Zl4AMcEV2jEy6ZuAksYomPiApYQ== +hardhat-gas-reporter@1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.4.tgz#59e3137e38e0dfeac2e4f90d5c74160b50ad4829" + integrity sha512-G376zKh81G3K9WtDA+SoTLWsoygikH++tD1E7llx+X7J+GbIqfwhDKKgvJjcnEesMrtR9UqQHK02lJuXY1RTxw== dependencies: - eth-gas-reporter "^0.2.19" + eth-gas-reporter "^0.2.20" + sha1 "^1.1.1" -hardhat@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.0.3.tgz#35e07060d9854d4182f201aeaa1c05316bd7e4d3" - integrity sha512-mDygAl+1qd5KBdXQBfc3R5XmC/rVdYYbEuOTSQY3rlncVu9gfockZVDsHtAMPw/FiBIRMApLcOceK7D1XQmHRw== +hardhat@2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.0.8.tgz#6ec232293dd6b3ca7baeadb095ba4afce4b9b2e0" + integrity sha512-2tDAtOfshrBzP103dx7PQrhTwv2sqjhQStZAPwkkQTic25o2EH6HYE2++LuOG98YwqSjr0WvhvdBvKl3dCSkYA== dependencies: "@nomiclabs/ethereumjs-vm" "^4.1.1" "@sentry/node" "^5.18.1" - "@solidity-parser/parser" "^0.7.1" + "@solidity-parser/parser" "^0.11.0" "@types/bn.js" "^4.11.5" "@types/lru-cache" "^5.1.0" abort-controller "^3.0.0" @@ -5759,15 +4840,6 @@ hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: inherits "^2.0.3" minimalistic-assert "^1.0.1" -hdkey@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/hdkey/-/hdkey-1.1.2.tgz#c60f9cf6f90fbf24a8a52ea06893f36a0108cd3e" - integrity sha512-PTQ4VKu0oRnCrYfLp04iQZ7T2Cxz0UsEXYauk2j8eh6PJXCpbXuCFhOmtIFtbET0i3PMWmHN9J11gU8LEgUljQ== - dependencies: - bs58check "^2.1.2" - safe-buffer "^5.1.1" - secp256k1 "^3.0.1" - he@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" @@ -5795,13 +4867,6 @@ home-or-tmp@^2.0.0: os-homedir "^1.0.0" os-tmpdir "^1.0.1" -homedir-polyfill@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - hosted-git-info@^2.1.4, hosted-git-info@^2.6.0: version "2.8.8" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" @@ -5894,10 +4959,10 @@ idna-uts46-hx@^2.3.1: dependencies: punycode "2.1.0" -ieee754@^1.1.4: - version "1.1.13" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" - integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== ignore@^4.0.6: version "4.0.6" @@ -5933,9 +4998,9 @@ import-fresh@^2.0.0: resolve-from "^3.0.0" import-fresh@^3.0.0, import-fresh@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" - integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: parent-module "^1.0.0" resolve-from "^4.0.0" @@ -5968,10 +5033,10 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.4, ini@^1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== +ini@^1.3.5: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== inquirer@^6.2.2: version "6.5.2" @@ -5992,7 +5057,7 @@ inquirer@^6.2.2: strip-ansi "^5.1.0" through "^2.3.6" -interpret@^1.0.0, interpret@^1.4.0: +interpret@^1.0.0: version "1.4.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== @@ -6026,14 +5091,6 @@ ipaddr.js@1.9.1: resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== -is-absolute@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" - integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== - dependencies: - is-relative "^1.0.0" - is-windows "^1.0.1" - is-accessor-descriptor@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" @@ -6049,22 +5106,17 @@ is-accessor-descriptor@^1.0.0: kind-of "^6.0.0" is-arguments@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" - integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA== + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" + integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== + dependencies: + call-bind "^1.0.0" is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= - dependencies: - binary-extensions "^1.0.0" - is-binary-path@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" @@ -6078,20 +5130,29 @@ is-buffer@^1.1.5: integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-buffer@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" - integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== - -is-callable@^1.1.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" - integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== -is-callable@^1.1.4, is-callable@^1.2.0: +is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== + dependencies: + ci-info "^2.0.0" + +is-core-module@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" + integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -6146,7 +5207,7 @@ is-extendable@^1.0.1: dependencies: is-plain-object "^2.0.4" -is-extglob@^2.1.0, is-extglob@^2.1.1: +is-extglob@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= @@ -6183,13 +5244,6 @@ is-function@^1.0.1: resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" @@ -6203,24 +5257,14 @@ is-hex-prefixed@1.0.0: integrity sha1-fY035q135dEnFIkTxXPggtd39VQ= is-map@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.1.tgz#520dafc4307bb8ebc33b813de5ce7c9400d644a1" - integrity sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw== - -is-natural-number@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" - integrity sha1-q5124dtM7VHjXeDHLr7PCfc0zeg= - -is-negated-glob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" - integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" + integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== -is-negative-zero@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461" - integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE= +is-negative-zero@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== is-number@^3.0.0: version "3.0.0" @@ -6229,27 +5273,27 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" -is-number@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" - integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== - is-number@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== is-object@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" - integrity sha1-iVJojF7C/9awPsyF52ngKQMINHA= + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" + integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= -is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== @@ -6261,7 +5305,7 @@ is-plain-object@^3.0.0: resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-3.0.1.tgz#662d92d24c0aa4302407b0d45d21f2251c85f85b" integrity sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g== -is-regex@^1.0.4, is-regex@^1.1.0, is-regex@^1.1.1: +is-regex@^1.0.4, is-regex@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== @@ -6275,29 +5319,22 @@ is-regex@~1.0.5: dependencies: has "^1.0.3" -is-relative@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" - integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== - dependencies: - is-unc-path "^1.0.0" - is-retry-allowed@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== is-set@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.1.tgz#d1604afdab1724986d30091575f54945da7e5f43" - integrity sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA== + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" + integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= -is-string@^1.0.4, is-string@^1.0.5: +is-string@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== @@ -6314,29 +5351,17 @@ is-typedarray@^1.0.0, is-typedarray@~1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= -is-unc-path@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" - integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== - dependencies: - unc-path-regex "^0.1.2" - is-url@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== -is-utf8@^0.2.0, is-utf8@^0.2.1: +is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= -is-valid-glob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" - integrity sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao= - -is-windows@^1.0.1, is-windows@^1.0.2: +is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== @@ -6391,7 +5416,7 @@ iterate-iterator@^1.0.1: resolved "https://registry.yarnpkg.com/iterate-iterator/-/iterate-iterator-1.0.1.tgz#1693a768c1ddd79c969051459453f082fe82e9f6" integrity sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw== -iterate-value@^1.0.0: +iterate-value@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/iterate-value/-/iterate-value-1.0.2.tgz#935115bd37d006a52046535ebc8d07e9c9337f57" integrity sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ== @@ -6427,7 +5452,7 @@ js-yaml@3.13.1: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@3.x, js-yaml@^3.12.0, js-yaml@^3.13.0, js-yaml@^3.13.1: +js-yaml@3.14.0: version "3.14.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== @@ -6435,6 +5460,14 @@ js-yaml@3.x, js-yaml@^3.12.0, js-yaml@^3.13.0, js-yaml@^3.13.1: argparse "^1.0.7" esprima "^4.0.0" +js-yaml@3.x, js-yaml@^3.12.0, js-yaml@^3.13.0, js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" @@ -6489,6 +5522,11 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" @@ -6538,11 +5576,11 @@ jsonfile@^4.0.0: graceful-fs "^4.1.6" jsonfile@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179" - integrity sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg== + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: - universalify "^1.0.0" + universalify "^2.0.0" optionalDependencies: graceful-fs "^4.1.6" @@ -6552,9 +5590,9 @@ jsonify@~0.0.0: integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= jsonschema@^1.2.4: - version "1.2.6" - resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.2.6.tgz#52b0a8e9dc06bbae7295249d03e4b9faee8a0c0b" - integrity sha512-SqhURKZG07JyKKeo/ir24QnS4/BV7a6gQy93bUSe4lUdNp0QNpIz2c9elWJQ9dpc5cQYY6cvCzgRwy0MQCLyqA== + version "1.4.0" + resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.4.0.tgz#1afa34c4bc22190d8e42271ec17ac8b3404f87b2" + integrity sha512-/YgW6pRMr6M7C+4o8kS+B/2myEpHCrxO4PEWnqJNBFMjn7EWXqlQ4tGwL6xTHeRplwuZmcAncdvfOad1nT2yMw== jsprim@^1.2.2: version "1.4.1" @@ -6566,20 +5604,13 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -just-debounce@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/just-debounce/-/just-debounce-1.0.0.tgz#87fccfaeffc0b68cd19d55f6722943f929ea35ea" - integrity sha1-h/zPrv/AtozRnVX2cilD+SnqNeo= - -keccak@^1.0.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-1.4.0.tgz#572f8a6dbee8e7b3aa421550f9e6408ca2186f80" - integrity sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw== +keccak@3.0.1, keccak@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.1.tgz#ae30a0e94dbe43414f741375cff6d64c8bea0bff" + integrity sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA== dependencies: - bindings "^1.2.1" - inherits "^2.0.3" - nan "^2.2.1" - safe-buffer "^5.1.0" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" keccak@^2.0.0: version "2.1.0" @@ -6591,14 +5622,6 @@ keccak@^2.0.0: nan "^2.14.0" safe-buffer "^5.2.0" -keccak@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.1.tgz#ae30a0e94dbe43414f741375cff6d64c8bea0bff" - integrity sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA== - dependencies: - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - keyv@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" @@ -6620,7 +5643,7 @@ kind-of@^4.0.0: dependencies: is-buffer "^1.1.5" -kind-of@^5.0.0, kind-of@^5.0.2: +kind-of@^5.0.0: version "5.1.0" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== @@ -6630,6 +5653,13 @@ kind-of@^6.0.0, kind-of@^6.0.2: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== +klaw-sync@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/klaw-sync/-/klaw-sync-6.0.0.tgz#1fd2cfd56ebb6250181114f0a581167099c2b28c" + integrity sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ== + dependencies: + graceful-fs "^4.1.11" + klaw@^1.0.0: version "1.3.1" resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" @@ -6637,21 +5667,6 @@ klaw@^1.0.0: optionalDependencies: graceful-fs "^4.1.9" -last-run@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/last-run/-/last-run-1.1.1.tgz#45b96942c17b1c79c772198259ba943bebf8ca5b" - integrity sha1-RblpQsF7HHnHchmCWbqUO+v4yls= - dependencies: - default-resolution "^2.0.0" - es6-weak-map "^2.0.1" - -lazystream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" - integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= - dependencies: - readable-stream "^2.0.5" - lcid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" @@ -6666,13 +5681,6 @@ lcid@^2.0.0: dependencies: invert-kv "^2.0.0" -lead@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42" - integrity sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI= - dependencies: - flush-write-stream "^1.0.2" - level-codec@^9.0.0: version "9.0.2" resolved "https://registry.yarnpkg.com/level-codec/-/level-codec-9.0.2.tgz#fd60df8c64786a80d44e63423096ffead63d8cbc" @@ -6829,20 +5837,6 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" -liftoff@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-3.1.0.tgz#c9ba6081f908670607ee79062d700df062c52ed3" - integrity sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog== - dependencies: - extend "^3.0.0" - findup-sync "^3.0.0" - fined "^1.0.1" - flagged-respawn "^1.0.0" - is-plain-object "^2.0.4" - object.map "^1.0.0" - rechoir "^0.6.2" - resolve "^1.1.7" - load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -6880,12 +5874,12 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: - p-locate "^4.1.0" + p-locate "^5.0.0" lodash.assign@^4.0.3, lodash.assign@^4.0.6: version "4.2.0" @@ -6897,12 +5891,7 @@ lodash.toarray@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= -lodash@4.17.14: - version "4.17.14" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.14.tgz#9ce487ae66c96254fe20b599f21b6816028078ba" - integrity sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw== - -lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.4: +lodash@4.17.20, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.4: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== @@ -6914,6 +5903,13 @@ log-symbols@3.0.0: dependencies: chalk "^2.4.2" +log-symbols@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" + integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== + dependencies: + chalk "^4.0.0" + looper@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/looper/-/looper-2.0.0.tgz#66cd0c774af3d4fedac53794f742db56da8f09ec" @@ -6955,6 +5951,13 @@ lru-cache@^3.2.0: dependencies: pseudomap "^1.0.1" +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + lru_map@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" @@ -6970,27 +5973,6 @@ ltgt@~2.1.1: resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.1.3.tgz#10851a06d9964b971178441c23c9e52698eece34" integrity sha1-EIUaBtmWS5cReEQcI8nlJpjuzjQ= -magic-string@^0.25.3: - version "0.25.7" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" - integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== - dependencies: - sourcemap-codec "^1.4.4" - -make-dir@^1.0.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" - integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== - dependencies: - pify "^3.0.0" - -make-iterator@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6" - integrity sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw== - dependencies: - kind-of "^6.0.2" - map-age-cleaner@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" @@ -6998,7 +5980,7 @@ map-age-cleaner@^0.1.1: dependencies: p-defer "^1.0.0" -map-cache@^0.2.0, map-cache@^0.2.2: +map-cache@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= @@ -7020,16 +6002,6 @@ match-all@^1.2.6: resolved "https://registry.yarnpkg.com/match-all/-/match-all-1.2.6.tgz#66d276ad6b49655551e63d3a6ee53e8be0566f8d" integrity sha512-0EESkXiTkWzrQQntBu2uzKvLu6vVkUGz40nGPbSZuegcfE5UuSzNjLaIu76zJWuaT/2I3Z/8M06OlUOZLGwLlQ== -matchdep@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/matchdep/-/matchdep-2.0.0.tgz#c6f34834a0d8dbc3b37c27ee8bbcb27c7775582e" - integrity sha1-xvNINKDY28OzfCfui7yyfHd1WC4= - dependencies: - findup-sync "^2.0.0" - micromatch "^3.0.4" - resolve "^1.4.0" - stack-trace "0.0.10" - md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -7092,7 +6064,20 @@ merge2@^1.2.3, merge2@^1.3.0: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -merkle-patricia-tree@2.3.2, merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2.3.2: +merkle-patricia-tree@3.0.0, merkle-patricia-tree@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-3.0.0.tgz#448d85415565df72febc33ca362b8b614f5a58f8" + integrity sha512-soRaMuNf/ILmw3KWbybaCjhx86EYeBbD8ph0edQCTed0JN/rxDt1EBN52Ajre3VyGo+91f8+/rfPIRQnnGMqmQ== + dependencies: + async "^2.6.1" + ethereumjs-util "^5.2.0" + level-mem "^3.0.1" + level-ws "^1.0.0" + readable-stream "^3.0.6" + rlp "^2.0.0" + semaphore ">=1.0.1" + +merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-2.3.2.tgz#982ca1b5a0fde00eed2f6aeed1f9152860b8208a" integrity sha512-81PW5m8oz/pz3GvsAwbauj7Y00rqm81Tzad77tHBwU7pIAtN+TJnMSOJhxBKflSVYhptMMb9RskhqHqrSm1V+g== @@ -7106,25 +6091,12 @@ merkle-patricia-tree@2.3.2, merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2 rlp "^2.0.0" semaphore ">=1.0.1" -merkle-patricia-tree@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/merkle-patricia-tree/-/merkle-patricia-tree-3.0.0.tgz#448d85415565df72febc33ca362b8b614f5a58f8" - integrity sha512-soRaMuNf/ILmw3KWbybaCjhx86EYeBbD8ph0edQCTed0JN/rxDt1EBN52Ajre3VyGo+91f8+/rfPIRQnnGMqmQ== - dependencies: - async "^2.6.1" - ethereumjs-util "^5.2.0" - level-mem "^3.0.1" - level-ws "^1.0.0" - readable-stream "^3.0.6" - rlp "^2.0.0" - semaphore ">=1.0.1" - methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: +micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -7159,17 +6131,17 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.44.0: - version "1.44.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" - integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== +mime-db@1.45.0: + version "1.45.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" + integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.19, mime-types@~2.1.24: - version "2.1.27" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" - integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== + version "2.1.28" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd" + integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ== dependencies: - mime-db "1.44.0" + mime-db "1.45.0" mime@1.6.0: version "1.6.0" @@ -7262,6 +6234,37 @@ mkdirp@0.5.5, mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1: dependencies: minimist "^1.2.5" +mocha@8.2.1: + version "8.2.1" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.2.1.tgz#f2fa68817ed0e53343d989df65ccd358bc3a4b39" + integrity sha512-cuLBVfyFfFqbNR0uUKbDGXKGk+UDFe6aR4os78XIrMQpZl/nv7JYHcvP5MFIAb374b2zFXsdgEGwmzMtP0Xg8w== + dependencies: + "@ungap/promise-all-settled" "1.1.2" + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.4.3" + debug "4.2.0" + 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" + nanoid "3.1.12" + serialize-javascript "5.0.1" + strip-json-comments "3.1.1" + supports-color "7.2.0" + which "2.0.2" + wide-align "1.1.3" + workerpool "6.0.2" + yargs "13.3.2" + yargs-parser "13.1.2" + yargs-unparser "2.0.0" + mocha@^7.1.1, mocha@^7.1.2: version "7.2.0" resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.2.0.tgz#01cc227b00d875ab1eed03a75106689cfed5a604" @@ -7292,41 +6295,10 @@ mocha@^7.1.1, mocha@^7.1.2: yargs-parser "13.1.2" yargs-unparser "1.6.0" -mocha@^8.1.1: - version "8.1.1" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.1.1.tgz#1de1ba4e9a2c955d96b84e469d7540848223592d" - integrity sha512-p7FuGlYH8t7gaiodlFreseLxEmxTgvyG9RgPHODFPySNhwUehu8NIb0vdSt3WFckSneswZ0Un5typYcWElk7HQ== - dependencies: - ansi-colors "4.1.1" - browser-stdout "1.3.1" - chokidar "3.3.1" - debug "3.2.6" - diff "4.0.2" - escape-string-regexp "1.0.5" - find-up "4.1.0" - glob "7.1.6" - growl "1.10.5" - he "1.2.0" - js-yaml "3.13.1" - log-symbols "3.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" - mock-fs@^4.1.0: - version "4.12.0" - resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.12.0.tgz#a5d50b12d2d75e5bec9dac3b67ffe3c41d31ade4" - integrity sha512-/P/HtrlvBxY4o/PzXY9cCNBrdylDNxg7gnrv2sMNxj+UJ2m8jSpl0/A6fuJeNAWr99ZvGWH8XCbE0vmnM5KupQ== + version "4.13.0" + resolved "https://registry.yarnpkg.com/mock-fs/-/mock-fs-4.13.0.tgz#31c02263673ec3789f90eb7b6963676aa407a598" + integrity sha512-DD0vOdofJdoaRNtnWcrXe6RQbpHkPPmtqGq14uRX0F8ZKJ5nv89CVTYl/BZdppDxBDaV0hl75htg3abpEWlPZA== ms@2.0.0: version "2.0.0" @@ -7338,11 +6310,56 @@ ms@2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== -ms@2.1.2, ms@^2.1.1: +ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== +ms@^2.1.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multibase@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.7.0.tgz#1adfc1c50abe05eefeb5091ac0c2728d6b84581b" + integrity sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg== + dependencies: + base-x "^3.0.8" + buffer "^5.5.0" + +multibase@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/multibase/-/multibase-0.6.1.tgz#b76df6298536cc17b9f6a6db53ec88f85f8cc12b" + integrity sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw== + dependencies: + base-x "^3.0.8" + buffer "^5.5.0" + +multicodec@^0.5.5: + version "0.5.7" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-0.5.7.tgz#1fb3f9dd866a10a55d226e194abba2dcc1ee9ffd" + integrity sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA== + dependencies: + varint "^5.0.0" + +multicodec@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/multicodec/-/multicodec-1.0.4.tgz#46ac064657c40380c28367c90304d8ed175a714f" + integrity sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg== + dependencies: + buffer "^5.6.0" + varint "^5.0.0" + +multihashes@^0.4.15, multihashes@~0.4.15: + version "0.4.21" + resolved "https://registry.yarnpkg.com/multihashes/-/multihashes-0.4.21.tgz#dc02d525579f334a7909ade8a122dabb58ccfcb5" + integrity sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw== + dependencies: + buffer "^5.5.0" + multibase "^0.7.0" + varint "^5.0.0" + murmur-128@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/murmur-128/-/murmur-128-0.2.1.tgz#a9f6568781d2350ecb1bf80c14968cadbeaa4b4d" @@ -7352,26 +6369,26 @@ murmur-128@^0.2.1: fmix "^0.1.0" imul "^1.0.0" -mute-stdout@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mute-stdout/-/mute-stdout-1.0.1.tgz#acb0300eb4de23a7ddeec014e3e96044b3472331" - integrity sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg== - mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= -nan@^2.0.8, nan@^2.11.0, nan@^2.12.1, nan@^2.14.0, nan@^2.2.1: - version "2.14.1" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" - integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== +nan@^2.0.8, nan@^2.14.0: + version "2.14.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" + integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== nano-json-stream-parser@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f" integrity sha1-DMj20OK2IrR5xA1JnEbWS3Vcb18= +nanoid@3.1.12: + version "3.1.12" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.12.tgz#6f7736c62e8d39421601e4a0c77623a97ea69654" + integrity sha512-1qstj9z5+x491jfiC4Nelk+f8XBad7LN20PmyWINJEMRSf3wcAjAWysw1qaA8z6NSKe2sjq1hRSDpBH5paCb6A== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -7479,13 +6496,6 @@ normalize-package-data@^2.3.2: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" - integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= - dependencies: - remove-trailing-separator "^1.0.1" - normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" @@ -7496,13 +6506,6 @@ normalize-url@^4.1.0: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== -now-and-later@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/now-and-later/-/now-and-later-2.0.1.tgz#8e579c8685764a7cc02cb680380e94f43ccb1f7c" - integrity sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ== - dependencies: - once "^1.3.2" - npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -7528,7 +6531,7 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@^4, object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4, object-assign@^4.0.0, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -7542,10 +6545,10 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" -object-inspect@^1.7.0, object-inspect@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" - integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== +object-inspect@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" + integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== object-inspect@~1.7.0: version "1.7.0" @@ -7553,12 +6556,12 @@ object-inspect@~1.7.0: integrity sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw== object-is@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.2.tgz#c5d2e87ff9e119f78b7a088441519e2eec1573b6" - integrity sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ== + version "1.1.4" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.4.tgz#63d6c83c00a43f4cbc9434eb9757c8a5b8565068" + integrity sha512-1ZvAZ4wlF7IyPVOcE1Omikt7UpaFlOQq0HlSti+ZvDH3UiD2brwGMwDbyV43jao2bKJ+4+WdPJHSd7kgzKYVqg== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.5" object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: version "1.1.1" @@ -7577,7 +6580,7 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" -object.assign@4.1.0, object.assign@^4.0.4: +object.assign@4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== @@ -7587,74 +6590,50 @@ object.assign@4.1.0, object.assign@^4.0.4: has-symbols "^1.0.0" object-keys "^1.0.11" -object.assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.1.tgz#303867a666cdd41936ecdedfb1f8f3e32a478cdd" - integrity sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA== +object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.18.0-next.0" has-symbols "^1.0.1" object-keys "^1.1.1" -object.defaults@^1.0.0, object.defaults@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" - integrity sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8= - dependencies: - array-each "^1.0.1" - array-slice "^1.0.0" - for-own "^1.0.0" - isobject "^3.0.0" - object.entries@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.2.tgz#bc73f00acb6b6bb16c203434b10f9a7e797d3add" - integrity sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA== + version "1.1.3" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.3.tgz#c601c7f168b62374541a07ddbd3e2d5e4f7711a6" + integrity sha512-ym7h7OZebNS96hn5IJeyUmaWhaSM4SVtAPPfNLQEI2MYWCO2egsITb9nab2+i/Pwibx+R0mtn+ltKJXRSeTMGg== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.5" + es-abstract "^1.18.0-next.1" has "^1.0.3" -object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz#369bf1f9592d8ab89d712dced5cb81c7c5352649" - integrity sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg== +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz#0dfda8d108074d9c563e80490c883b6661091544" + integrity sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - -object.map@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" - integrity sha1-z4Plncj8wK1fQlDh94s7gb2AHTc= - dependencies: - for-own "^1.0.0" - make-iterator "^1.0.0" + es-abstract "^1.18.0-next.1" -object.pick@^1.2.0, object.pick@^1.3.0: +object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= dependencies: isobject "^3.0.1" -object.reduce@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object.reduce/-/object.reduce-1.0.1.tgz#6fe348f2ac7fa0f95ca621226599096825bb03ad" - integrity sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60= - dependencies: - for-own "^1.0.0" - make-iterator "^1.0.0" - object.values@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" - integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== + version "1.1.2" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.2.tgz#7a2015e06fcb0f546bd652486ce8583a4731c731" + integrity sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" + es-abstract "^1.18.0-next.1" has "^1.0.3" oboe@2.1.4: @@ -7671,7 +6650,7 @@ on-finished@~2.3.0: dependencies: ee-first "1.1.1" -once@1.x, once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: +once@1.x, once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= @@ -7709,13 +6688,6 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" -ordered-read-streams@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" - integrity sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4= - dependencies: - readable-stream "^2.0.1" - os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" @@ -7774,13 +6746,20 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.0.0, p-limit@^2.2.0: +p-limit@^2.0.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -7795,12 +6774,12 @@ p-locate@^3.0.0: dependencies: p-limit "^2.0.0" -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: - p-limit "^2.2.0" + p-limit "^3.0.2" p-timeout@^1.1.1: version "1.2.1" @@ -7842,20 +6821,6 @@ parse-cache-control@^1.0.1: resolved "https://registry.yarnpkg.com/parse-cache-control/-/parse-cache-control-1.0.1.tgz#8eeab3e54fa56920fe16ba38f77fa21aacc2d74e" integrity sha1-juqz5U+laSD+Fro493+iGqzC104= -parse-code-context@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-code-context/-/parse-code-context-1.0.0.tgz#718c295c593d0d19a37f898473268cc75e98de1e" - integrity sha512-OZQaqKaQnR21iqhlnPfVisFjBWjhnMl5J9MgbP8xC+EwoVqbXrq78lp+9Zb3ahmLzrIX5Us/qbvBnaS3hkH6OA== - -parse-filepath@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" - integrity sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE= - dependencies: - is-absolute "^1.0.0" - map-cache "^0.2.0" - path-root "^0.1.1" - parse-headers@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.3.tgz#5e8e7512383d140ba02f0c7aa9f49b4399c92515" @@ -7876,16 +6841,6 @@ parse-json@^4.0.0: error-ex "^1.3.1" json-parse-better-errors "^1.0.1" -parse-node-version@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" - integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== - -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= - parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" @@ -7896,16 +6851,29 @@ pascalcase@^0.1.1: resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= +patch-package@6.2.2, patch-package@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/patch-package/-/patch-package-6.2.2.tgz#71d170d650c65c26556f0d0fbbb48d92b6cc5f39" + integrity sha512-YqScVYkVcClUY0v8fF0kWOjDYopzIM8e3bj/RU1DPeEF14+dCGm6UeOYm4jvCyxqIEQ5/eJzmbWfDWnUleFNMg== + dependencies: + "@yarnpkg/lockfile" "^1.1.0" + chalk "^2.4.2" + cross-spawn "^6.0.5" + find-yarn-workspace-root "^1.2.1" + fs-extra "^7.0.1" + is-ci "^2.0.0" + klaw-sync "^6.0.0" + minimist "^1.2.0" + rimraf "^2.6.3" + semver "^5.6.0" + slash "^2.0.0" + tmp "^0.0.33" + path-browserify@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-1.0.1.tgz#d98454a9c3753d5790860f16f68867b9e46be1fd" integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - path-exists@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" @@ -7948,18 +6916,6 @@ path-parse@^1.0.6: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== -path-root-regex@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" - integrity sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0= - -path-root@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" - integrity sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc= - dependencies: - path-root-regex "^0.1.0" - path-to-regexp@0.1.7: version "0.1.7" resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c" @@ -8002,17 +6958,12 @@ pbkdf2@^3.0.17, pbkdf2@^3.0.3, pbkdf2@^3.0.9: safe-buffer "^5.0.1" sha.js "^2.4.8" -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" - integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= - performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.0.7, picomatch@^2.2.1: +picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: version "2.2.2" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== @@ -8022,11 +6973,6 @@ pify@^2.0.0, pify@^2.3.0: resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - pify@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" @@ -8056,6 +7002,11 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= +postinstall-postinstall@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz#4f7f77441ef539d1512c40bd04c71b06a4704ca3" + integrity sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ== + precond@0.2: version "0.2.3" resolved "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz#aa9591bcaa24923f1e0f4849d240f47efc1075ac" @@ -8081,54 +7032,44 @@ prepend-http@^2.0.0: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= -prettier-plugin-solidity@^1.0.0-alpha.57: - version "1.0.0-alpha.57" - resolved "https://registry.yarnpkg.com/prettier-plugin-solidity/-/prettier-plugin-solidity-1.0.0-alpha.57.tgz#972190efe96bce816f3af3f74948c8b86ad0abb1" - integrity sha512-GTcL3OzxPn54TMlopE+wcXOUfEnpw05jvJw3KJrXkWTHER1CbkuAFRP4xiFtbJYq35ssSRO5FN4yMshx2grTIw== +prettier-plugin-solidity@1.0.0-beta.3: + version "1.0.0-beta.3" + resolved "https://registry.yarnpkg.com/prettier-plugin-solidity/-/prettier-plugin-solidity-1.0.0-beta.3.tgz#bb0385d75c7762eb29c638c1ba55c48687c13be0" + integrity sha512-iLbf5ZqwSUqi/BQuRGh+fHy0y3VLX9WayI7qB3wqakSUHItbiKsUKyXbTeho4pfTJVr0D3M4c8BNuEr2OMAOVg== dependencies: - "@solidity-parser/parser" "^0.8.0" + "@solidity-parser/parser" "^0.11.0" dir-to-object "^2.0.0" emoji-regex "^9.0.0" escape-string-regexp "^4.0.0" - extract-comments "^1.1.0" prettier "^2.0.5" semver "^7.3.2" + solidity-comments-extractor "^0.0.4" string-width "^4.2.0" +prettier@2.2.1, prettier@^2.0.5: + version "2.2.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5" + integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q== + prettier@^1.14.3: version "1.19.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== -prettier@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.5.tgz#d6d56282455243f2f92cc1716692c08aa31522d4" - integrity sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg== - -prettier@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.1.tgz#d9485dd5e499daa6cb547023b87a6cf51bee37d6" - integrity sha512-9bY+5ZWCfqj3ghYBLxApy2zf6m+NJo5GzmLTpr9FsApsfjriNnS2dahWReHMi7qNPhhHl9SYHJs2cHZLgexNIw== - -pretty-hrtime@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" - integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= - private@^0.1.6, private@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== -process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: +process-nextick-args@~2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -process@~0.5.1: - version "0.5.2" - resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" - integrity sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8= +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= progress@^2.0.0: version "2.0.3" @@ -8143,16 +7084,17 @@ promise-to-callback@^1.0.0: is-fn "^1.0.0" set-immediate-shim "^1.0.1" -promise.allsettled@1.0.2, promise.allsettled@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/promise.allsettled/-/promise.allsettled-1.0.2.tgz#d66f78fbb600e83e863d893e98b3d4376a9c47c9" - integrity sha512-UpcYW5S1RaNKT6pd+s9jp9K9rlQge1UXKskec0j6Mmuq7UJCvlS2J2/s/yuPN8ehftf9HXMxWlKiPbGGUzpoRg== +promise.allsettled@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/promise.allsettled/-/promise.allsettled-1.0.4.tgz#65e71f2a604082ed69c548b68603294090ee6803" + integrity sha512-o73CbvQh/OnPFShxHcHxk0baXR2a1m4ozb85ha0H14VEoi/EJJLa9mnPfEWJx9RjA9MLfhdjZ8I6HhWtBa64Ag== dependencies: - array.prototype.map "^1.0.1" + array.prototype.map "^1.0.3" + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" - iterate-value "^1.0.0" + es-abstract "^1.18.0-next.2" + get-intrinsic "^1.0.2" + iterate-value "^1.0.2" promise@^8.0.0: version "8.1.0" @@ -8244,14 +7186,6 @@ pull-window@^2.1.4: dependencies: looper "^2.0.0" -pump@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" - integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - pump@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" @@ -8260,15 +7194,6 @@ pump@^3.0.0: end-of-stream "^1.1.0" once "^1.3.1" -pumpify@^1.3.5: - version "1.5.1" - resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" - integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== - dependencies: - duplexify "^3.6.0" - inherits "^2.0.3" - pump "^2.0.0" - punycode@1.3.2: version "1.3.2" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" @@ -8290,9 +7215,9 @@ qs@6.7.0: integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== qs@^6.4.0, qs@^6.7.0, qs@^6.9.4: - version "6.9.4" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.4.tgz#9090b290d1f91728d3c22e54843ca44aea5ab687" - integrity sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ== + version "6.9.6" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee" + integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ== qs@~6.5.2: version "6.5.2" @@ -8333,11 +7258,6 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" -randomhex@0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/randomhex/-/randomhex-0.1.5.tgz#baceef982329091400f2a2912c6cd02f1094f585" - integrity sha1-us7vmCMpCRQA8qKRLGzQLxCU9YU= - range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -8407,7 +7327,7 @@ readable-stream@^1.0.33: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.8, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: +readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.2.2, readable-stream@^2.2.8, readable-stream@^2.2.9, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -8439,15 +7359,6 @@ readable-stream@~1.0.15: isarray "0.0.1" string_decoder "~0.10.x" -readdirp@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" - integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== - dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - readdirp@~3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.2.0.tgz#c30c33352b12c96dfb4b895421a49fd5a9593839" @@ -8455,17 +7366,10 @@ readdirp@~3.2.0: dependencies: picomatch "^2.0.4" -readdirp@~3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.3.0.tgz#984458d13a1e42e2e9f5841b129e162f369aff17" - integrity sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ== - dependencies: - picomatch "^2.0.7" - -readdirp@~3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" - integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== +readdirp@~3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" + integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== dependencies: picomatch "^2.2.1" @@ -8484,9 +7388,9 @@ recursive-readdir@^2.2.2: minimatch "3.0.4" regenerate@^1.2.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.1.tgz#cad92ad8e6b591773485fbe05a485caf4f457e6f" - integrity sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A== + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== regenerator-runtime@^0.11.0: version "0.11.1" @@ -8516,12 +7420,12 @@ regex-not@^1.0.0, regex-not@^1.0.2: safe-regex "^1.1.0" regexp.prototype.flags@^1.2.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz#7aba89b3c13a64509dabcf3ca8d9fbb9bdf5cb75" - integrity sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ== + version "1.3.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" + integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== dependencies: + call-bind "^1.0.2" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" regexpp@^2.0.1: version "2.0.1" @@ -8554,28 +7458,6 @@ regjsparser@^0.1.4: dependencies: jsesc "~0.5.0" -remove-bom-buffer@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz#c2bf1e377520d324f623892e33c10cac2c252b53" - integrity sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ== - dependencies: - is-buffer "^1.1.5" - is-utf8 "^0.2.1" - -remove-bom-stream@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz#05f1a593f16e42e1fb90ebf59de8e569525f9523" - integrity sha1-BfGlk/FuQuH7kOv1nejlaVJflSM= - dependencies: - remove-bom-buffer "^3.0.0" - safe-buffer "^5.1.0" - through2 "^2.0.3" - -remove-trailing-separator@^1.0.1, remove-trailing-separator@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" - integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= - repeat-element@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" @@ -8593,20 +7475,6 @@ repeating@^2.0.0: dependencies: is-finite "^1.0.0" -replace-ext@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.1.tgz#2d6d996d04a15855d967443631dd5f77825b016a" - integrity sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw== - -replace-homedir@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/replace-homedir/-/replace-homedir-1.0.0.tgz#e87f6d513b928dde808260c12be7fec6ff6e798c" - integrity sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw= - dependencies: - homedir-polyfill "^1.0.1" - is-absolute "^1.0.0" - remove-trailing-separator "^1.1.0" - req-cwd@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/req-cwd/-/req-cwd-2.0.0.tgz#d4082b4d44598036640fb73ddea01ed53db49ebc" @@ -8673,7 +7541,7 @@ require-from-string@^1.1.0: resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-1.2.1.tgz#529c9ccef27380adfec9a2f965b649bbee636418" integrity sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg= -require-from-string@^2.0.0: +require-from-string@^2.0.0, require-from-string@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== @@ -8688,14 +7556,6 @@ require-main-filename@^2.0.0: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== -resolve-dir@^1.0.0, resolve-dir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= - dependencies: - expand-tilde "^2.0.0" - global-modules "^1.0.0" - resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" @@ -8706,13 +7566,6 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve-options@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131" - integrity sha1-MrueOcBtZzONyTeMDW1gdFZq0TE= - dependencies: - value-or-function "^3.0.0" - resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -8723,13 +7576,21 @@ resolve@1.1.x: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@1.17.0, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.4.0, resolve@~1.17.0: +resolve@1.17.0, resolve@~1.17.0: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== dependencies: path-parse "^1.0.6" +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.13.1, resolve@^1.17.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" + integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== + dependencies: + is-core-module "^2.1.0" + path-parse "^1.0.6" + responselike@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" @@ -8776,6 +7637,13 @@ rimraf@^2.2.8, rimraf@^2.6.3: dependencies: glob "^7.1.3" +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" @@ -8791,31 +7659,15 @@ rlp@^2.0.0, rlp@^2.2.1, rlp@^2.2.2, rlp@^2.2.3, rlp@^2.2.4: dependencies: bn.js "^4.11.1" -rollup-plugin-inject@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-inject/-/rollup-plugin-inject-3.0.2.tgz#e4233855bfba6c0c12a312fd6649dff9a13ee9f4" - integrity sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w== - dependencies: - estree-walker "^0.6.1" - magic-string "^0.25.3" - rollup-pluginutils "^2.8.1" - -rollup-pluginutils@^2.8.1: - version "2.8.2" - resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" - integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== - dependencies: - estree-walker "^0.6.1" - run-async@^2.2.0: version "2.4.1" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== run-parallel@^1.1.9: - version "1.1.9" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.9.tgz#c9dd3a7cf9f4b2c4b6244e173a6ed866e61dd679" - integrity sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q== + version "1.1.10" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.10.tgz#60a51b2ae836636c81377df16cb107351bcd13ef" + integrity sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw== rustbn.js@~0.2.0: version "0.2.0" @@ -8878,49 +7730,23 @@ sc-istanbul@^0.4.5: which "^1.1.1" wordwrap "^1.0.0" -scrypt-js@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.3.tgz#bb0040be03043da9a012a2cea9fc9f852cfc87d4" - integrity sha1-uwBAvgMEPamgEqLOqfyfhSz8h9Q= - scrypt-js@2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-2.0.4.tgz#32f8c5149f0797672e551c07e230f834b6af5f16" integrity sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw== -scrypt-js@3.0.1, scrypt-js@^3.0.0: +scrypt-js@3.0.1, scrypt-js@^3.0.0, scrypt-js@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== -"scrypt-shim@github:web3-js/scrypt-shim": - version "0.1.0" - resolved "https://codeload.github.com/web3-js/scrypt-shim/tar.gz/aafdadda13e660e25e1c525d1f5b2443f5eb1ebb" - dependencies: - scryptsy "^2.1.0" - semver "^6.3.0" - -scrypt.js@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/scrypt.js/-/scrypt.js-0.3.0.tgz#6c62d61728ad533c8c376a2e5e3e86d41a95c4c0" - integrity sha512-42LTc1nyFsyv/o0gcHtDztrn+aqpkaCNt5Qh7ATBZfhEZU7IC/0oT/qbBH+uRNoAPvs2fwiOId68FDEoSRA8/A== - dependencies: - scryptsy "^1.2.1" - optionalDependencies: - scrypt "^6.0.2" - -scrypt@^6.0.2, scrypt@^6.0.3: +scrypt@6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/scrypt/-/scrypt-6.0.3.tgz#04e014a5682b53fa50c2d5cce167d719c06d870d" integrity sha1-BOAUpWgrU/pQwtXM4WfXGcBthw0= dependencies: nan "^2.0.8" -scryptsy@2.1.0, scryptsy@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-2.1.0.tgz#8d1e8d0c025b58fdd25b6fa9a0dc905ee8faa790" - integrity sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w== - scryptsy@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/scryptsy/-/scryptsy-1.2.1.tgz#a3225fa4b2524f802700761e2855bdf3b2d92163" @@ -8956,44 +7782,27 @@ seedrandom@3.0.1: resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.1.tgz#eb3dde015bcf55df05a233514e5df44ef9dce083" integrity sha512-1/02Y/rUeU1CJBAGLebiC5Lbo5FnB22gQbIFFYTLkwvp1xdABZJH1sn4ZT1MzXmPpzv+Rf/Lu2NcsLJiK4rcDg== -seek-bzip@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.6.tgz#35c4171f55a680916b52a07859ecf3b5857f21c4" - integrity sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ== - dependencies: - commander "^2.8.1" - semaphore@>=1.0.1, semaphore@^1.0.3, semaphore@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/semaphore/-/semaphore-1.1.0.tgz#aaad8b86b20fe8e9b32b16dc2ee682a8cd26a8aa" integrity sha512-O4OZEaNtkMd/K0i6js9SL+gqy0ZCBMgUvlSqHKi4IBdjhe7wB8pwztUk1BbZ1fmrvpwFrPbHzqd2w5pTcJH6LA== -semver-greatest-satisfied-range@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz#13e8c2658ab9691cb0cd71093240280d36f77a5b" - integrity sha1-E+jCZYq5aRywzXEJMkAoDTb3els= - dependencies: - sver-compat "^1.5.0" - -"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.5.1, semver@^5.7.0: +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0, semver@^5.7.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.2.0.tgz#4d813d9590aaf8a9192693d6c85b9344de5901db" - integrity sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A== - semver@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.2.1, semver@^7.3.2: - version "7.3.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" - integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== +semver@^7.2.1, semver@^7.3.2, semver@^7.3.4: + version "7.3.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" + integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== + dependencies: + lru-cache "^6.0.0" semver@~5.4.1: version "5.4.1" @@ -9019,10 +7828,10 @@ send@0.17.1: range-parser "~1.2.1" statuses "~1.5.0" -serialize-javascript@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-4.0.0.tgz#b525e1238489a5ecfc42afacc3fe99e666f4b1aa" - integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw== +serialize-javascript@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" + integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== dependencies: randombytes "^2.1.0" @@ -9155,6 +7964,11 @@ slash@^1.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" @@ -9169,6 +7983,15 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -9254,12 +8077,12 @@ solc@^0.6.3: semver "^5.5.0" tmp "0.0.33" -solhint@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/solhint/-/solhint-3.2.0.tgz#e3b3e568f64f71328f410a97f06e802033f0d7d2" - integrity sha512-BGp7JnnoLzknGC/arcH33oN/LjOz0hKgdauOcBOO5jNjhjnPQ3cAacSMH64fWYShAg5+HYQaSRubInpSKSvzLg== +solhint@3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/solhint/-/solhint-3.3.2.tgz#ebd7270bb50fd378b427d7a6fc9f2a7fd00216c0" + integrity sha512-8tHCkIAk1axLLG6Qu2WIH3GgNABonj9eAWejJbov3o3ujkZQRNHeHU1cC4/Dmjsh3Om7UzFFeADUHu2i7ZJeiw== dependencies: - "@solidity-parser/parser" "^0.7.0" + "@solidity-parser/parser" "^0.8.2" ajv "^6.6.1" antlr4 "4.7.1" ast-parents "0.0.1" @@ -9276,18 +8099,23 @@ solhint@^3.2.0: optionalDependencies: prettier "^1.14.3" -solidity-coverage@^0.7.10: - version "0.7.10" - resolved "https://registry.yarnpkg.com/solidity-coverage/-/solidity-coverage-0.7.10.tgz#ab183c11d0742478d3f4f7a025a8c813ded24ca9" - integrity sha512-F98rYoD3bscB9qIJJrqkk+o93GbOWTT54VgfO97PrcWAenOFIC1EI5DzGJSrMvmFFfr8fsMPR89on6JR0Xf/Ig== +solidity-comments-extractor@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/solidity-comments-extractor/-/solidity-comments-extractor-0.0.4.tgz#ce420aef23641ffd0131c7d80ba85b6e1e42147e" + integrity sha512-58glBODwXIKMaQ7rfcJOrWtFQMMOK28tJ0/LcB5Xhu7WtAxk4UX2fpgKPuaL41XjMp/y0gAa1MTLqk018wuSzA== + +solidity-coverage@0.7.14: + version "0.7.14" + resolved "https://registry.yarnpkg.com/solidity-coverage/-/solidity-coverage-0.7.14.tgz#88aa9d663dc82e9927275835703542a5e7931a03" + integrity sha512-2X9oNtu4yBbtDXtVe2tc9vYHtwON6QRqNvVylKdkhcJgAdCzP/OkJy9fWcWH/g3fnNCIOFssHoe0LPGZ2ppMZg== dependencies: - "@solidity-parser/parser" "^0.7.0" - "@truffle/provider" "^0.1.17" + "@solidity-parser/parser" "^0.11.0" + "@truffle/provider" "^0.2.24" chalk "^2.4.2" death "^1.1.0" detect-port "^1.3.0" fs-extra "^8.1.0" - ganache-cli "6.9.0" + ganache-cli "^6.11.0" ghost-testrpc "^0.0.2" global-modules "^2.0.0" globby "^10.0.1" @@ -9297,8 +8125,9 @@ solidity-coverage@^0.7.10: pify "^4.0.1" recursive-readdir "^2.2.2" sc-istanbul "^0.4.5" + semver "^7.3.4" shelljs "^0.8.3" - web3 "1.2.6" + web3-utils "^1.3.0" source-map-resolve@^0.5.0: version "0.5.3" @@ -9326,7 +8155,7 @@ source-map-support@^0.4.15: dependencies: source-map "^0.5.6" -source-map-support@^0.5.13: +source-map-support@^0.5.13, source-map-support@^0.5.19: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== @@ -9356,16 +8185,6 @@ source-map@~0.2.0: dependencies: amdefine ">=0.0.4" -sourcemap-codec@^1.4.4: - version "1.4.8" - resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" - integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== - -sparkles@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c" - integrity sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw== - spdx-correct@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" @@ -9388,9 +8207,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.5" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" - integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + version "3.0.7" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65" + integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" @@ -9419,11 +8238,6 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -stack-trace@0.0.10: - version "0.0.10" - resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" - integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= - stacktrace-parser@^0.1.10: version "0.1.10" resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" @@ -9449,16 +8263,6 @@ stealthy-require@^1.1.1: resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= -stream-exhaust@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/stream-exhaust/-/stream-exhaust-1.0.2.tgz#acdac8da59ef2bc1e17a2c0ccf6c320d120e555d" - integrity sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw== - -stream-shift@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" - integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== - stream-to-pull-stream@^1.7.1: version "1.7.3" resolved "https://registry.yarnpkg.com/stream-to-pull-stream/-/stream-to-pull-stream-1.7.3.tgz#4161aa2d2eb9964de60bfa1af7feaf917e874ece" @@ -9472,7 +8276,7 @@ strict-uri-encode@^1.0.0: resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= -string-width@^1.0.1, string-width@^1.0.2: +string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= @@ -9508,29 +8312,29 @@ string-width@^4.2.0: strip-ansi "^6.0.0" string.prototype.trim@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.1.tgz#141233dff32c82bfad80684d7e5f0869ee0fb782" - integrity sha512-MjGFEeqixw47dAMFMtgUro/I0+wNqZB5GKXGt1fFr24u3TzDXCPu7J9Buppzoe3r/LqkSDLDDJzE15RGWDGAVw== + version "1.2.3" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.3.tgz#d23a22fde01c1e6571a7fadcb9be11decd8061a7" + integrity sha512-16IL9pIBA5asNOSukPfxX2W68BaBvxyiRK16H3RA/lWW9BDosh+w7f+LhomPHpXJ82QEe7w7/rY/S1CV97raLg== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" + es-abstract "^1.18.0-next.1" -string.prototype.trimend@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" - integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== +string.prototype.trimend@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b" + integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.5" -string.prototype.trimstart@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" - integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== +string.prototype.trimstart@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa" + integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.5" string_decoder@^1.1.1: version "1.3.0" @@ -9591,13 +8395,6 @@ strip-bom@^3.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= -strip-dirs@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" - integrity sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g== - dependencies: - is-natural-number "^4.0.1" - strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" @@ -9615,12 +8412,7 @@ strip-json-comments@2.0.1, strip-json-comments@^2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -strip-json-comments@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.0.1.tgz#85713975a91fb87bf1b305cca77395e40d2a64a7" - integrity sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw== - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: +strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -9632,10 +8424,10 @@ supports-color@6.0.0: dependencies: has-flag "^3.0.0" -supports-color@7.1.0, supports-color@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" - integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== +supports-color@7.2.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" @@ -9658,22 +8450,13 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -sver-compat@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/sver-compat/-/sver-compat-1.5.0.tgz#3cf87dfeb4d07b4a3f14827bc186b3fd0c645cd8" - integrity sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg= - dependencies: - es6-iterator "^2.0.1" - es6-symbol "^3.1.1" - -swarm-js@0.1.39: - version "0.1.39" - resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.39.tgz#79becb07f291d4b2a178c50fee7aa6e10342c0e8" - integrity sha512-QLMqL2rzF6n5s50BptyD6Oi0R1aWlJC5Y17SRIVXRj6OR1DRIPM7nepvrxxkjA1zNzFz6mUOMjfeqeDaWB7OOg== +swarm-js@^0.1.40: + version "0.1.40" + resolved "https://registry.yarnpkg.com/swarm-js/-/swarm-js-0.1.40.tgz#b1bc7b6dcc76061f6c772203e004c11997e06b99" + integrity sha512-yqiOCEoA4/IShXkY3WKwP5PvZhmoOOD8clsKA7EEcRILMkTEYHCQ21HDCAcVpmIxZq4LyZvWeRJ6quIyHk1caA== dependencies: bluebird "^3.5.0" buffer "^5.0.5" - decompress "^4.0.0" eth-lib "^0.1.26" fs-extra "^4.0.2" got "^7.1.0" @@ -9682,7 +8465,7 @@ swarm-js@0.1.39: mock-fs "^4.1.0" setimmediate "^1.0.5" tar "^4.0.2" - xhr-request-promise "^0.1.2" + xhr-request "^1.0.1" sync-request@^6.0.0: version "6.1.0" @@ -9710,6 +8493,16 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" +table@^6.0.4: + version "6.0.7" + resolved "https://registry.yarnpkg.com/table/-/table-6.0.7.tgz#e45897ffbcc1bcf9e8a87bf420f2c9e5a7a52a34" + integrity sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g== + dependencies: + ajv "^7.0.2" + lodash "^4.17.20" + slice-ansi "^4.0.0" + string-width "^4.2.0" + tape@^4.6.3: version "4.13.3" resolved "https://registry.yarnpkg.com/tape/-/tape-4.13.3.tgz#51b3d91c83668c7a45b1a594b607dee0a0b46278" @@ -9731,19 +8524,6 @@ tape@^4.6.3: string.prototype.trim "~1.2.1" through "~2.3.8" -tar-stream@^1.5.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" - integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== - dependencies: - bl "^1.0.0" - buffer-alloc "^1.2.0" - end-of-stream "^1.0.0" - fs-constants "^1.0.0" - readable-stream "^2.3.0" - to-buffer "^1.1.1" - xtend "^4.0.0" - tar@^4.0.2: version "4.4.13" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" @@ -9784,15 +8564,7 @@ then-request@^6.0.0: promise "^8.0.0" qs "^6.4.0" -through2-filter@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254" - integrity sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA== - dependencies: - through2 "~2.0.0" - xtend "~4.0.0" - -through2@^2.0.0, through2@^2.0.3, through2@~2.0.0: +through2@^2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== @@ -9800,16 +8572,11 @@ through2@^2.0.0, through2@^2.0.3, through2@~2.0.0: readable-stream "~2.3.6" xtend "~4.0.1" -through@^2.3.6, through@^2.3.8, through@~2.3.4, through@~2.3.8: +through@^2.3.6, through@~2.3.4, through@~2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= -time-stamp@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" - integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= - timed-out@^4.0.0, timed-out@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" @@ -9829,19 +8596,6 @@ tmp@0.1.0: dependencies: rimraf "^2.6.3" -to-absolute-glob@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" - integrity sha1-GGX0PZ50sIItufFFt4z/fQ98hJs= - dependencies: - is-absolute "^1.0.0" - is-negated-glob "^1.0.0" - -to-buffer@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" - integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== - to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" @@ -9884,13 +8638,6 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" -to-through@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-through/-/to-through-2.0.0.tgz#fc92adaba072647bc0b67d6b03664aa195093af6" - integrity sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY= - dependencies: - through2 "^2.0.3" - toidentifier@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" @@ -9925,9 +8672,9 @@ tsconfig-paths@^3.9.0: strip-bom "^3.0.0" tslib@^1.9.0, tslib@^1.9.3: - version "1.13.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" - integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tsort@0.0.1: version "0.0.1" @@ -10004,9 +8751,9 @@ type@^1.0.1: integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/type/-/type-2.0.0.tgz#5f16ff6ef2eb44f260494dae271033b29c09a9c3" - integrity sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow== + version "2.1.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.1.0.tgz#9bdc22c648cf8cf86dd23d32336a41cfb6475e3f" + integrity sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA== typedarray-to-buffer@^3.1.5: version "3.1.5" @@ -10038,54 +8785,20 @@ typewiselite@~1.0.0: integrity sha1-yIgvobsQksBgBal/NO9chQjjZk4= uglify-js@^3.1.4: - version "3.10.1" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.10.1.tgz#dd14767eb7150de97f2573a5ff210db14fffe4ad" - integrity sha512-RjxApKkrPJB6kjJxQS3iZlf///REXWYxYJxO/MpmlQzVkDWVI3PSnCBWezMecmTU/TRkNxrl8bmsfFQCp+LO+Q== + version "3.12.5" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.12.5.tgz#83241496087c640efe9dfc934832e71725aba008" + integrity sha512-SgpgScL4T7Hj/w/GexjnBHi3Ien9WS1Rpfg5y91WXMj9SY997ZCQU76mH4TpLwwfmMvoOU8wiaRkIf6NaH3mtg== ultron@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== -unbzip2-stream@^1.0.9: - version "1.4.3" - resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" - integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== - dependencies: - buffer "^5.2.1" - through "^2.3.8" - -unc-path-regex@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" - integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= - underscore@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" integrity sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg== -undertaker-registry@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/undertaker-registry/-/undertaker-registry-1.0.1.tgz#5e4bda308e4a8a2ae584f9b9a4359a499825cc50" - integrity sha1-XkvaMI5KiirlhPm5pDWaSZglzFA= - -undertaker@^1.2.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/undertaker/-/undertaker-1.3.0.tgz#363a6e541f27954d5791d6fa3c1d321666f86d18" - integrity sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg== - dependencies: - arr-flatten "^1.0.1" - arr-map "^2.0.0" - bach "^1.0.0" - collection-map "^1.0.0" - es6-weak-map "^2.0.1" - fast-levenshtein "^1.0.0" - last-run "^1.1.0" - object.defaults "^1.0.0" - object.reduce "^1.0.0" - undertaker-registry "^1.0.0" - union-value@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" @@ -10096,23 +8809,15 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" -unique-stream@^2.0.2: - version "2.3.1" - resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.3.1.tgz#c65d110e9a4adf9a6c5948b28053d9a8d04cbeac" - integrity sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A== - dependencies: - json-stable-stringify-without-jsonify "^1.0.1" - through2-filter "^3.0.0" - universalify@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== -universalify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" - integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== unorm@^1.3.3: version "1.6.0" @@ -10132,15 +8837,10 @@ unset-value@^1.0.0: has-value "^0.3.1" isobject "^3.0.0" -upath@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" - integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== - uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" @@ -10186,6 +8886,13 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== +utf-8-validate@^5.0.2: + version "5.0.4" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.4.tgz#72a1735983ddf7a05a43a9c6b67c5ce1c910f9b8" + integrity sha512-MEF05cPSq3AwJ2C7B7sHAA6i53vONoZbMGX8My5auEVm6W+dJ2Jd/TZPyGJ5CH42V2XtbI5FD28HeHeqlPzZ3Q== + dependencies: + node-gyp-build "^4.2.0" + utf8@3.0.0, utf8@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" @@ -10197,14 +8904,15 @@ util-deprecate@^1.0.1, util-deprecate@~1.0.1: integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= util.promisify@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.0.1.tgz#6baf7774b80eeb0f7520d8b81d07982a59abbaee" - integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA== + version "1.1.1" + resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.1.1.tgz#77832f57ced2c9478174149cae9b96e9918cd54b" + integrity sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw== dependencies: + call-bind "^1.0.0" define-properties "^1.1.3" - es-abstract "^1.17.2" + for-each "^0.3.3" has-symbols "^1.0.1" - object.getownpropertydescriptors "^2.1.0" + object.getownpropertydescriptors "^2.1.1" utils-merge@1.0.1: version "1.0.1" @@ -10227,16 +8935,9 @@ uuid@^3.3.2: integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== v8-compile-cache@^2.0.3: - version "2.1.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" - integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== - -v8flags@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.2.0.tgz#b243e3b4dfd731fa774e7492128109a0fe66d656" - integrity sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg== - dependencies: - homedir-polyfill "^1.0.1" + version "2.2.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" + integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== validate-npm-package-license@^3.0.1: version "3.0.4" @@ -10246,10 +8947,10 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" -value-or-function@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" - integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM= +varint@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/varint/-/varint-5.0.2.tgz#5b47f8a947eb668b848e034dcfa87d0ff8a7f7a4" + integrity sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow== vary@^1, vary@~1.1.2: version "1.1.2" @@ -10265,744 +8966,355 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vinyl-fs@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-3.0.3.tgz#c85849405f67428feabbbd5c5dbdd64f47d31bc7" - integrity sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng== - dependencies: - fs-mkdirp-stream "^1.0.0" - glob-stream "^6.1.0" - graceful-fs "^4.0.0" - is-valid-glob "^1.0.0" - lazystream "^1.0.0" - lead "^1.0.0" - object.assign "^4.0.4" - pumpify "^1.3.5" - readable-stream "^2.3.3" - remove-bom-buffer "^3.0.0" - remove-bom-stream "^1.2.0" - resolve-options "^1.1.0" - through2 "^2.0.0" - to-through "^2.0.0" - value-or-function "^3.0.0" - vinyl "^2.0.0" - vinyl-sourcemap "^1.1.0" - -vinyl-sourcemap@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz#92a800593a38703a8cdb11d8b300ad4be63b3e16" - integrity sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY= - dependencies: - append-buffer "^1.0.2" - convert-source-map "^1.5.0" - graceful-fs "^4.1.6" - normalize-path "^2.1.1" - now-and-later "^2.0.0" - remove-bom-buffer "^3.0.0" - vinyl "^2.0.0" - -vinyl@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.0.tgz#d85b07da96e458d25b2ffe19fece9f2caa13ed86" - integrity sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg== - dependencies: - clone "^2.1.1" - clone-buffer "^1.0.0" - clone-stats "^1.0.0" - cloneable-readable "^1.0.0" - remove-trailing-separator "^1.0.1" - replace-ext "^1.0.0" - -web3-bzz@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.1.tgz#c3bd1e8f0c02a13cd6d4e3c3e9e1713f144f6f0d" - integrity sha512-LdOO44TuYbGIPfL4ilkuS89GQovxUpmLz6C1UC7VYVVRILeZS740FVB3j9V4P4FHUk1RenaDfKhcntqgVCHtjw== - dependencies: - got "9.6.0" - swarm-js "0.1.39" - underscore "1.9.1" - -web3-bzz@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.2.tgz#a3b9f613c49fd3e120e0997088a73557d5adb724" - integrity sha512-b1O2ObsqUN1lJxmFSjvnEC4TsaCbmh7Owj3IAIWTKqL9qhVgx7Qsu5O9cD13pBiSPNZJ68uJPaKq380QB4NWeA== - dependencies: - "@types/node" "^10.12.18" - got "9.6.0" - swarm-js "0.1.39" - underscore "1.9.1" - -web3-bzz@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.4.tgz#a4adb7a8cba3d260de649bdb1f14ed359bfb3821" - integrity sha512-MqhAo/+0iQSMBtt3/QI1rU83uvF08sYq8r25+OUZ+4VtihnYsmkkca+rdU0QbRyrXY2/yGIpI46PFdh0khD53A== +web3-bzz@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.11.tgz#41bc19a77444bd5365744596d778b811880f707f" + integrity sha512-XGpWUEElGypBjeFyUhTkiPXFbDVD6Nr/S5jznE3t8cWUA0FxRf1n3n/NuIZeb0H9RkN2Ctd/jNma/k8XGa3YKg== dependencies: - "@types/node" "^10.12.18" + "@types/node" "^12.12.6" got "9.6.0" - swarm-js "0.1.39" + swarm-js "^0.1.40" underscore "1.9.1" -web3-bzz@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.6.tgz#0b88c0b96029eaf01b10cb47c4d5f79db4668883" - integrity sha512-9NiHLlxdI1XeFtbPJAmi2jnnIHVF+GNy517wvOS72P7ZfuJTPwZaSNXfT01vWgPPE9R96/uAHDWHOg+T4WaDQQ== +web3-bzz@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.9.tgz#25f8a373bc2dd019f47bf80523546f98b93c8790" + integrity sha512-ogVQr9jHodu9HobARtvUSmWG22cv2EUQzlPeejGWZ7j5h20HX40EDuWyomGY5VclIj5DdLY76Tmq88RTf/6nxA== dependencies: "@types/node" "^10.12.18" got "9.6.0" - swarm-js "0.1.39" + swarm-js "^0.1.40" underscore "1.9.1" -web3-core-helpers@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.1.tgz#f5f32d71c60a4a3bd14786118e633ce7ca6d5d0d" - integrity sha512-Gx3sTEajD5r96bJgfuW377PZVFmXIH4TdqDhgGwd2lZQCcMi+DA4TgxJNJGxn0R3aUVzyyE76j4LBrh412mXrw== - dependencies: - underscore "1.9.1" - web3-eth-iban "1.2.1" - web3-utils "1.2.1" - -web3-core-helpers@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.2.tgz#484974f4bd4a487217b85b0d7cfe841af0907619" - integrity sha512-HJrRsIGgZa1jGUIhvGz4S5Yh6wtOIo/TMIsSLe+Xay+KVnbseJpPprDI5W3s7H2ODhMQTbogmmUFquZweW2ImQ== - dependencies: - underscore "1.9.1" - web3-eth-iban "1.2.2" - web3-utils "1.2.2" - -web3-core-helpers@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.4.tgz#ffd425861f4d66b3f38df032afdb39ea0971fc0f" - integrity sha512-U7wbsK8IbZvF3B7S+QMSNP0tni/6VipnJkB0tZVEpHEIV2WWeBHYmZDnULWcsS/x/jn9yKhJlXIxWGsEAMkjiw== - dependencies: - underscore "1.9.1" - web3-eth-iban "1.2.4" - web3-utils "1.2.4" - -web3-core-helpers@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.6.tgz#7aacd25bf8015adcdfc0f3243d0dcfdff0373f7d" - integrity sha512-gYKWmC2HmO7RcDzpo4L1K8EIoy5L8iubNDuTC6q69UxczwqKF/Io0kbK/1Z10Av++NlzOSiuyGp2gc4t4UOsDw== - dependencies: - underscore "1.9.1" - web3-eth-iban "1.2.6" - web3-utils "1.2.6" - -web3-core-method@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.1.tgz#9df1bafa2cd8be9d9937e01c6a47fc768d15d90a" - integrity sha512-Ghg2WS23qi6Xj8Od3VCzaImLHseEA7/usvnOItluiIc5cKs00WYWsNy2YRStzU9a2+z8lwQywPYp0nTzR/QXdQ== +web3-core-helpers@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.11.tgz#84c681ed0b942c0203f3b324a245a127e8c67a99" + integrity sha512-PEPoAoZd5ME7UfbnCZBdzIerpe74GEvlwT4AjOmHeCVZoIFk7EqvOZDejJHt+feJA6kMVTdd0xzRNN295UhC1A== dependencies: underscore "1.9.1" - web3-core-helpers "1.2.1" - web3-core-promievent "1.2.1" - web3-core-subscriptions "1.2.1" - web3-utils "1.2.1" + web3-eth-iban "1.2.11" + web3-utils "1.2.11" -web3-core-method@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.2.tgz#d4fe2bb1945b7152e5f08e4ea568b171132a1e56" - integrity sha512-szR4fDSBxNHaF1DFqE+j6sFR/afv9Aa36OW93saHZnrh+iXSrYeUUDfugeNcRlugEKeUCkd4CZylfgbK2SKYJA== +web3-core-helpers@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.9.tgz#6381077c3e01c127018cb9e9e3d1422697123315" + integrity sha512-t0WAG3orLCE3lqi77ZoSRNFok3VQWZXTniZigDQjyOJYMAX7BU3F3js8HKbjVnAxlX3tiKoDxI0KBk9F3AxYuw== dependencies: underscore "1.9.1" - web3-core-helpers "1.2.2" - web3-core-promievent "1.2.2" - web3-core-subscriptions "1.2.2" - web3-utils "1.2.2" + web3-eth-iban "1.2.9" + web3-utils "1.2.9" -web3-core-method@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.4.tgz#a0fbc50b8ff5fd214021435cc2c6d1e115807aed" - integrity sha512-8p9kpL7di2qOVPWgcM08kb+yKom0rxRCMv6m/K+H+yLSxev9TgMbCgMSbPWAHlyiF3SJHw7APFKahK5Z+8XT5A== +web3-core-method@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.11.tgz#f880137d1507a0124912bf052534f168b8d8fbb6" + integrity sha512-ff0q76Cde94HAxLDZ6DbdmKniYCQVtvuaYh+rtOUMB6kssa5FX0q3vPmixi7NPooFnbKmmZCM6NvXg4IreTPIw== dependencies: + "@ethersproject/transactions" "^5.0.0-beta.135" underscore "1.9.1" - web3-core-helpers "1.2.4" - web3-core-promievent "1.2.4" - web3-core-subscriptions "1.2.4" - web3-utils "1.2.4" + web3-core-helpers "1.2.11" + web3-core-promievent "1.2.11" + web3-core-subscriptions "1.2.11" + web3-utils "1.2.11" -web3-core-method@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.6.tgz#f5a3e4d304abaf382923c8ab88ec8eeef45c1b3b" - integrity sha512-r2dzyPEonqkBg7Mugq5dknhV5PGaZTHBZlS/C+aMxNyQs3T3eaAsCTqlQDitwNUh/sUcYPEGF0Vo7ahYK4k91g== +web3-core-method@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.9.tgz#3fb538751029bea570e4f86731e2fa5e4945e462" + integrity sha512-bjsIoqP3gs7A/gP8+QeLUCyOKJ8bopteCSNbCX36Pxk6TYfYWNuC6hP+2GzUuqdP3xaZNe+XEElQFUNpR3oyAg== dependencies: + "@ethersproject/transactions" "^5.0.0-beta.135" underscore "1.9.1" - web3-core-helpers "1.2.6" - web3-core-promievent "1.2.6" - web3-core-subscriptions "1.2.6" - web3-utils "1.2.6" + web3-core-helpers "1.2.9" + web3-core-promievent "1.2.9" + web3-core-subscriptions "1.2.9" + web3-utils "1.2.9" -web3-core-promievent@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.1.tgz#003e8a3eb82fb27b6164a6d5b9cad04acf733838" - integrity sha512-IVUqgpIKoeOYblwpex4Hye6npM0aMR+kU49VP06secPeN0rHMyhGF0ZGveWBrGvf8WDPI7jhqPBFIC6Jf3Q3zw== - dependencies: - any-promise "1.3.0" - eventemitter3 "3.1.2" - -web3-core-promievent@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.2.tgz#3b60e3f2a0c96db8a891c927899d29d39e66ab1c" - integrity sha512-tKvYeT8bkUfKABcQswK6/X79blKTKYGk949urZKcLvLDEaWrM3uuzDwdQT3BNKzQ3vIvTggFPX9BwYh0F1WwqQ== - dependencies: - any-promise "1.3.0" - eventemitter3 "3.1.2" - -web3-core-promievent@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.4.tgz#75e5c0f2940028722cdd21ba503ebd65272df6cb" - integrity sha512-gEUlm27DewUsfUgC3T8AxkKi8Ecx+e+ZCaunB7X4Qk3i9F4C+5PSMGguolrShZ7Zb6717k79Y86f3A00O0VAZw== +web3-core-promievent@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.11.tgz#51fe97ca0ddec2f99bf8c3306a7a8e4b094ea3cf" + integrity sha512-il4McoDa/Ox9Agh4kyfQ8Ak/9ABYpnF8poBLL33R/EnxLsJOGQG2nZhkJa3I067hocrPSjEdlPt/0bHXsln4qA== dependencies: - any-promise "1.3.0" - eventemitter3 "3.1.2" + eventemitter3 "4.0.4" -web3-core-promievent@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.6.tgz#b1550a3a4163e48b8b704c1fe4b0084fc2dad8f5" - integrity sha512-km72kJef/qtQNiSjDJJVHIZvoVOm6ytW3FCYnOcCs7RIkviAb5JYlPiye0o4pJOLzCXYID7DK7Q9bhY8qWb1lw== +web3-core-promievent@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.9.tgz#bb1c56aa6fac2f4b3c598510f06554d25c11c553" + integrity sha512-0eAUA2zjgXTleSrnc1wdoKQPPIHU6KHf4fAscu4W9kKrR+mqP1KsjYrxY9wUyjNnXxfQ+5M29ipvbiaK8OqdOw== dependencies: - any-promise "1.3.0" eventemitter3 "3.1.2" -web3-core-requestmanager@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.1.tgz#fa2e2206c3d738db38db7c8fe9c107006f5c6e3d" - integrity sha512-xfknTC69RfYmLKC+83Jz73IC3/sS2ZLhGtX33D4Q5nQ8yc39ElyAolxr9sJQS8kihOcM6u4J+8gyGMqsLcpIBg== - dependencies: - underscore "1.9.1" - web3-core-helpers "1.2.1" - web3-providers-http "1.2.1" - web3-providers-ipc "1.2.1" - web3-providers-ws "1.2.1" - -web3-core-requestmanager@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.2.tgz#667ba9ac724c9c76fa8965ae8a3c61f66e68d8d6" - integrity sha512-a+gSbiBRHtHvkp78U2bsntMGYGF2eCb6219aMufuZWeAZGXJ63Wc2321PCbA8hF9cQrZI4EoZ4kVLRI4OF15Hw== - dependencies: - underscore "1.9.1" - web3-core-helpers "1.2.2" - web3-providers-http "1.2.2" - web3-providers-ipc "1.2.2" - web3-providers-ws "1.2.2" - -web3-core-requestmanager@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.4.tgz#0a7020a23fb91c6913c611dfd3d8c398d1e4b4a8" - integrity sha512-eZJDjyNTDtmSmzd3S488nR/SMJtNnn/GuwxnMh3AzYCqG3ZMfOylqTad2eYJPvc2PM5/Gj1wAMQcRpwOjjLuPg== - dependencies: - underscore "1.9.1" - web3-core-helpers "1.2.4" - web3-providers-http "1.2.4" - web3-providers-ipc "1.2.4" - web3-providers-ws "1.2.4" - -web3-core-requestmanager@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.6.tgz#5808c0edc0d6e2991a87b65508b3a1ab065b68ec" - integrity sha512-QU2cbsj9Dm0r6om40oSwk8Oqbp3wTa08tXuMpSmeOTkGZ3EMHJ1/4LiJ8shwg1AvPMrKVU0Nri6+uBNCdReZ+g== - dependencies: - underscore "1.9.1" - web3-core-helpers "1.2.6" - web3-providers-http "1.2.6" - web3-providers-ipc "1.2.6" - web3-providers-ws "1.2.6" - -web3-core-subscriptions@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.1.tgz#8c2368a839d4eec1c01a4b5650bbeb82d0e4a099" - integrity sha512-nmOwe3NsB8V8UFsY1r+sW6KjdOS68h8nuh7NzlWxBQT/19QSUGiERRTaZXWu5BYvo1EoZRMxCKyCQpSSXLc08g== +web3-core-requestmanager@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.11.tgz#fe6eb603fbaee18530293a91f8cf26d8ae28c45a" + integrity sha512-oFhBtLfOiIbmfl6T6gYjjj9igOvtyxJ+fjS+byRxiwFJyJ5BQOz4/9/17gWR1Cq74paTlI7vDGxYfuvfE/mKvA== dependencies: - eventemitter3 "3.1.2" underscore "1.9.1" - web3-core-helpers "1.2.1" + web3-core-helpers "1.2.11" + web3-providers-http "1.2.11" + web3-providers-ipc "1.2.11" + web3-providers-ws "1.2.11" -web3-core-subscriptions@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.2.tgz#bf4ba23a653a003bdc3551649958cc0b080b068e" - integrity sha512-QbTgigNuT4eicAWWr7ahVpJyM8GbICsR1Ys9mJqzBEwpqS+RXTRVSkwZ2IsxO+iqv6liMNwGregbJLq4urMFcQ== +web3-core-requestmanager@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.9.tgz#dd6d855256c4dd681434fe0867f8cd742fe10503" + integrity sha512-1PwKV2m46ALUnIN5VPPgjOj8yMLJhhqZYvYJE34hTN5SErOkwhzx5zScvo5MN7v7KyQGFnpVCZKKGCiEnDmtFA== dependencies: - eventemitter3 "3.1.2" underscore "1.9.1" - web3-core-helpers "1.2.2" + web3-core-helpers "1.2.9" + web3-providers-http "1.2.9" + web3-providers-ipc "1.2.9" + web3-providers-ws "1.2.9" -web3-core-subscriptions@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.4.tgz#0dc095b5cfd82baa527a39796e3515a846b21b99" - integrity sha512-3D607J2M8ymY9V+/WZq4MLlBulwCkwEjjC2U+cXqgVO1rCyVqbxZNCmHyNYHjDDCxSEbks9Ju5xqJxDSxnyXEw== +web3-core-subscriptions@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.11.tgz#beca908fbfcb050c16f45f3f0f4c205e8505accd" + integrity sha512-qEF/OVqkCvQ7MPs1JylIZCZkin0aKK9lDxpAtQ1F8niEDGFqn7DT8E/vzbIa0GsOjL2fZjDhWJsaW+BSoAW1gg== dependencies: - eventemitter3 "3.1.2" + eventemitter3 "4.0.4" underscore "1.9.1" - web3-core-helpers "1.2.4" + web3-core-helpers "1.2.11" -web3-core-subscriptions@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.6.tgz#9d44189e2321f8f1abc31f6c09103b5283461b57" - integrity sha512-M0PzRrP2Ct13x3wPulFtc5kENH4UtnPxO9YxkfQlX2WRKENWjt4Rfq+BCVGYEk3rTutDfWrjfzjmqMRvXqEY5Q== +web3-core-subscriptions@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.9.tgz#335fd7d15dfce5d78b4b7bef05ce4b3d7237b0e4" + integrity sha512-Y48TvXPSPxEM33OmXjGVDMzTd0j8X0t2+sDw66haeBS8eYnrEzasWuBZZXDq0zNUsqyxItgBGDn+cszkgEnFqg== dependencies: eventemitter3 "3.1.2" underscore "1.9.1" - web3-core-helpers "1.2.6" - -web3-core@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.1.tgz#7278b58fb6495065e73a77efbbce781a7fddf1a9" - integrity sha512-5ODwIqgl8oIg/0+Ai4jsLxkKFWJYE0uLuE1yUKHNVCL4zL6n3rFjRMpKPokd6id6nJCNgeA64KdWQ4XfpnjdMg== - dependencies: - web3-core-helpers "1.2.1" - web3-core-method "1.2.1" - web3-core-requestmanager "1.2.1" - web3-utils "1.2.1" + web3-core-helpers "1.2.9" -web3-core@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.2.tgz#334b99c8222ef9cfd0339e27352f0b58ea789a2f" - integrity sha512-miHAX3qUgxV+KYfaOY93Hlc3kLW2j5fH8FJy6kSxAv+d4d5aH0wwrU2IIoJylQdT+FeenQ38sgsCnFu9iZ1hCQ== - dependencies: - "@types/bn.js" "^4.11.4" - "@types/node" "^12.6.1" - web3-core-helpers "1.2.2" - web3-core-method "1.2.2" - web3-core-requestmanager "1.2.2" - web3-utils "1.2.2" - -web3-core@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.4.tgz#2df13b978dcfc59c2abaa887d27f88f21ad9a9d6" - integrity sha512-CHc27sMuET2cs1IKrkz7xzmTdMfZpYswe7f0HcuyneTwS1yTlTnHyqjAaTy0ZygAb/x4iaVox+Gvr4oSAqSI+A== +web3-core@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.11.tgz#1043cacc1becb80638453cc5b2a14be9050288a7" + integrity sha512-CN7MEYOY5ryo5iVleIWRE3a3cZqVaLlIbIzDPsvQRUfzYnvzZQRZBm9Mq+ttDi2STOOzc1MKylspz/o3yq/LjQ== dependencies: - "@types/bignumber.js" "^5.0.0" - "@types/bn.js" "^4.11.4" - "@types/node" "^12.6.1" - web3-core-helpers "1.2.4" - web3-core-method "1.2.4" - web3-core-requestmanager "1.2.4" - web3-utils "1.2.4" + "@types/bn.js" "^4.11.5" + "@types/node" "^12.12.6" + bignumber.js "^9.0.0" + web3-core-helpers "1.2.11" + web3-core-method "1.2.11" + web3-core-requestmanager "1.2.11" + web3-utils "1.2.11" -web3-core@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.6.tgz#bb42a1d7ae49a7258460f0d95ddb00906f59ef92" - integrity sha512-y/QNBFtr5cIR8vxebnotbjWJpOnO8LDYEAzZjeRRUJh2ijmhjoYk7dSNx9ExgC0UCfNFRoNCa9dGRu/GAxwRlw== +web3-core@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.9.tgz#2cba57aa259b6409db532d21bdf57db8d504fd3e" + integrity sha512-fSYv21IP658Ty2wAuU9iqmW7V+75DOYMVZsDH/c14jcF/1VXnedOcxzxSj3vArsCvXZNe6XC5/wAuGZyQwR9RA== dependencies: "@types/bn.js" "^4.11.4" "@types/node" "^12.6.1" - web3-core-helpers "1.2.6" - web3-core-method "1.2.6" - web3-core-requestmanager "1.2.6" - web3-utils "1.2.6" - -web3-eth-abi@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.1.tgz#9b915b1c9ebf82f70cca631147035d5419064689" - integrity sha512-jI/KhU2a/DQPZXHjo2GW0myEljzfiKOn+h1qxK1+Y9OQfTcBMxrQJyH5AP89O6l6NZ1QvNdq99ThAxBFoy5L+g== - dependencies: - ethers "4.0.0-beta.3" - underscore "1.9.1" - web3-utils "1.2.1" - -web3-eth-abi@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.2.tgz#d5616d88a90020f894763423a9769f2da11fe37a" - integrity sha512-Yn/ZMgoOLxhTVxIYtPJ0eS6pnAnkTAaJgUJh1JhZS4ekzgswMfEYXOwpMaD5eiqPJLpuxmZFnXnBZlnQ1JMXsw== - dependencies: - ethers "4.0.0-beta.3" - underscore "1.9.1" - web3-utils "1.2.2" - -web3-eth-abi@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.4.tgz#5b73e5ef70b03999227066d5d1310b168845e2b8" - integrity sha512-8eLIY4xZKoU3DSVu1pORluAw9Ru0/v4CGdw5so31nn+7fR8zgHMgwbFe0aOqWQ5VU42PzMMXeIJwt4AEi2buFg== - dependencies: - ethers "4.0.0-beta.3" - underscore "1.9.1" - web3-utils "1.2.4" + bignumber.js "^9.0.0" + web3-core-helpers "1.2.9" + web3-core-method "1.2.9" + web3-core-requestmanager "1.2.9" + web3-utils "1.2.9" -web3-eth-abi@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.6.tgz#b495383cc5c0d8e2857b26e7fe25606685983b25" - integrity sha512-w9GAyyikn8nSifSDZxAvU9fxtQSX+W2xQWMmrtTXmBGCaE4/ywKOSPAO78gq8AoU4Wq5yqVGKZLLbfpt7/sHlA== +web3-eth-abi@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.11.tgz#a887494e5d447c2926d557a3834edd66e17af9b0" + integrity sha512-PkRYc0+MjuLSgg03QVWqWlQivJqRwKItKtEpRUaxUAeLE7i/uU39gmzm2keHGcQXo3POXAbOnMqkDvOep89Crg== dependencies: - ethers "4.0.0-beta.3" + "@ethersproject/abi" "5.0.0-beta.153" underscore "1.9.1" - web3-utils "1.2.6" + web3-utils "1.2.11" -web3-eth-accounts@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.1.tgz#2741a8ef337a7219d57959ac8bd118b9d68d63cf" - integrity sha512-26I4qq42STQ8IeKUyur3MdQ1NzrzCqPsmzqpux0j6X/XBD7EjZ+Cs0lhGNkSKH5dI3V8CJasnQ5T1mNKeWB7nQ== +web3-eth-abi@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.9.tgz#14bedd7e4be04fcca35b2ac84af1400574cd8280" + integrity sha512-3YwUYbh/DMfDbhMWEebAdjSd5bj3ZQieOjLzWFHU23CaLEqT34sUix1lba+hgUH/EN6A7bKAuKOhR3p0OvTn7Q== dependencies: - any-promise "1.3.0" - crypto-browserify "3.12.0" - eth-lib "0.2.7" - scryptsy "2.1.0" - semver "6.2.0" + "@ethersproject/abi" "5.0.0-beta.153" underscore "1.9.1" - uuid "3.3.2" - web3-core "1.2.1" - web3-core-helpers "1.2.1" - web3-core-method "1.2.1" - web3-utils "1.2.1" + web3-utils "1.2.9" -web3-eth-accounts@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.2.tgz#c187e14bff6baa698ac352220290222dbfd332e5" - integrity sha512-KzHOEyXOEZ13ZOkWN3skZKqSo5f4Z1ogPFNn9uZbKCz+kSp+gCAEKxyfbOsB/JMAp5h7o7pb6eYsPCUBJmFFiA== - dependencies: - any-promise "1.3.0" - crypto-browserify "3.12.0" - eth-lib "0.2.7" - ethereumjs-common "^1.3.2" - ethereumjs-tx "^2.1.1" - scrypt-shim "github:web3-js/scrypt-shim" - underscore "1.9.1" - uuid "3.3.2" - web3-core "1.2.2" - web3-core-helpers "1.2.2" - web3-core-method "1.2.2" - web3-utils "1.2.2" - -web3-eth-accounts@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.4.tgz#ada6edc49542354328a85cafab067acd7f88c288" - integrity sha512-04LzT/UtWmRFmi4hHRewP5Zz43fWhuHiK5XimP86sUQodk/ByOkXQ3RoXyGXFMNoRxdcAeRNxSfA2DpIBc9xUw== +web3-eth-accounts@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.11.tgz#a9e3044da442d31903a7ce035a86d8fa33f90520" + integrity sha512-6FwPqEpCfKIh3nSSGeo3uBm2iFSnFJDfwL3oS9pyegRBXNsGRVpgiW63yhNzL0796StsvjHWwQnQHsZNxWAkGw== dependencies: - "@web3-js/scrypt-shim" "^0.1.0" - any-promise "1.3.0" crypto-browserify "3.12.0" - eth-lib "0.2.7" + eth-lib "0.2.8" ethereumjs-common "^1.3.2" ethereumjs-tx "^2.1.1" + scrypt-js "^3.0.1" underscore "1.9.1" uuid "3.3.2" - web3-core "1.2.4" - web3-core-helpers "1.2.4" - web3-core-method "1.2.4" - web3-utils "1.2.4" + web3-core "1.2.11" + web3-core-helpers "1.2.11" + web3-core-method "1.2.11" + web3-utils "1.2.11" -web3-eth-accounts@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.6.tgz#a1ba4bf75fa8102a3ec6cddd0eccd72462262720" - integrity sha512-cDVtonHRgzqi/ZHOOf8kfCQWFEipcfQNAMzXIaKZwc0UUD9mgSI5oJrN45a89Ze+E6Lz9m77cDG5Ax9zscSkcw== +web3-eth-accounts@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.9.tgz#7ec422df90fecb5243603ea49dc28726db7bdab6" + integrity sha512-jkbDCZoA1qv53mFcRHCinoCsgg8WH+M0YUO1awxmqWXRmCRws1wW0TsuSQ14UThih5Dxolgl+e+aGWxG58LMwg== dependencies: - "@web3-js/scrypt-shim" "^0.1.0" - any-promise "1.3.0" crypto-browserify "3.12.0" eth-lib "^0.2.8" ethereumjs-common "^1.3.2" ethereumjs-tx "^2.1.1" + scrypt-js "^3.0.1" underscore "1.9.1" uuid "3.3.2" - web3-core "1.2.6" - web3-core-helpers "1.2.6" - web3-core-method "1.2.6" - web3-utils "1.2.6" + web3-core "1.2.9" + web3-core-helpers "1.2.9" + web3-core-method "1.2.9" + web3-utils "1.2.9" -web3-eth-contract@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.1.tgz#3542424f3d341386fd9ff65e78060b85ac0ea8c4" - integrity sha512-kYFESbQ3boC9bl2rYVghj7O8UKMiuKaiMkxvRH5cEDHil8V7MGEGZNH0slSdoyeftZVlaWSMqkRP/chfnKND0g== - dependencies: - underscore "1.9.1" - web3-core "1.2.1" - web3-core-helpers "1.2.1" - web3-core-method "1.2.1" - web3-core-promievent "1.2.1" - web3-core-subscriptions "1.2.1" - web3-eth-abi "1.2.1" - web3-utils "1.2.1" - -web3-eth-contract@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.2.tgz#84e92714918a29e1028ee7718f0712536e14e9a1" - integrity sha512-EKT2yVFws3FEdotDQoNsXTYL798+ogJqR2//CaGwx3p0/RvQIgfzEwp8nbgA6dMxCsn9KOQi7OtklzpnJMkjtA== - dependencies: - "@types/bn.js" "^4.11.4" - underscore "1.9.1" - web3-core "1.2.2" - web3-core-helpers "1.2.2" - web3-core-method "1.2.2" - web3-core-promievent "1.2.2" - web3-core-subscriptions "1.2.2" - web3-eth-abi "1.2.2" - web3-utils "1.2.2" - -web3-eth-contract@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.4.tgz#68ef7cc633232779b0a2c506a810fbe903575886" - integrity sha512-b/9zC0qjVetEYnzRA1oZ8gF1OSSUkwSYi5LGr4GeckLkzXP7osEnp9lkO/AQcE4GpG+l+STnKPnASXJGZPgBRQ== +web3-eth-contract@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.11.tgz#917065902bc27ce89da9a1da26e62ef663663b90" + integrity sha512-MzYuI/Rq2o6gn7vCGcnQgco63isPNK5lMAan2E51AJLknjSLnOxwNY3gM8BcKoy4Z+v5Dv00a03Xuk78JowFow== dependencies: - "@types/bn.js" "^4.11.4" + "@types/bn.js" "^4.11.5" underscore "1.9.1" - web3-core "1.2.4" - web3-core-helpers "1.2.4" - web3-core-method "1.2.4" - web3-core-promievent "1.2.4" - web3-core-subscriptions "1.2.4" - web3-eth-abi "1.2.4" - web3-utils "1.2.4" - -web3-eth-contract@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.6.tgz#39111543960035ed94c597a239cf5aa1da796741" - integrity sha512-ak4xbHIhWgsbdPCkSN+HnQc1SH4c856y7Ly+S57J/DQVzhFZemK5HvWdpwadJrQTcHET3ZeId1vq3kmW7UYodw== + web3-core "1.2.11" + web3-core-helpers "1.2.11" + web3-core-method "1.2.11" + web3-core-promievent "1.2.11" + web3-core-subscriptions "1.2.11" + web3-eth-abi "1.2.11" + web3-utils "1.2.11" + +web3-eth-contract@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.9.tgz#713d9c6d502d8c8f22b696b7ffd8e254444e6bfd" + integrity sha512-PYMvJf7EG/HyssUZa+pXrc8IB06K/YFfWYyW4R7ed3sab+9wWUys1TlWxBCBuiBXOokSAyM6H6P6/cKEx8FT8Q== dependencies: "@types/bn.js" "^4.11.4" underscore "1.9.1" - web3-core "1.2.6" - web3-core-helpers "1.2.6" - web3-core-method "1.2.6" - web3-core-promievent "1.2.6" - web3-core-subscriptions "1.2.6" - web3-eth-abi "1.2.6" - web3-utils "1.2.6" - -web3-eth-ens@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.1.tgz#a0e52eee68c42a8b9865ceb04e5fb022c2d971d5" - integrity sha512-lhP1kFhqZr2nnbu3CGIFFrAnNxk2veXpOXBY48Tub37RtobDyHijHgrj+xTh+mFiPokyrapVjpFsbGa+Xzye4Q== - dependencies: - eth-ens-namehash "2.0.8" - underscore "1.9.1" - web3-core "1.2.1" - web3-core-helpers "1.2.1" - web3-core-promievent "1.2.1" - web3-eth-abi "1.2.1" - web3-eth-contract "1.2.1" - web3-utils "1.2.1" - -web3-eth-ens@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.2.tgz#0a4abed1d4cbdacbf5e1ab06e502d806d1192bc6" - integrity sha512-CFjkr2HnuyMoMFBoNUWojyguD4Ef+NkyovcnUc/iAb9GP4LHohKrODG4pl76R5u61TkJGobC2ij6TyibtsyVYg== - dependencies: - eth-ens-namehash "2.0.8" - underscore "1.9.1" - web3-core "1.2.2" - web3-core-helpers "1.2.2" - web3-core-promievent "1.2.2" - web3-eth-abi "1.2.2" - web3-eth-contract "1.2.2" - web3-utils "1.2.2" - -web3-eth-ens@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.4.tgz#b95b3aa99fb1e35c802b9e02a44c3046a3fa065e" - integrity sha512-g8+JxnZlhdsCzCS38Zm6R/ngXhXzvc3h7bXlxgKU4coTzLLoMpgOAEz71GxyIJinWTFbLXk/WjNY0dazi9NwVw== + web3-core "1.2.9" + web3-core-helpers "1.2.9" + web3-core-method "1.2.9" + web3-core-promievent "1.2.9" + web3-core-subscriptions "1.2.9" + web3-eth-abi "1.2.9" + web3-utils "1.2.9" + +web3-eth-ens@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.11.tgz#26d4d7f16d6cbcfff918e39832b939edc3162532" + integrity sha512-dbW7dXP6HqT1EAPvnniZVnmw6TmQEKF6/1KgAxbo8iBBYrVTMDGFQUUnZ+C4VETGrwwaqtX4L9d/FrQhZ6SUiA== dependencies: + content-hash "^2.5.2" eth-ens-namehash "2.0.8" underscore "1.9.1" - web3-core "1.2.4" - web3-core-helpers "1.2.4" - web3-core-promievent "1.2.4" - web3-eth-abi "1.2.4" - web3-eth-contract "1.2.4" - web3-utils "1.2.4" - -web3-eth-ens@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.6.tgz#bf86a624c4c72bc59913c2345180d3ea947e110d" - integrity sha512-8UEqt6fqR/dji/jBGPFAyBs16OJjwi0t2dPWXPyGXmty/fH+osnXwWXE4HRUyj4xuafiM5P1YkXMsPhKEadjiw== + web3-core "1.2.11" + web3-core-helpers "1.2.11" + web3-core-promievent "1.2.11" + web3-eth-abi "1.2.11" + web3-eth-contract "1.2.11" + web3-utils "1.2.11" + +web3-eth-ens@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.9.tgz#577b9358c036337833fb2bdc59c11be7f6f731b6" + integrity sha512-kG4+ZRgZ8I1WYyOBGI8QVRHfUSbbJjvJAGA1AF/NOW7JXQ+x7gBGeJw6taDWJhSshMoEKWcsgvsiuoG4870YxQ== dependencies: + content-hash "^2.5.2" eth-ens-namehash "2.0.8" underscore "1.9.1" - web3-core "1.2.6" - web3-core-helpers "1.2.6" - web3-core-promievent "1.2.6" - web3-eth-abi "1.2.6" - web3-eth-contract "1.2.6" - web3-utils "1.2.6" - -web3-eth-iban@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.1.tgz#2c3801718946bea24e9296993a975c80b5acf880" - integrity sha512-9gkr4QPl1jCU+wkgmZ8EwODVO3ovVj6d6JKMos52ggdT2YCmlfvFVF6wlGLwi0VvNa/p+0BjJzaqxnnG/JewjQ== - dependencies: - bn.js "4.11.8" - web3-utils "1.2.1" - -web3-eth-iban@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.2.tgz#76bec73bad214df7c4192388979a59fc98b96c5a" - integrity sha512-gxKXBoUhaTFHr0vJB/5sd4i8ejF/7gIsbM/VvemHT3tF5smnmY6hcwSMmn7sl5Gs+83XVb/BngnnGkf+I/rsrQ== - dependencies: - bn.js "4.11.8" - web3-utils "1.2.2" - -web3-eth-iban@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.4.tgz#8e0550fd3fd8e47a39357d87fe27dee9483ee476" - integrity sha512-D9HIyctru/FLRpXakRwmwdjb5bWU2O6UE/3AXvRm6DCOf2e+7Ve11qQrPtaubHfpdW3KWjDKvlxV9iaFv/oTMQ== + web3-core "1.2.9" + web3-core-helpers "1.2.9" + web3-core-promievent "1.2.9" + web3-eth-abi "1.2.9" + web3-eth-contract "1.2.9" + web3-utils "1.2.9" + +web3-eth-iban@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.11.tgz#f5f73298305bc7392e2f188bf38a7362b42144ef" + integrity sha512-ozuVlZ5jwFC2hJY4+fH9pIcuH1xP0HEFhtWsR69u9uDIANHLPQQtWYmdj7xQ3p2YT4bQLq/axKhZi7EZVetmxQ== dependencies: - bn.js "4.11.8" - web3-utils "1.2.4" + bn.js "^4.11.9" + web3-utils "1.2.11" -web3-eth-iban@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.6.tgz#0b22191fd1aa6e27f7ef0820df75820bfb4ed46b" - integrity sha512-TPMc3BW9Iso7H+9w+ytbqHK9wgOmtocyCD3PaAe5Eie50KQ/j7ThA60dGJnxItVo6yyRv5pZAYxPVob9x/fJlg== +web3-eth-iban@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.9.tgz#4ebf3d8783f34d04c4740dc18938556466399f7a" + integrity sha512-RtdVvJE0pyg9dHLy0GzDiqgnLnssSzfz/JYguhC1wsj9+Gnq1M6Diy3NixACWUAp6ty/zafyOaZnNQ+JuH9TjQ== dependencies: bn.js "4.11.8" - web3-utils "1.2.6" - -web3-eth-personal@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.1.tgz#244e9911b7b482dc17c02f23a061a627c6e47faf" - integrity sha512-RNDVSiaSoY4aIp8+Hc7z+X72H7lMb3fmAChuSBADoEc7DsJrY/d0R5qQDK9g9t2BO8oxgLrLNyBP/9ub2Hc6Bg== - dependencies: - web3-core "1.2.1" - web3-core-helpers "1.2.1" - web3-core-method "1.2.1" - web3-net "1.2.1" - web3-utils "1.2.1" - -web3-eth-personal@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.2.tgz#eee1c86a8132fa16b5e34c6d421ca92e684f0be6" - integrity sha512-4w+GLvTlFqW3+q4xDUXvCEMU7kRZ+xm/iJC8gm1Li1nXxwwFbs+Y+KBK6ZYtoN1qqAnHR+plYpIoVo27ixI5Rg== - dependencies: - "@types/node" "^12.6.1" - web3-core "1.2.2" - web3-core-helpers "1.2.2" - web3-core-method "1.2.2" - web3-net "1.2.2" - web3-utils "1.2.2" + web3-utils "1.2.9" -web3-eth-personal@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.4.tgz#3224cca6851c96347d9799b12c1b67b2a6eb232b" - integrity sha512-5Russ7ZECwHaZXcN3DLuLS7390Vzgrzepl4D87SD6Sn1DHsCZtvfdPIYwoTmKNp69LG3mORl7U23Ga5YxqkICw== +web3-eth-personal@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.11.tgz#a38b3942a1d87a62070ce0622a941553c3d5aa70" + integrity sha512-42IzUtKq9iHZ8K9VN0vAI50iSU9tOA1V7XU2BhF/tb7We2iKBVdkley2fg26TxlOcKNEHm7o6HRtiiFsVK4Ifw== dependencies: - "@types/node" "^12.6.1" - web3-core "1.2.4" - web3-core-helpers "1.2.4" - web3-core-method "1.2.4" - web3-net "1.2.4" - web3-utils "1.2.4" + "@types/node" "^12.12.6" + web3-core "1.2.11" + web3-core-helpers "1.2.11" + web3-core-method "1.2.11" + web3-net "1.2.11" + web3-utils "1.2.11" -web3-eth-personal@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.6.tgz#47a0a0657ec04dd77f95451a6869d4751d324b6b" - integrity sha512-T2NUkh1plY8d7wePXSoHnaiKOd8dLNFaQfgBl9JHU6S7IJrG9jnYD9bVxLEgRUfHs9gKf9tQpDf7AcPFdq/A8g== +web3-eth-personal@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.9.tgz#9b95eb159b950b83cd8ae15873e1d57711b7a368" + integrity sha512-cFiNrktxZ1C/rIdJFzQTvFn3/0zcsR3a+Jf8Y3KxeQDHszQtosjLWptP7bsUmDwEh4hzh0Cy3KpOxlYBWB8bJQ== dependencies: "@types/node" "^12.6.1" - web3-core "1.2.6" - web3-core-helpers "1.2.6" - web3-core-method "1.2.6" - web3-net "1.2.6" - web3-utils "1.2.6" + web3-core "1.2.9" + web3-core-helpers "1.2.9" + web3-core-method "1.2.9" + web3-net "1.2.9" + web3-utils "1.2.9" -web3-eth@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.1.tgz#b9989e2557c73a9e8ffdc107c6dafbe72c79c1b0" - integrity sha512-/2xly4Yry5FW1i+uygPjhfvgUP/MS/Dk+PDqmzp5M88tS86A+j8BzKc23GrlA8sgGs0645cpZK/999LpEF5UdA== - dependencies: - underscore "1.9.1" - web3-core "1.2.1" - web3-core-helpers "1.2.1" - web3-core-method "1.2.1" - web3-core-subscriptions "1.2.1" - web3-eth-abi "1.2.1" - web3-eth-accounts "1.2.1" - web3-eth-contract "1.2.1" - web3-eth-ens "1.2.1" - web3-eth-iban "1.2.1" - web3-eth-personal "1.2.1" - web3-net "1.2.1" - web3-utils "1.2.1" - -web3-eth@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.2.tgz#65a1564634a23b990efd1655bf94ad513904286c" - integrity sha512-UXpC74mBQvZzd4b+baD4Ocp7g+BlwxhBHumy9seyE/LMIcMlePXwCKzxve9yReNpjaU16Mmyya6ZYlyiKKV8UA== - dependencies: - underscore "1.9.1" - web3-core "1.2.2" - web3-core-helpers "1.2.2" - web3-core-method "1.2.2" - web3-core-subscriptions "1.2.2" - web3-eth-abi "1.2.2" - web3-eth-accounts "1.2.2" - web3-eth-contract "1.2.2" - web3-eth-ens "1.2.2" - web3-eth-iban "1.2.2" - web3-eth-personal "1.2.2" - web3-net "1.2.2" - web3-utils "1.2.2" - -web3-eth@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.4.tgz#24c3b1f1ac79351bbfb808b2ab5c585fa57cdd00" - integrity sha512-+j+kbfmZsbc3+KJpvHM16j1xRFHe2jBAniMo1BHKc3lho6A8Sn9Buyut6odubguX2AxoRArCdIDCkT9hjUERpA== +web3-eth@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.11.tgz#4c81fcb6285b8caf544058fba3ae802968fdc793" + integrity sha512-REvxW1wJ58AgHPcXPJOL49d1K/dPmuw4LjPLBPStOVkQjzDTVmJEIsiLwn2YeuNDd4pfakBwT8L3bz1G1/wVsQ== dependencies: underscore "1.9.1" - web3-core "1.2.4" - web3-core-helpers "1.2.4" - web3-core-method "1.2.4" - web3-core-subscriptions "1.2.4" - web3-eth-abi "1.2.4" - web3-eth-accounts "1.2.4" - web3-eth-contract "1.2.4" - web3-eth-ens "1.2.4" - web3-eth-iban "1.2.4" - web3-eth-personal "1.2.4" - web3-net "1.2.4" - web3-utils "1.2.4" - -web3-eth@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.6.tgz#15a8c65fdde0727872848cae506758d302d8d046" - integrity sha512-ROWlDPzh4QX6tlGGGlAK6X4kA2n0/cNj/4kb0nNVWkRouGmYO0R8k6s47YxYHvGiXt0s0++FUUv5vAbWovtUQw== + web3-core "1.2.11" + web3-core-helpers "1.2.11" + web3-core-method "1.2.11" + web3-core-subscriptions "1.2.11" + web3-eth-abi "1.2.11" + web3-eth-accounts "1.2.11" + web3-eth-contract "1.2.11" + web3-eth-ens "1.2.11" + web3-eth-iban "1.2.11" + web3-eth-personal "1.2.11" + web3-net "1.2.11" + web3-utils "1.2.11" + +web3-eth@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.9.tgz#e40e7b88baffc9b487193211c8b424dc944977b3" + integrity sha512-sIKO4iE9FEBa/CYUd6GdPd7GXt/wISqxUd8PlIld6+hvMJj02lgO7Z7p5T9mZIJcIZJGvZX81ogx8oJ9yif+Ag== dependencies: underscore "1.9.1" - web3-core "1.2.6" - web3-core-helpers "1.2.6" - web3-core-method "1.2.6" - web3-core-subscriptions "1.2.6" - web3-eth-abi "1.2.6" - web3-eth-accounts "1.2.6" - web3-eth-contract "1.2.6" - web3-eth-ens "1.2.6" - web3-eth-iban "1.2.6" - web3-eth-personal "1.2.6" - web3-net "1.2.6" - web3-utils "1.2.6" - -web3-net@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.1.tgz#edd249503315dd5ab4fa00220f6509d95bb7ab10" - integrity sha512-Yt1Bs7WgnLESPe0rri/ZoPWzSy55ovioaP35w1KZydrNtQ5Yq4WcrAdhBzcOW7vAkIwrsLQsvA+hrOCy7mNauw== - dependencies: - web3-core "1.2.1" - web3-core-method "1.2.1" - web3-utils "1.2.1" - -web3-net@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.2.tgz#5c3226ca72df7c591422440ce6f1203fd42ddad9" - integrity sha512-K07j2DXq0x4UOJgae65rWZKraOznhk8v5EGSTdFqASTx7vWE/m+NqBijBYGEsQY1lSMlVaAY9UEQlcXK5HzXTw== - dependencies: - web3-core "1.2.2" - web3-core-method "1.2.2" - web3-utils "1.2.2" - -web3-net@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.4.tgz#1d246406d3aaffbf39c030e4e98bce0ca5f25458" - integrity sha512-wKOsqhyXWPSYTGbp7ofVvni17yfRptpqoUdp3SC8RAhDmGkX6irsiT9pON79m6b3HUHfLoBilFQyt/fTUZOf7A== + web3-core "1.2.9" + web3-core-helpers "1.2.9" + web3-core-method "1.2.9" + web3-core-subscriptions "1.2.9" + web3-eth-abi "1.2.9" + web3-eth-accounts "1.2.9" + web3-eth-contract "1.2.9" + web3-eth-ens "1.2.9" + web3-eth-iban "1.2.9" + web3-eth-personal "1.2.9" + web3-net "1.2.9" + web3-utils "1.2.9" + +web3-net@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.11.tgz#eda68ef25e5cdb64c96c39085cdb74669aabbe1b" + integrity sha512-sjrSDj0pTfZouR5BSTItCuZ5K/oZPVdVciPQ6981PPPIwJJkCMeVjD7I4zO3qDPCnBjBSbWvVnLdwqUBPtHxyg== dependencies: - web3-core "1.2.4" - web3-core-method "1.2.4" - web3-utils "1.2.4" + web3-core "1.2.11" + web3-core-method "1.2.11" + web3-utils "1.2.11" -web3-net@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.6.tgz#035ca0fbe55282fda848ca17ebb4c8966147e5ea" - integrity sha512-hsNHAPddrhgjWLmbESW0KxJi2GnthPcow0Sqpnf4oB6+/+ZnQHU9OsIyHb83bnC1OmunrK2vf9Ye2mLPdFIu3A== +web3-net@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.9.tgz#51d248ed1bc5c37713c4ac40c0073d9beacd87d3" + integrity sha512-d2mTn8jPlg+SI2hTj2b32Qan6DmtU9ap/IUlJTeQbZQSkTLf0u9suW8Vjwyr4poJYXTurdSshE7OZsPNn30/ZA== dependencies: - web3-core "1.2.6" - web3-core-method "1.2.6" - web3-utils "1.2.6" + web3-core "1.2.9" + web3-core-method "1.2.9" + web3-utils "1.2.9" web3-provider-engine@14.2.1: version "14.2.1" @@ -11030,184 +9342,87 @@ web3-provider-engine@14.2.1: xhr "^2.2.0" xtend "^4.0.1" -web3-providers-http@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.1.tgz#c93ea003a42e7b894556f7e19dd3540f947f5013" - integrity sha512-BDtVUVolT9b3CAzeGVA/np1hhn7RPUZ6YYGB/sYky+GjeO311Yoq8SRDUSezU92x8yImSC2B+SMReGhd1zL+bQ== - dependencies: - web3-core-helpers "1.2.1" - xhr2-cookies "1.1.0" - -web3-providers-http@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.2.tgz#155e55c1d69f4c5cc0b411ede40dea3d06720956" - integrity sha512-BNZ7Hguy3eBszsarH5gqr9SIZNvqk9eKwqwmGH1LQS1FL3NdoOn7tgPPdddrXec4fL94CwgNk4rCU+OjjZRNDg== - dependencies: - web3-core-helpers "1.2.2" - xhr2-cookies "1.1.0" - -web3-providers-http@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.4.tgz#514fcad71ae77832c2c15574296282fbbc5f4a67" - integrity sha512-dzVCkRrR/cqlIrcrWNiPt9gyt0AZTE0J+MfAu9rR6CyIgtnm1wFUVVGaxYRxuTGQRO4Dlo49gtoGwaGcyxqiTw== +web3-providers-http@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.11.tgz#1cd03442c61670572d40e4dcdf1faff8bd91e7c6" + integrity sha512-psh4hYGb1+ijWywfwpB2cvvOIMISlR44F/rJtYkRmQ5jMvG4FOCPlQJPiHQZo+2cc3HbktvvSJzIhkWQJdmvrA== dependencies: - web3-core-helpers "1.2.4" + web3-core-helpers "1.2.11" xhr2-cookies "1.1.0" -web3-providers-http@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.6.tgz#3c7b1252751fb37e53b873fce9dbb6340f5e31d9" - integrity sha512-2+SaFCspb5f82QKuHB3nEPQOF9iSWxRf7c18fHtmnLNVkfG9SwLN1zh67bYn3tZGUdOI3gj8aX4Uhfpwx9Ezpw== +web3-providers-http@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.9.tgz#e698aa5377e2019c24c5a1e6efa0f51018728934" + integrity sha512-F956tCIj60Ttr0UvEHWFIhx+be3He8msoPzyA44/kfzzYoMAsCFRn5cf0zQG6al0znE75g6HlWVSN6s3yAh51A== dependencies: - web3-core-helpers "1.2.6" + web3-core-helpers "1.2.9" xhr2-cookies "1.1.0" -web3-providers-ipc@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.1.tgz#017bfc687a8fc5398df2241eb98f135e3edd672c" - integrity sha512-oPEuOCwxVx8L4CPD0TUdnlOUZwGBSRKScCz/Ws2YHdr9Ium+whm+0NLmOZjkjQp5wovQbyBzNa6zJz1noFRvFA== - dependencies: - oboe "2.1.4" - underscore "1.9.1" - web3-core-helpers "1.2.1" - -web3-providers-ipc@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.2.tgz#c6d165a12bc68674b4cdd543ea18aec79cafc2e8" - integrity sha512-t97w3zi5Kn/LEWGA6D9qxoO0LBOG+lK2FjlEdCwDQatffB/+vYrzZ/CLYVQSoyFZAlsDoBasVoYSWZK1n39aHA== - dependencies: - oboe "2.1.4" - underscore "1.9.1" - web3-core-helpers "1.2.2" - -web3-providers-ipc@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.4.tgz#9d6659f8d44943fb369b739f48df09092be459bd" - integrity sha512-8J3Dguffin51gckTaNrO3oMBo7g+j0UNk6hXmdmQMMNEtrYqw4ctT6t06YOf9GgtOMjSAc1YEh3LPrvgIsR7og== +web3-providers-ipc@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.11.tgz#d16d6c9be1be6e0b4f4536c4acc16b0f4f27ef21" + integrity sha512-yhc7Y/k8hBV/KlELxynWjJDzmgDEDjIjBzXK+e0rHBsYEhdCNdIH5Psa456c+l0qTEU2YzycF8VAjYpWfPnBpQ== dependencies: oboe "2.1.4" underscore "1.9.1" - web3-core-helpers "1.2.4" + web3-core-helpers "1.2.11" -web3-providers-ipc@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.6.tgz#adabab5ac66b3ff8a26c7dc97af3f1a6a7609701" - integrity sha512-b0Es+/GTZyk5FG3SgUDW+2/mBwJAXWt5LuppODptiOas8bB2khLjG6+Gm1K4uwOb+1NJGPt5mZZ8Wi7vibtQ+A== +web3-providers-ipc@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.9.tgz#6159eacfcd7ac31edc470d93ef10814fe874763b" + integrity sha512-NQ8QnBleoHA2qTJlqoWu7EJAD/FR5uimf7Ielzk4Z2z+m+6UAuJdJMSuQNj+Umhz9L/Ys6vpS1vHx9NizFl+aQ== dependencies: oboe "2.1.4" underscore "1.9.1" - web3-core-helpers "1.2.6" - -web3-providers-ws@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.1.tgz#2d941eaf3d5a8caa3214eff8dc16d96252b842cb" - integrity sha512-oqsQXzu+ejJACVHy864WwIyw+oB21nw/pI65/sD95Zi98+/HQzFfNcIFneF1NC4bVF3VNX4YHTNq2I2o97LAiA== - dependencies: - underscore "1.9.1" - web3-core-helpers "1.2.1" - websocket "github:web3-js/WebSocket-Node#polyfill/globalThis" + web3-core-helpers "1.2.9" -web3-providers-ws@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.2.tgz#d2c05c68598cea5ad3fa6ef076c3bcb3ca300d29" - integrity sha512-Wb1mrWTGMTXOpJkL0yGvL/WYLt8fUIXx8k/l52QB2IiKzvyd42dTWn4+j8IKXGSYYzOm7NMqv6nhA5VDk12VfA== - dependencies: - underscore "1.9.1" - web3-core-helpers "1.2.2" - websocket "github:web3-js/WebSocket-Node#polyfill/globalThis" - -web3-providers-ws@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.4.tgz#099ee271ee03f6ea4f5df9cfe969e83f4ce0e36f" - integrity sha512-F/vQpDzeK+++oeeNROl1IVTufFCwCR2hpWe5yRXN0ApLwHqXrMI7UwQNdJ9iyibcWjJf/ECbauEEQ8CHgE+MYQ== +web3-providers-ws@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.11.tgz#a1dfd6d9778d840561d9ec13dd453046451a96bb" + integrity sha512-ZxnjIY1Er8Ty+cE4migzr43zA/+72AF1myzsLaU5eVgdsfV7Jqx7Dix1hbevNZDKFlSoEyq/3j/jYalh3So1Zg== dependencies: - "@web3-js/websocket" "^1.0.29" + eventemitter3 "4.0.4" underscore "1.9.1" - web3-core-helpers "1.2.4" + web3-core-helpers "1.2.11" + websocket "^1.0.31" -web3-providers-ws@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.6.tgz#3cecc49f7c99f07a75076d3c54247050bc4f7e11" - integrity sha512-20waSYX+gb5M5yKhug5FIwxBBvkKzlJH7sK6XEgdOx6BZ9YYamLmvg9wcRVtnSZO8hV/3cWenO/tRtTrHVvIgQ== +web3-providers-ws@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.9.tgz#22c2006655ec44b4ad2b41acae62741a6ae7a88c" + integrity sha512-6+UpvINeI//dglZoAKStUXqxDOXJy6Iitv2z3dbgInG4zb8tkYl/VBDL80UjUg3ZvzWG0g7EKY2nRPEpON2TFA== dependencies: - "@web3-js/websocket" "^1.0.29" + eventemitter3 "^4.0.0" underscore "1.9.1" - web3-core-helpers "1.2.6" - -web3-shh@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.1.tgz#4460e3c1e07faf73ddec24ccd00da46f89152b0c" - integrity sha512-/3Cl04nza5kuFn25bV3FJWa0s3Vafr5BlT933h26xovQ6HIIz61LmvNQlvX1AhFL+SNJOTcQmK1SM59vcyC8bA== - dependencies: - web3-core "1.2.1" - web3-core-method "1.2.1" - web3-core-subscriptions "1.2.1" - web3-net "1.2.1" - -web3-shh@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.2.tgz#44ed998f2a6ba0ec5cb9d455184a0f647826a49c" - integrity sha512-og258NPhlBn8yYrDWjoWBBb6zo1OlBgoWGT+LL5/LPqRbjPe09hlOYHgscAAr9zZGtohTOty7RrxYw6Z6oDWCg== - dependencies: - web3-core "1.2.2" - web3-core-method "1.2.2" - web3-core-subscriptions "1.2.2" - web3-net "1.2.2" - -web3-shh@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.4.tgz#5c8ff5ab624a3b14f08af0d24d2b16c10e9f70dd" - integrity sha512-z+9SCw0dE+69Z/Hv8809XDbLj7lTfEv9Sgu8eKEIdGntZf4v7ewj5rzN5bZZSz8aCvfK7Y6ovz1PBAu4QzS4IQ== - dependencies: - web3-core "1.2.4" - web3-core-method "1.2.4" - web3-core-subscriptions "1.2.4" - web3-net "1.2.4" - -web3-shh@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.6.tgz#2492616da4cac32d4c7534b890f43bac63190c14" - integrity sha512-rouWyOOM6YMbLQd65grpj8BBezQfgNeRRX+cGyW4xsn6Xgu+B73Zvr6OtA/ftJwwa9bqHGpnLrrLMeWyy4YLUw== - dependencies: - web3-core "1.2.6" - web3-core-method "1.2.6" - web3-core-subscriptions "1.2.6" - web3-net "1.2.6" + web3-core-helpers "1.2.9" + websocket "^1.0.31" -web3-utils@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.1.tgz#21466e38291551de0ab34558de21512ac4274534" - integrity sha512-Mrcn3l58L+yCKz3zBryM6JZpNruWuT0OCbag8w+reeNROSGVlXzUQkU+gtAwc9JCZ7tKUyg67+2YUGqUjVcyBA== +web3-shh@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.11.tgz#f5d086f9621c9a47e98d438010385b5f059fd88f" + integrity sha512-B3OrO3oG1L+bv3E1sTwCx66injW1A8hhwpknDUbV+sw3fehFazA06z9SGXUefuFI1kVs4q2vRi0n4oCcI4dZDg== dependencies: - bn.js "4.11.8" - eth-lib "0.2.7" - ethjs-unit "0.1.6" - number-to-bn "1.7.0" - randomhex "0.1.5" - underscore "1.9.1" - utf8 "3.0.0" + web3-core "1.2.11" + web3-core-method "1.2.11" + web3-core-subscriptions "1.2.11" + web3-net "1.2.11" -web3-utils@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.2.tgz#b53a08c40d2c3f31d3c4a28e7d749405df99c8c0" - integrity sha512-joF+s3243TY5cL7Z7y4h1JsJpUCf/kmFmj+eJar7Y2yNIGVcW961VyrAms75tjUysSuHaUQ3eQXjBEUJueT52A== +web3-shh@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.9.tgz#c4ba70d6142cfd61341a50752d8cace9a0370911" + integrity sha512-PWa8b/EaxaMinFaxy6cV0i0EOi2M7a/ST+9k9nhyhCjVa2vzXuNoBNo2IUOmeZ0WP2UQB8ByJ2+p4htlJaDOjA== 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" + web3-core "1.2.9" + web3-core-method "1.2.9" + web3-core-subscriptions "1.2.9" + web3-net "1.2.9" -web3-utils@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.4.tgz#96832a39a66b05bf8862a5b0bdad2799d709d951" - integrity sha512-+S86Ip+jqfIPQWvw2N/xBQq5JNqCO0dyvukGdJm8fEWHZbckT4WxSpHbx+9KLEWY4H4x9pUwnoRkK87pYyHfgQ== +web3-utils@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.11.tgz#af1942aead3fb166ae851a985bed8ef2c2d95a82" + integrity sha512-3Tq09izhD+ThqHEaWYX4VOT7dNPdZiO+c/1QMA0s5X2lDFKK/xHJb7cyTRRVzN2LvlHbR7baS1tmQhSua51TcQ== dependencies: - bn.js "4.11.8" - eth-lib "0.2.7" + 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" @@ -11215,10 +9430,10 @@ web3-utils@1.2.4: underscore "1.9.1" utf8 "3.0.0" -web3-utils@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.6.tgz#b9a25432da00976457fcc1094c4af8ac6d486db9" - integrity sha512-8/HnqG/l7dGmKMgEL9JeKPTtjScxOePTzopv5aaKFExPfaBrYRkgoMqhoowCiAl/s16QaTn4DoIF1QC4YsT7Mg== +web3-utils@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.9.tgz#abe11735221627da943971ef1a630868fb9c61f3" + integrity sha512-9hcpuis3n/LxFzEVjwnVgvJzTirS2S9/MiNAa7l4WOEoywY+BSNwnRX4MuHnjkh9NY25B6QOjuNG6FNnSjTw1w== dependencies: bn.js "4.11.8" eth-lib "0.2.7" @@ -11229,10 +9444,10 @@ web3-utils@1.2.6: underscore "1.9.1" utf8 "3.0.0" -web3-utils@^1.0.0-beta.31: - version "1.2.11" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.11.tgz#af1942aead3fb166ae851a985bed8ef2c2d95a82" - integrity sha512-3Tq09izhD+ThqHEaWYX4VOT7dNPdZiO+c/1QMA0s5X2lDFKK/xHJb7cyTRRVzN2LvlHbR7baS1tmQhSua51TcQ== +web3-utils@^1.0.0-beta.31, web3-utils@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.3.2.tgz#3f6ac95704ba41f60062fd283e629015f5d359a9" + integrity sha512-00jr14EH/dYLjHqkt7l5VAj27IhRsn+I4b2OHvGXGG+8PT/HQTf3IxoYknHRE09kh+TmrTAT3mPurX/Q6+RVng== dependencies: bn.js "^4.11.9" eth-lib "0.2.8" @@ -11243,80 +9458,54 @@ web3-utils@^1.0.0-beta.31: underscore "1.9.1" utf8 "3.0.0" -web3@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.1.tgz#5d8158bcca47838ab8c2b784a2dee4c3ceb4179b" - integrity sha512-nNMzeCK0agb5i/oTWNdQ1aGtwYfXzHottFP2Dz0oGIzavPMGSKyVlr8ibVb1yK5sJBjrWVnTdGaOC2zKDFuFRw== - dependencies: - web3-bzz "1.2.1" - web3-core "1.2.1" - web3-eth "1.2.1" - web3-eth-personal "1.2.1" - web3-net "1.2.1" - web3-shh "1.2.1" - web3-utils "1.2.1" - -web3@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.2.tgz#b1b8b69aafdf94cbaeadbb68a8aa1df2ef266aec" - integrity sha512-/ChbmB6qZpfGx6eNpczt5YSUBHEA5V2+iUCbn85EVb3Zv6FVxrOo5Tv7Lw0gE2tW7EEjASbCyp3mZeiZaCCngg== - dependencies: - "@types/node" "^12.6.1" - web3-bzz "1.2.2" - web3-core "1.2.2" - web3-eth "1.2.2" - web3-eth-personal "1.2.2" - web3-net "1.2.2" - web3-shh "1.2.2" - web3-utils "1.2.2" - -web3@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.4.tgz#6e7ab799eefc9b4648c2dab63003f704a1d5e7d9" - integrity sha512-xPXGe+w0x0t88Wj+s/dmAdASr3O9wmA9mpZRtixGZxmBexAF0MjfqYM+MS4tVl5s11hMTN3AZb8cDD4VLfC57A== - dependencies: - "@types/node" "^12.6.1" - web3-bzz "1.2.4" - web3-core "1.2.4" - web3-eth "1.2.4" - web3-eth-personal "1.2.4" - web3-net "1.2.4" - web3-shh "1.2.4" - web3-utils "1.2.4" - -web3@1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.6.tgz#c497dcb14cdd8d6d9fb6b445b3b68ff83f8ccf68" - integrity sha512-tpu9fLIComgxGrFsD8LUtA4s4aCZk7px8UfcdEy6kS2uDi/ZfR07KJqpXZMij7Jvlq+cQrTAhsPSiBVvoMaivA== - dependencies: - "@types/node" "^12.6.1" - web3-bzz "1.2.6" - web3-core "1.2.6" - web3-eth "1.2.6" - web3-eth-personal "1.2.6" - web3-net "1.2.6" - web3-shh "1.2.6" - web3-utils "1.2.6" - -websocket@1.0.29: - version "1.0.29" - resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.29.tgz#3f83e49d3279657c58b02a22d90749c806101b98" - integrity sha512-WhU8jKXC8sTh6ocLSqpZRlOKMNYGwUvjA5+XcIgIk/G3JCaDfkZUr0zA19sVSxJ0TEvm0i5IBzr54RZC4vzW7g== - dependencies: +web3@1.2.11: + version "1.2.11" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.11.tgz#50f458b2e8b11aa37302071c170ed61cff332975" + integrity sha512-mjQ8HeU41G6hgOYm1pmeH0mRAeNKJGnJEUzDMoerkpw7QUQT4exVREgF1MYPvL/z6vAshOXei25LE/t/Bxl8yQ== + dependencies: + web3-bzz "1.2.11" + web3-core "1.2.11" + web3-eth "1.2.11" + web3-eth-personal "1.2.11" + web3-net "1.2.11" + web3-shh "1.2.11" + web3-utils "1.2.11" + +web3@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.9.tgz#cbcf1c0fba5e213a6dfb1f2c1f4b37062e4ce337" + integrity sha512-Mo5aBRm0JrcNpN/g4VOrDzudymfOnHRC3s2VarhYxRA8aWgF5rnhQ0ziySaugpic1gksbXPe105pUWyRqw8HUA== + dependencies: + web3-bzz "1.2.9" + web3-core "1.2.9" + web3-eth "1.2.9" + web3-eth-personal "1.2.9" + web3-net "1.2.9" + web3-shh "1.2.9" + web3-utils "1.2.9" + +websocket@1.0.32: + version "1.0.32" + resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.32.tgz#1f16ddab3a21a2d929dec1687ab21cfdc6d3dbb1" + integrity sha512-i4yhcllSP4wrpoPMU2N0TQ/q0O94LRG/eUQjEAamRltjQ1oT1PFFKOG4i877OlJgCG8rw6LrrowJp+TYCEWF7Q== + dependencies: + bufferutil "^4.0.1" debug "^2.2.0" - gulp "^4.0.2" - nan "^2.11.0" + es5-ext "^0.10.50" typedarray-to-buffer "^3.1.5" + utf-8-validate "^5.0.2" yaeti "^0.0.6" -"websocket@github:web3-js/WebSocket-Node#polyfill/globalThis": - version "1.0.29" - resolved "https://codeload.github.com/web3-js/WebSocket-Node/tar.gz/ef5ea2f41daf4a2113b80c9223df884b4d56c400" +websocket@^1.0.31: + version "1.0.33" + resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.33.tgz#407f763fc58e74a3fa41ca3ae5d78d3f5e3b82a5" + integrity sha512-XwNqM2rN5eh3G2CUQE3OHZj+0xfdH42+OFK6LdC2yqiC0YU8e5UK0nYre220T0IyyN031V/XOvtHvXozvJYFWA== dependencies: + bufferutil "^4.0.1" debug "^2.2.0" es5-ext "^0.10.50" - nan "^2.14.0" typedarray-to-buffer "^3.1.5" + utf-8-validate "^5.0.2" yaeti "^0.0.6" whatwg-fetch@2.0.4: @@ -11334,7 +9523,7 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@1.3.1, which@^1.1.1, which@^1.2.14, which@^1.2.9, which@^1.3.1: +which@1.3.1, which@^1.1.1, which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -11370,10 +9559,10 @@ wordwrap@^1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= -workerpool@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.0.0.tgz#85aad67fa1a2c8ef9386a1b43539900f61d03d58" - integrity sha512-fU2OcNA/GVAJLLyKUoHkAgIhKb0JoCpSjLC/G2vYKxUjVmQwGbRVeoPJ1a8U4pnVofz4AQV5Y/NEw8oKqxEBtA== +workerpool@6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.0.2.tgz#e241b43d8d033f1beb52c7851069456039d1d438" + integrity sha512-DSNyvOpFKrNusaaUwk+ej6cBj1bmhLcBfj80elGk+ZIo5JSkq+unB1dLKEOcNfJDZgjGICfhQ0Q5TbP0PvF4+Q== wrap-ansi@^2.0.0: version "2.1.0" @@ -11426,9 +9615,9 @@ ws@^5.1.1: async-limiter "~1.0.0" ws@^7.2.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" - integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA== + version "7.4.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.2.tgz#782100048e54eb36fe9843363ab1c68672b261dd" + integrity sha512-T4tewALS3+qsrpGI/8dqNMLIVdq/g/85U98HPMa6F0m6xTbvhXU6RCQLqPH3+SlomNV/LdY6RXEbBpMH6EOJnA== xhr-request-promise@^0.1.2: version "0.1.3" @@ -11437,7 +9626,7 @@ xhr-request-promise@^0.1.2: dependencies: xhr-request "^1.1.0" -xhr-request@^1.1.0: +xhr-request@^1.0.1, xhr-request@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/xhr-request/-/xhr-request-1.1.0.tgz#f4a7c1868b9f198723444d82dcae317643f2e2ed" integrity sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA== @@ -11458,11 +9647,11 @@ xhr2-cookies@1.1.0: cookiejar "^2.1.1" xhr@^2.0.4, xhr@^2.2.0, xhr@^2.3.3: - version "2.5.0" - resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.5.0.tgz#bed8d1676d5ca36108667692b74b316c496e49dd" - integrity sha512-4nlO/14t3BNUZRXIXfXe+3N6w3s1KoxcJUUURctd64BLRe67E4gRwp4PjywtDY72fXpZ1y6Ch0VZQRY/gMPzzQ== + version "2.6.0" + resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.6.0.tgz#b69d4395e792b4173d6b7df077f0fc5e4e2b249d" + integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA== dependencies: - global "~4.3.0" + global "~4.4.0" is-function "^1.0.1" parse-headers "^2.0.0" xtend "^4.0.0" @@ -11485,14 +9674,14 @@ xtend@~2.1.1: object-keys "~0.4.0" y18n@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" - integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= + version "3.2.2" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.2.tgz#85c901bd6470ce71fc4bb723ad209b70f7f28696" + integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ== y18n@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + version "4.0.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" + integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== yaeti@^0.0.6: version "0.0.6" @@ -11504,6 +9693,11 @@ yallist@^3.0.0, yallist@^3.0.2, yallist@^3.0.3: resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + yargs-parser@13.1.2, yargs-parser@^13.1.0, yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" @@ -11512,22 +9706,6 @@ yargs-parser@13.1.2, yargs-parser@^13.1.0, yargs-parser@^13.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@5.0.0-security.0: - version "5.0.0-security.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0-security.0.tgz#4ff7271d25f90ac15643b86076a2ab499ec9ee24" - integrity sha512-T69y4Ps64LNesYxeYGYPvfoMTt/7y1XtfpIslUeK4um+9Hu7hlGoRtaDLvdXb7+/tfq4opVa2HRY5xGip022rQ== - dependencies: - camelcase "^3.0.0" - object.assign "^4.1.0" - -yargs-parser@^15.0.1: - version "15.0.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-15.0.1.tgz#54786af40b820dcb2fb8025b11b4d659d76323b3" - integrity sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - yargs-parser@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" @@ -11545,16 +9723,15 @@ yargs-unparser@1.6.0: lodash "^4.17.15" yargs "^13.3.0" -yargs-unparser@1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-1.6.1.tgz#bd4b0ee05b4c94d058929c32cb09e3fce71d3c5f" - integrity sha512-qZV14lK9MWsGCmcr7u5oXGH0dbGqZAIxTDrWXZDo5zUr6b6iUmelNKO6x6R1dQT24AH3LgRxJpr8meWy2unolA== +yargs-unparser@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== dependencies: - camelcase "^5.3.1" - decamelize "^1.2.0" - flat "^4.1.0" - is-plain-obj "^1.1.0" - yargs "^14.2.3" + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" yargs@13.2.4: version "13.2.4" @@ -11589,23 +9766,6 @@ yargs@13.3.2, yargs@^13.3.0: y18n "^4.0.0" yargs-parser "^13.1.2" -yargs@^14.2.3: - version "14.2.3" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-14.2.3.tgz#1a1c3edced1afb2a2fea33604bc6d1d8d688a414" - 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" - yargs@^4.7.1: version "4.8.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0" @@ -11626,29 +9786,7 @@ yargs@^4.7.1: y18n "^3.2.1" yargs-parser "^2.4.1" -yargs@^7.1.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.1.tgz#67f0ef52e228d4ee0d6311acede8850f53464df6" - integrity sha512-huO4Fr1f9PmiJJdll5kwoS2e4GqzGSsMT3PPMpOwoVkOK8ckqAewMTZyA6LXVQWflleb/Z8oPBEvNsMft0XE+g== - dependencies: - camelcase "^3.0.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - 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.2" - which-module "^1.0.0" - y18n "^3.2.1" - yargs-parser "5.0.0-security.0" - -yauzl@^2.4.2: - version "2.10.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" - integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= - dependencies: - buffer-crc32 "~0.2.3" - fd-slicer "~1.1.0" +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== From d3a201c1b0a933eb3f6d9265b76f55f7d73f1647 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Fri, 22 Jan 2021 16:07:19 +0200 Subject: [PATCH 005/118] updates sdk version --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 65f9773..d68826e 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "test": "yarn run prettier:tests && yarn run lint:tests && npx hardhat test --deploy-fixture" }, "dependencies": { - "@elastic-dao/sdk": "0.0.9", + "@elastic-dao/sdk": "0.9.0-beta1", "@nomiclabs/hardhat-ethers": "2.0.1", "@nomiclabs/hardhat-etherscan": "2.1.0", "@nomiclabs/hardhat-waffle": "2.0.1", diff --git a/yarn.lock b/yarn.lock index f72bfd4..02e89c3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,10 +23,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@elastic-dao/sdk@0.0.9": - version "0.0.9" - resolved "https://registry.yarnpkg.com/@elastic-dao/sdk/-/sdk-0.0.9.tgz#bfc82a86227e1334e20f4422d282ce4b2475e999" - integrity sha512-85HYhv3sONW1+v9mYBptmJpfKPovZjnQtznSIfKbEGYphx0u4AI0kbi6v68dqVVnxnsI1Qk55TbPfycmhFYLfA== +"@elastic-dao/sdk@0.9.0-beta1": + version "0.9.0-beta1" + resolved "https://registry.yarnpkg.com/@elastic-dao/sdk/-/sdk-0.9.0-beta1.tgz#7082990443e45b95d7a33190a57c1e312a167c4d" + integrity sha512-YhkhZOyYNYCguluFZ3fV5+R0Yn3GWbuT3ahhOdwbm92hAVssYF7DdAtTzL/OSsWpgEAT3HBWJu5RuicgJ5YA1w== dependencies: "@pie-dao/utils" "^1.0.0" bignumber.js "^9.0.0" From 7d588852aefd0c61ad665ceef5d4e9300efe8f63 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Tue, 26 Jan 2021 20:05:47 +0200 Subject: [PATCH 006/118] adds permissions, removes balanceOfAt --- package.json | 2 +- src/core/ElasticDAO.sol | 36 ++++++-- src/core/ElasticDAOFactory.sol | 14 +-- src/interfaces/IElasticToken.sol | 19 ---- src/models/Balance.sol | 78 ++-------------- src/models/BalanceMultipliers.sol | 59 ++---------- src/models/DAO.sol | 5 ++ src/models/Ecosystem.sol | 9 ++ src/models/Token.sol | 15 +++- src/models/TokenHolder.sol | 3 +- src/tokens/ElasticGovernanceToken.sol | 90 +++++++++---------- ...apitalDeltaTest.js => capitalDeltaTest.js} | 1 + test/elasticDAOFactoryTest.js | 10 ++- test/elasticDAOTests.js | 8 +- test/{ExitDaoTest.js => exitDaoTest.js} | 12 +-- yarn.lock | 8 +- 16 files changed, 146 insertions(+), 223 deletions(-) rename test/{CapitalDeltaTest.js => capitalDeltaTest.js} (99%) rename test/{ExitDaoTest.js => exitDaoTest.js} (90%) diff --git a/package.json b/package.json index d68826e..0bd187d 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "test": "yarn run prettier:tests && yarn run lint:tests && npx hardhat test --deploy-fixture" }, "dependencies": { - "@elastic-dao/sdk": "0.9.0-beta1", + "@elastic-dao/sdk": "0.9.0-beta4", "@nomiclabs/hardhat-ethers": "2.0.1", "@nomiclabs/hardhat-etherscan": "2.1.0", "@nomiclabs/hardhat-waffle": "2.0.1", diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index b199825..088bdcd 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -12,8 +12,9 @@ import '../models/Token.sol'; import '../services/Configurator.sol'; contract ElasticDAO { - address internal ecosystemModelAddress; + address internal controller; address internal deployer; + address internal ecosystemModelAddress; address[] public summoners; event ElasticGovernanceTokenDeployed(address indexed tokenAddress); @@ -35,7 +36,14 @@ contract ElasticDAO { require(dao.summoned == false, 'ElasticDAO: DAO must not be summoned'); _; } - + modifier onlyController() { + require(msg.sender == controller, 'ElasticDAO: Only controller'); + _; + } + modifier onlyDeployer() { + require(msg.sender == deployer, 'ElasticDAO: Only deployer'); + _; + } modifier onlySummoners() { Ecosystem.Instance memory ecosystem = _getEcosystem(); DAO daoContract = DAO(ecosystem.daoModelAddress); @@ -45,14 +53,20 @@ contract ElasticDAO { require(summonerCheck, 'ElasticDAO: Only summoners'); _; } + modifier onlyWhenOpen() { + require(address(this).balance > 0, 'ElasticDAO: This DAO is closed'); + _; + } constructor( address _ecosystemModelAddress, + address _controller, address[] memory _summoners, string memory _name, uint256 _numberOfSummoners ) { ecosystemModelAddress = _ecosystemModelAddress; + controller = _controller; deployer = msg.sender; Ecosystem.Instance memory defaults = Ecosystem(_ecosystemModelAddress).deserialize(address(0)); summoners = _summoners; @@ -62,7 +76,7 @@ contract ElasticDAO { configurator.buildDAO(_summoners, _name, _numberOfSummoners, ecosystem); } - function exitDAO(uint256 _deltaLambda) public onlyAfterSummoning { + function exit(uint256 _deltaLambda) public onlyAfterSummoning { // burn the shares Token.Instance memory token = _getToken(); ElasticGovernanceToken tokenContract = ElasticGovernanceToken(token.uuid); @@ -82,7 +96,7 @@ contract ElasticDAO { uint256 _elasticity, uint256 _k, uint256 _maxLambdaPurchase - ) external onlyBeforeSummoning { + ) external onlyBeforeSummoning onlyDeployer { require(msg.sender == deployer, 'ElasticDAO: Only deployer can initialize the Token'); Ecosystem.Instance memory ecosystem = _getEcosystem(); @@ -96,10 +110,15 @@ contract ElasticDAO { _maxLambdaPurchase, ecosystem ); + + ElasticGovernanceToken tokenContract = ElasticGovernanceToken(token.uuid); + tokenContract.setBurner(controller); + tokenContract.setMinter(controller); + emit ElasticGovernanceTokenDeployed(token.uuid); } - function join(uint256 _deltaLambda) public payable onlyAfterSummoning { + function join(uint256 _deltaLambda) public payable onlyAfterSummoning onlyWhenOpen { Token.Instance memory token = _getToken(); require( @@ -143,6 +162,13 @@ contract ElasticDAO { tokenContract.mintShares(msg.sender, _deltaLambda); } + function setController(address _controller) external onlyController { + controller = _controller; + ElasticGovernanceToken tokenContract = ElasticGovernanceToken(_getToken().uuid); + tokenContract.setBurner(controller); + tokenContract.setMinter(controller); + } + // Summoning function seedSummoning() diff --git a/src/core/ElasticDAOFactory.sol b/src/core/ElasticDAOFactory.sol index 3307d0e..8ea65cf 100644 --- a/src/core/ElasticDAOFactory.sol +++ b/src/core/ElasticDAOFactory.sol @@ -7,6 +7,7 @@ import '../models/Ecosystem.sol'; // This contract is the facory contract for ElasticDAO contract ElasticDAOFactory { + address internal deployer; address internal ecosystemModelAddress; address payable feeAddress; address[] public deployedDAOAddresses; @@ -16,7 +17,13 @@ contract ElasticDAOFactory { event FeeAddressUpdated(address indexed feeReceiver); event FeesCollected(address treasuryAddress, uint256 amount); + modifier onlyDeployer() { + require(msg.sender == deployer, 'ElasticDAO: Only deployer'); + _; + } + constructor(address _ecosystemModelAddress) { + deployer = msg.sender; ecosystemModelAddress = _ecosystemModelAddress; } @@ -37,7 +44,7 @@ contract ElasticDAOFactory { ) public payable { // create the DAO ElasticDAO elasticDAO = - new ElasticDAO(ecosystemModelAddress, _summoners, _nameOfDAO, _numberOfSummoners); + new ElasticDAO(ecosystemModelAddress, msg.sender, _summoners, _nameOfDAO, _numberOfSummoners); // initialize the token elasticDAO.initializeToken(_nameOfToken, _symbol, _eByL, _elasticity, _k, _maxLambdaPurchase); @@ -47,15 +54,12 @@ contract ElasticDAOFactory { emit DAODeployed(address(elasticDAO)); } - function updateFeeAddress(address _feeReceiver) external { - // TODO: NEEDS MODIFIER!!! THIS SHOULD ONLY BE UPDATEABLE BY A TRANSACTIONAL VOTE - + function updateFeeAddress(address _feeReceiver) external onlyDeployer { feeAddress = payable(_feeReceiver); emit FeeAddressUpdated(_feeReceiver); } function collectFees() external { - // TODO: NEEDS MODIFIER!!! THIS SHOULD ONLY BE UPDATEABLE BY A TRANSACTIONAL VOTE uint256 amount = address(this).balance; feeAddress.transfer(amount); diff --git a/src/interfaces/IElasticToken.sol b/src/interfaces/IElasticToken.sol index 2e807e5..05efe6e 100644 --- a/src/interfaces/IElasticToken.sol +++ b/src/interfaces/IElasticToken.sol @@ -11,25 +11,6 @@ interface IElasticToken is IERC20 { */ function balanceOfInShares(address _account) external view returns (uint256 lambda); - /** - * @dev Returns the amount of tokens owned by @param _account at @param _blockNumber. - * @param _account - address of the account - * @param _blockNumber - the blockNumber at which the balance is to be checked at - * @return t uint256 - t is the number of tokens - */ - function balanceOfAt(address _account, uint256 _blockNumber) external view returns (uint256 t); - - /** - * @dev Returns the amount of shares owned by @param _account at @param _blockNumber. - * @param _account - address of the account - * @param _blockNumber - the blockNumber at which the balance of shares is to be checked at - * @return lambda uint256 - lambda is the number of shares - */ - function balanceOfInSharesAt(address _account, uint256 _blockNumber) - external - view - returns (uint256 lambda); - /** * @dev Reduces the balance(tokens) of @param _account by @param _amount * @param _account address of the account diff --git a/src/models/Balance.sol b/src/models/Balance.sol index 28a3e4c..061cdf9 100644 --- a/src/models/Balance.sol +++ b/src/models/Balance.sol @@ -32,9 +32,12 @@ contract Balance is EternalModel { Token.Instance memory _token, TokenHolder.Instance memory _tokenHolder ) public view returns (Instance memory record) { - record = _findByBlockNumber(_blockNumber, _tokenHolder.counter, 0, _token, _tokenHolder); - + record.blockNumber = _blockNumber; record.ecosystem = _ecosystem; + record.index = _tokenHolder.counter; + record.lambda = getUint( + keccak256(abi.encode(record.token.uuid, record.tokenHolder.account, record.index, 'lambda')) + ); record.token = _token; record.tokenHolder = _tokenHolder; @@ -66,6 +69,8 @@ contract Balance is EternalModel { * @param record Instance */ function serialize(Instance memory record) external { + require(msg.sender == record.token.uuid, 'ElasticDAO: Unauthorized'); + setUint( keccak256( abi.encode(record.token.uuid, record.tokenHolder.account, record.index, 'blockNumber') @@ -87,74 +92,5 @@ contract Balance is EternalModel { BalanceMultipliers(record.ecosystem.balanceMultipliersModelAddress).serialize( balanceMultipliers ); - Token(record.ecosystem.tokenModelAddress).incrementCounter(record.token.uuid); - } - - function _findByBlockNumber( - uint256 _blockNumber, - uint256 _numberOfRecords, - uint256 _offset, - Token.Instance memory _token, - TokenHolder.Instance memory _tokenHolder - ) internal view returns (Instance memory record) { - if (_numberOfRecords == 0) { - record.blockNumber = _blockNumber; - record.lambda = 0; - return record; - } - - if (_numberOfRecords == 1) { - uint256 index = SafeMath.add(_offset, _numberOfRecords); - record.blockNumber = getUint( - keccak256(abi.encode(_token.uuid, _tokenHolder.account, index, 'blockNumber')) - ); - - if (record.blockNumber == 0 || record.blockNumber > _blockNumber) { - if (_offset == 0) { - record.blockNumber = getUint( - keccak256(abi.encode(_token.uuid, _tokenHolder.account, 0, 'blockNumber')) - ); - if (record.blockNumber == 0 || record.blockNumber > _blockNumber) { - record.lambda = 0; - return record; - } - record.lambda = getUint( - keccak256(abi.encode(_token.uuid, _tokenHolder.account, 0, 'lambda')) - ); - return record; - } - return - _findByBlockNumber( - _blockNumber, - _numberOfRecords, - SafeMath.sub(_offset, 1), - _token, - _tokenHolder - ); - } - record.lambda = getUint( - keccak256(abi.encode(_token.uuid, _tokenHolder.account, index, 'lambda')) - ); - return record; - } - - uint256 half = SafeMath.div(_numberOfRecords, 2); - uint256 middleIndex = SafeMath.add(half, _offset); - record.blockNumber = getUint( - keccak256(abi.encode(_token.uuid, _tokenHolder.account, middleIndex, 'blockNumber')) - ); - - if (record.blockNumber > _blockNumber) { - return _findByBlockNumber(_blockNumber, half, _offset, _token, _tokenHolder); - } - - if (record.blockNumber < _blockNumber) { - return _findByBlockNumber(_blockNumber, half, middleIndex, _token, _tokenHolder); - } - - record.lambda = getUint( - keccak256(abi.encode(_token.uuid, _tokenHolder.account, middleIndex, 'lambda')) - ); - return record; } } diff --git a/src/models/BalanceMultipliers.sol b/src/models/BalanceMultipliers.sol index a9f7963..93940d4 100644 --- a/src/models/BalanceMultipliers.sol +++ b/src/models/BalanceMultipliers.sol @@ -28,9 +28,11 @@ contract BalanceMultipliers is EternalModel { Ecosystem.Instance memory _ecosystem, Token.Instance memory _token ) public view returns (Instance memory record) { - record = _findByBlockNumber(_blockNumber, _token.counter, 0, _token); record.blockNumber = _blockNumber; record.ecosystem = _ecosystem; + record.index = _token.counter; + record.k = getUint(keccak256(abi.encode(_token.uuid, record.index, 'k'))); + record.m = getUint(keccak256(abi.encode(_token.uuid, record.index, 'm'))); record.token = _token; return record; } @@ -48,6 +50,8 @@ contract BalanceMultipliers is EternalModel { * @param record Instance */ function serialize(Instance memory record) external { + require(msg.sender == record.ecosystem.balanceModelAddress, 'ElasticDAO: Unauthorized'); + setUint( keccak256(abi.encode(record.token.uuid, record.index, 'blockNumber')), record.blockNumber @@ -55,57 +59,4 @@ contract BalanceMultipliers is EternalModel { setUint(keccak256(abi.encode(record.token.uuid, record.index, 'k')), record.k); setUint(keccak256(abi.encode(record.token.uuid, record.index, 'm')), record.m); } - - function _findByBlockNumber( - uint256 _blockNumber, - uint256 _numberOfRecords, - uint256 _offset, - Token.Instance memory _token - ) internal view returns (Instance memory record) { - if (_numberOfRecords == 0) { - record.blockNumber = _blockNumber; - record.k = 0; - record.m = 0; - return record; - } - - if (_numberOfRecords == 1) { - uint256 index = SafeMath.add(_offset, _numberOfRecords); - record.blockNumber = getUint(keccak256(abi.encode(_token.uuid, index, 'blockNumber'))); - - if (record.blockNumber == 0 || record.blockNumber > _blockNumber) { - if (_offset == 0) { - record.blockNumber = getUint(keccak256(abi.encode(_token.uuid, 0, 'blockNumber'))); - if (record.blockNumber == 0 || record.blockNumber > _blockNumber) { - record.k = 0; - record.m = 0; - return record; - } - record.k = getUint(keccak256(abi.encode(_token.uuid, 0, 'k'))); - record.m = getUint(keccak256(abi.encode(_token.uuid, 0, 'm'))); - return record; - } - return _findByBlockNumber(_blockNumber, _numberOfRecords, SafeMath.sub(_offset, 1), _token); - } - record.k = getUint(keccak256(abi.encode(_token.uuid, index, 'k'))); - record.m = getUint(keccak256(abi.encode(_token.uuid, index, 'm'))); - return record; - } - - uint256 half = SafeMath.div(_numberOfRecords, 2); - uint256 middleIndex = SafeMath.add(half, _offset); - record.blockNumber = getUint(keccak256(abi.encode(_token.uuid, middleIndex, 'blockNumber'))); - - if (record.blockNumber > _blockNumber) { - return _findByBlockNumber(_blockNumber, half, _offset, _token); - } - - if (record.blockNumber < _blockNumber) { - return _findByBlockNumber(_blockNumber, half, middleIndex, _token); - } - - record.k = getUint(keccak256(abi.encode(_token.uuid, middleIndex, 'k'))); - record.m = getUint(keccak256(abi.encode(_token.uuid, middleIndex, 'm'))); - return record; - } } diff --git a/src/models/DAO.sol b/src/models/DAO.sol index 1494787..d9459dd 100644 --- a/src/models/DAO.sol +++ b/src/models/DAO.sol @@ -69,6 +69,11 @@ contract DAO is EternalModel { * @param record Instance */ function serialize(Instance memory record) external { + require( + msg.sender == record.uuid || msg.sender == record.ecosystem.configuratorAddress, + 'ElasticDAO: Unauthorized' + ); + setString(keccak256(abi.encode(record.uuid, 'name')), record.name); setUint(keccak256(abi.encode(record.uuid, 'numberOfSummoners')), record.numberOfSummoners); setBool(keccak256(abi.encode(record.uuid, 'summoned')), record.summoned); diff --git a/src/models/Ecosystem.sol b/src/models/Ecosystem.sol index ef1e83c..20e884c 100644 --- a/src/models/Ecosystem.sol +++ b/src/models/Ecosystem.sol @@ -75,6 +75,15 @@ contract Ecosystem is EternalModel { * @param record Instance */ function serialize(Instance memory record) external { + bool recordExists = _exists(record.daoAddress); + + require( + msg.sender == record.daoAddress || + msg.sender == record.configuratorAddress || + (record.daoAddress == address(0) && !recordExists), + 'ElasticDAO: Unauthorized' + ); + setAddress( keccak256(abi.encode(record.daoAddress, 'balanceModelAddress')), record.balanceModelAddress diff --git a/src/models/Token.sol b/src/models/Token.sol index 991479f..48b5579 100644 --- a/src/models/Token.sol +++ b/src/models/Token.sol @@ -62,9 +62,11 @@ contract Token is EternalModel { return _exists(_uuid); } - function incrementCounter(address _uuid) external { - uint256 counter = getUint(keccak256(abi.encode(_uuid, 'counter'))); - setUint(keccak256(abi.encode(_uuid, 'counter')), SafeMath.add(counter, 1)); + function incrementCounter(Instance memory record) external { + require(msg.sender == record.uuid, 'ElasticDAO: Unauthorized'); + + uint256 counter = getUint(keccak256(abi.encode(record.uuid, 'counter'))); + setUint(keccak256(abi.encode(record.uuid, 'counter')), SafeMath.add(counter, 1)); } /** @@ -72,6 +74,13 @@ contract Token is EternalModel { * @param record Instance */ function serialize(Instance memory record) external { + require( + msg.sender == record.uuid || + msg.sender == record.ecosystem.daoAddress || + (msg.sender == record.ecosystem.configuratorAddress && !_exists(record.uuid)), + 'ElasticDAO: Unauthorized' + ); + setString(keccak256(abi.encode(record.uuid, 'name')), record.name); setString(keccak256(abi.encode(record.uuid, 'symbol')), record.symbol); setUint(keccak256(abi.encode(record.uuid, 'eByL')), record.eByL); diff --git a/src/models/TokenHolder.sol b/src/models/TokenHolder.sol index c3af9a8..24840a0 100644 --- a/src/models/TokenHolder.sol +++ b/src/models/TokenHolder.sol @@ -51,7 +51,8 @@ contract TokenHolder is EternalModel { * @param record Instance */ function serialize(Instance memory record) external { - // TODO: make counter increments consistent with the approach used in Token + require(msg.sender == record.token.uuid, 'ElasticDAO: Unauthorized'); + setUint(keccak256(abi.encode(record.token.uuid, record.account, 'counter')), record.counter); setUint(keccak256(abi.encode(record.token.uuid, record.account, 'lambda')), record.lambda); diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index a4db38d..26ca51c 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -17,19 +17,33 @@ import '../models/TokenHolder.sol'; * @dev Implementation of the IERC20 interface */ contract ElasticGovernanceToken is IElasticToken { + address burner; address daoAddress; address ecosystemModelAddress; + address minter; mapping(address => mapping(address => uint256)) private _allowances; modifier onlyDAO() { - require(msg.sender == daoAddress, 'ElasticDAO: Not authorized.'); + require(msg.sender == daoAddress || msg.sender == minter, 'ElasticDAO: Not authorized'); + _; + } + + modifier onlyDAOorBurner() { + require(msg.sender == daoAddress || msg.sender == burner, 'ElasticDAO: Not authorized'); + _; + } + + modifier onlyDAOorMinter() { + require(msg.sender == daoAddress || msg.sender == minter, 'ElasticDAO: Not authorized'); _; } constructor(address _daoAddress, address _ecosystemModelAddress) IERC20() { + burner = _daoAddress; daoAddress = _daoAddress; ecosystemModelAddress = _ecosystemModelAddress; + minter = _daoAddress; } /** @@ -88,54 +102,18 @@ contract ElasticGovernanceToken is IElasticToken { return tokenHolder.lambda; } - /** - * @dev Returns the amount of tokens owned by @param _account at the specific @param _blockNumber - * @param _account - address of the account - * @param _blockNumber - the blockNumber at which the balance is to be checked at - * @return t uint256 - the number of tokens - */ - function balanceOfAt(address _account, uint256 _blockNumber) - external - view - override - returns (uint256 t) - { - t = 0; - Balance.Instance memory balance = _balanceAt(_account, _blockNumber); - if (balance.blockNumber <= _blockNumber) { - t = ElasticMath.t(balance.lambda, balance.m, balance.k); - } - return t; - } - - /** - * @dev Returns the amount of shares owned by @param _account at @param _blockNumber. - * @param _account - address of the account - * @param _blockNumber - the blockNumber at which the balance of shares has to be checked at - * @return lambda uint256 - lambda is the number of shares - */ - function balanceOfInSharesAt(address _account, uint256 _blockNumber) - external - view - override - returns (uint256 lambda) - { - Balance.Instance memory balance = _balanceAt(_account, _blockNumber); - - if (balance.blockNumber > _blockNumber) { - return 0; - } - - return balance.lambda; - } - /** * @dev Reduces the balance(tokens) of @param _account by @param _amount * @param _account address of the account * @param _amount - the amount by which the number of tokens is to be reduced * @return bool */ - function burn(address _account, uint256 _amount) external override onlyDAO returns (bool) { + function burn(address _account, uint256 _amount) + external + override + onlyDAOorBurner + returns (bool) + { _burn(_account, _amount); return true; } @@ -146,7 +124,12 @@ contract ElasticGovernanceToken is IElasticToken { * @param _amount - the amount by which the number of shares has to be reduced * @return bool */ - function burnShares(address _account, uint256 _amount) external override returns (bool) { + function burnShares(address _account, uint256 _amount) + external + override + onlyDAOorBurner + returns (bool) + { _burnShares(_account, _amount); return true; } @@ -191,7 +174,7 @@ contract ElasticGovernanceToken is IElasticToken { * @param _account - the address of the account for whom the token have to be minted to * @return bool */ - function mint(address _account, uint256 _amount) external onlyDAO returns (bool) { + function mint(address _account, uint256 _amount) external onlyDAOorMinter returns (bool) { _mint(_account, _amount); return true; @@ -203,7 +186,12 @@ contract ElasticGovernanceToken is IElasticToken { * @param _amount - the amount of shares to be minted * @return bool */ - function mintShares(address _account, uint256 _amount) external override returns (bool) { + function mintShares(address _account, uint256 _amount) + external + override + onlyDAOorMinter + returns (bool) + { _mintShares(_account, _amount); return true; } @@ -220,6 +208,14 @@ contract ElasticGovernanceToken is IElasticToken { return _getToken().numberOfTokenHolders; } + function setBurner(address _burner) external onlyDAO { + burner = _burner; + } + + function setMinter(address _minter) external onlyDAO { + minter = _minter; + } + /** * @dev Returns the symbol of the token, usually a shorter version of the * name. @@ -411,6 +407,7 @@ contract ElasticGovernanceToken is IElasticToken { balance.m = _token.m; balance.token = _token; balance.tokenHolder = _tokenHolder; + _token.counter = SafeMath.add(_token.counter, 1); _tokenHolder.counter = SafeMath.add(_tokenHolder.counter, 1); if (_isIncreasing) { @@ -422,6 +419,7 @@ contract ElasticGovernanceToken is IElasticToken { balance.lambda = _tokenHolder.lambda; Balance(ecosystem.balanceModelAddress).serialize(balance); + Token(ecosystem.tokenModelAddress).incrementCounter(_token); return _tokenHolder; } diff --git a/test/CapitalDeltaTest.js b/test/capitalDeltaTest.js similarity index 99% rename from test/CapitalDeltaTest.js rename to test/capitalDeltaTest.js index 7eca044..740123d 100644 --- a/test/CapitalDeltaTest.js +++ b/test/capitalDeltaTest.js @@ -35,6 +35,7 @@ describe('ElasticDAO: CapitalDelta value of a token', () => { from: agent.address, args: [ Ecosystem.address, + summoner.address, [summoner.address, summoner1.address, summoner2.address], 'ElasticDAO', 3, diff --git a/test/elasticDAOFactoryTest.js b/test/elasticDAOFactoryTest.js index 5bea200..001b687 100644 --- a/test/elasticDAOFactoryTest.js +++ b/test/elasticDAOFactoryTest.js @@ -1,10 +1,10 @@ const { expect } = require('chai'); const ethers = require('ethers'); const hre = require('hardhat').ethers; -const SDK = require('@elastic-dao/sdk'); +const { SDK } = require('@elastic-dao/sdk'); const { ONE, ONE_HUNDRED, ONE_TENTH, TWO_HUNDREDTHS } = require('./constants'); -const env = require('./env'); +const generateEnv = require('./env'); describe('ElasticDAO: Factory', () => { let agent; @@ -16,10 +16,12 @@ describe('ElasticDAO: Factory', () => { [agent, summoner, summoner1, summoner2] = await hre.getSigners(); const { provider } = hre; - const sdk = SDK({ + const env = await generateEnv(); + + const sdk = new SDK({ account: agent.address, contract: ({ abi, address }) => new ethers.Contract(address, abi, agent), - env: await env(), + env, provider, signer: agent, }); diff --git a/test/elasticDAOTests.js b/test/elasticDAOTests.js index 3fa7f77..fac4623 100644 --- a/test/elasticDAOTests.js +++ b/test/elasticDAOTests.js @@ -38,6 +38,7 @@ describe('ElasticDAO: Core', () => { from: agent.address, args: [ Ecosystem.address, + summoner1.address, [summoner.address, summoner1.address, summoner2.address], 'ElasticDAO', 3, @@ -80,7 +81,7 @@ describe('ElasticDAO: Core', () => { ONE_HUNDRED, ethers.constants.WeiPerEther, ), - ).to.be.revertedWith('ElasticDAO: Only deployer can initialize the Token'); + ).to.be.revertedWith('ElasticDAO: Only deployer'); }); it('Should not allow the DAO to be summoned before it has been seeded', async () => { @@ -138,10 +139,7 @@ describe('ElasticDAO: Core', () => { expect(await tokenContract.balanceOf(summoner.address)).to.equal(ONE_THOUSAND); /// get balance at block await hre.provider.send('evm_mine'); - const blockNumber = await hre.provider.getBlockNumber(); - await tokenContract.balanceOfAt(summoner.address, blockNumber); - - expect(await tokenContract.balanceOfAt(summoner.address, blockNumber)).to.equal(ONE_THOUSAND); + expect(await tokenContract.balanceOf(summoner.address)).to.equal(ONE_THOUSAND); }); it('Should not allow summoners to seed before token has been initialized', async () => { diff --git a/test/ExitDaoTest.js b/test/exitDaoTest.js similarity index 90% rename from test/ExitDaoTest.js rename to test/exitDaoTest.js index 134acf2..749bc66 100644 --- a/test/ExitDaoTest.js +++ b/test/exitDaoTest.js @@ -5,8 +5,8 @@ const hre = require('hardhat').ethers; const { provider } = hre; -const SDK = require('@elastic-dao/sdk'); -const env = require('./env'); +const { SDK } = require('@elastic-dao/sdk'); +const generateEnv = require('./env'); describe('ElasticDAO: exitDAO ', () => { let agent; @@ -19,11 +19,13 @@ describe('ElasticDAO: exitDAO ', () => { beforeEach(async () => { [agent, summoner, summoner1, summoner2] = await hre.getSigners(); + const env = await generateEnv(); + // agent is the deployer - sdk = SDK({ + sdk = new SDK({ account: agent.address, contract: ({ abi, address }) => new ethers.Contract(address, abi, agent), - env: await env(), + env, provider, signer: agent, }); @@ -66,7 +68,7 @@ describe('ElasticDAO: exitDAO ', () => { // post exit dao // blockNumber 23 - await dao.elasticDAO.exitDAO(1); + await dao.elasticDAO.exit(1); const atExitBalanceRecord = await elasticGovernanceToken.balanceOf(summoner.address); expect(atExitBalanceRecord.toNumber()).to.equal(910); diff --git a/yarn.lock b/yarn.lock index 02e89c3..287687c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,10 +23,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@elastic-dao/sdk@0.9.0-beta1": - version "0.9.0-beta1" - resolved "https://registry.yarnpkg.com/@elastic-dao/sdk/-/sdk-0.9.0-beta1.tgz#7082990443e45b95d7a33190a57c1e312a167c4d" - integrity sha512-YhkhZOyYNYCguluFZ3fV5+R0Yn3GWbuT3ahhOdwbm92hAVssYF7DdAtTzL/OSsWpgEAT3HBWJu5RuicgJ5YA1w== +"@elastic-dao/sdk@0.9.0-beta4": + version "0.9.0-beta4" + resolved "https://registry.yarnpkg.com/@elastic-dao/sdk/-/sdk-0.9.0-beta4.tgz#38b6087891dbc23a485b206bd3f090f6e2bd5518" + integrity sha512-72TKT664l8YKw4PeNm6aIJvL3N64DQoyQlhv9BQXXVVwAewUPVlihKCK7+ZM3xrnSIq3etK3TeNIu5t0rBDoOw== dependencies: "@pie-dao/utils" "^1.0.0" bignumber.js "^9.0.0" From 5bcc24726ba471849ee804f743107d9bdbb566af Mon Sep 17 00:00:00 2001 From: smalldutta Date: Tue, 26 Jan 2021 23:40:37 +0200 Subject: [PATCH 007/118] adds logging --- src/libraries/ElasticMath.sol | 36 +++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/src/libraries/ElasticMath.sol b/src/libraries/ElasticMath.sol index dd39187..c750a46 100644 --- a/src/libraries/ElasticMath.sol +++ b/src/libraries/ElasticMath.sol @@ -2,6 +2,7 @@ pragma solidity 0.7.2; import './SafeMath.sol'; +import 'hardhat/console.sol'; /** * This library does the Elastic math @@ -36,15 +37,34 @@ library ElasticMath { uint256 elasticity, uint256 lambda, uint256 m - ) internal pure returns (uint256 deltaEValue) { + ) internal view returns (uint256 deltaEValue) { uint256 lambdaDash = SafeMath.add(deltaLambda, lambda); - deltaEValue = wmul( - wmul(capitalDeltaValue, k), - SafeMath.sub( - wmul(lambdaDash, wmul(mDash(lambdaDash, lambda, m), revamp(elasticity))), - wmul(lambda, m) - ) - ); + console.log('contract: lambdadash: ', lambdaDash); + + uint256 a = wmul(capitalDeltaValue, k); + console.log('contract: a:', a); + + uint256 b = revamp(elasticity); + console.log('contract: b: ', b); + + uint256 c = wmul(lambda, m); + console.log('contract: c: ', c); + + uint256 d = mDash(lambdaDash, lambda, m); + console.log('contract: d: ', d); + + uint256 e = wmul(d, b); + console.log('contract: e: ', e); + + uint256 f = wmul(lambdaDash, e); + console.log('contract: f: ', f); + + uint256 g = SafeMath.sub(f, c); + console.log('contract: g: ', g); + + deltaEValue = wmul(a, g); + console.log('contract: deltaEValue: ', deltaEValue); + return deltaEValue; } From 285d10e03ce68199599d25093ecfa7e0b249f302 Mon Sep 17 00:00:00 2001 From: smalldutta Date: Wed, 27 Jan 2021 00:21:04 +0200 Subject: [PATCH 008/118] WIP --- src/libraries/ElasticMath.sol | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/libraries/ElasticMath.sol b/src/libraries/ElasticMath.sol index c750a46..8f07f80 100644 --- a/src/libraries/ElasticMath.sol +++ b/src/libraries/ElasticMath.sol @@ -38,6 +38,13 @@ library ElasticMath { uint256 lambda, uint256 m ) internal view returns (uint256 deltaEValue) { + console.log('contract: deltaLambda: ', deltaLambda); + console.log('contract: capitalDeltaValue: ', capitalDeltaValue); + console.log('contract: k: ', k); + console.log('contract: elasticity: ', elasticity); + console.log('contract: lambda: ', lambda); + console.log('contract: m: ', m); + uint256 lambdaDash = SafeMath.add(deltaLambda, lambda); console.log('contract: lambdadash: ', lambdaDash); From 2556dd8ceeda17ac2f4ae0e0bd15074d9c02ed51 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Wed, 27 Jan 2021 16:02:00 +0200 Subject: [PATCH 009/118] adds balanceOfVoting --- src/core/ElasticDAO.sol | 6 ++++++ src/tokens/ElasticGovernanceToken.sol | 22 ++++++++++++++++++---- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index 088bdcd..550f2c1 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -16,6 +16,7 @@ contract ElasticDAO { address internal deployer; address internal ecosystemModelAddress; address[] public summoners; + uint256 public maxVotingLambda; event ElasticGovernanceTokenDeployed(address indexed tokenAddress); @@ -69,6 +70,7 @@ contract ElasticDAO { controller = _controller; deployer = msg.sender; Ecosystem.Instance memory defaults = Ecosystem(_ecosystemModelAddress).deserialize(address(0)); + maxVotingLambda = 1000000000000000000; summoners = _summoners; Configurator configurator = Configurator(defaults.configuratorAddress); @@ -169,6 +171,10 @@ contract ElasticDAO { tokenContract.setMinter(controller); } + function setMaxVotingLambda(uint256 _maxVotingLambda) external onlyController { + maxVotingLambda = _maxVotingLambda; + } + // Summoning function seedSummoning() diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index 26ca51c..a308765 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -7,6 +7,7 @@ import '../interfaces/IElasticToken.sol'; import '../libraries/SafeMath.sol'; import '../libraries/ElasticMath.sol'; +import '../core/ElasticDAO.sol'; import '../models/Balance.sol'; import '../models/DAO.sol'; import '../models/Ecosystem.sol'; @@ -17,10 +18,10 @@ import '../models/TokenHolder.sol'; * @dev Implementation of the IERC20 interface */ contract ElasticGovernanceToken is IElasticToken { - address burner; - address daoAddress; - address ecosystemModelAddress; - address minter; + address public burner; + address public daoAddress; + address public ecosystemModelAddress; + address public minter; mapping(address => mapping(address => uint256)) private _allowances; @@ -102,6 +103,19 @@ contract ElasticGovernanceToken is IElasticToken { return tokenHolder.lambda; } + function balanceOfVoting(address _account) external view returns (uint256 balance) { + Token.Instance memory token = _getToken(); + TokenHolder.Instance memory tokenHolder = _getTokenHolder(_account); + ElasticDAO elasticDAO = ElasticDAO(payable(daoAddress)); + uint256 maxVotingLambda = elasticDAO.maxVotingLambda(); + + if (tokenHolder.lambda > maxVotingLambda) { + return ElasticMath.t(maxVotingLambda, token.k, token.m); + } else { + return ElasticMath.t(tokenHolder.lambda, token.k, token.m); + } + } + /** * @dev Reduces the balance(tokens) of @param _account by @param _amount * @param _account address of the account From 0cf5b48f4ea8bb3e62a2258a443aef9b8c64e952 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Fri, 29 Jan 2021 15:46:33 +0200 Subject: [PATCH 010/118] consolidate test functionality into helpers --- .eslintrc.js | 1 + hardhat.config.js | 6 +- src/tokens/ElasticGovernanceToken.sol | 2 +- test/capitalDeltaTest.js | 190 ++++-------------- test/ecosystemTests.js | 2 - test/elasticDAOFactoryTest.js | 43 +--- test/elasticDAOTests.js | 269 ++++++++++---------------- test/exitDaoTest.js | 70 +------ test/helpers.js | 79 ++++++++ 9 files changed, 228 insertions(+), 434 deletions(-) create mode 100644 test/helpers.js diff --git a/.eslintrc.js b/.eslintrc.js index ad07911..31c2df9 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -18,6 +18,7 @@ module.exports = { 'mocha/no-mocha-arrows': 0, 'no-console': 0, 'no-underscore-dangle': 0, + 'no-use-before-define': 0, 'object-curly-newline': 0, }, }; diff --git a/hardhat.config.js b/hardhat.config.js index a7cb271..8e9922e 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -72,13 +72,13 @@ module.exports = { agent: { default: 0, }, - summoner: { + summoner1: { default: 1, }, - summoner1: { + summoner2: { default: 2, }, - summoner2: { + summoner3: { default: 3, }, }, diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index a308765..5315c51 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -98,7 +98,7 @@ contract ElasticGovernanceToken is IElasticToken { * @param _account - address of the account * @return lambda uint256 - lambda is the number of shares */ - function balanceOfInShares(address _account) external view override returns (uint256 lambda) { + function balanceOfInShares(address _account) external view override returns (uint256) { TokenHolder.Instance memory tokenHolder = _getTokenHolder(_account); return tokenHolder.lambda; } diff --git a/test/capitalDeltaTest.js b/test/capitalDeltaTest.js index 740123d..b7d75a5 100644 --- a/test/capitalDeltaTest.js +++ b/test/capitalDeltaTest.js @@ -1,197 +1,77 @@ -const { deployments } = require('hardhat'); const { expect } = require('chai'); +const { capitalDelta, deltaE, mDash } = require('@elastic-dao/sdk'); const BigNumber = require('bignumber.js'); -const ethers = require('ethers'); -const hre = require('hardhat').ethers; -const { ONE, ONE_HUNDRED, ONE_TENTH, TWO_HUNDREDTHS } = require('./constants'); -const elasticGovernanceTokenArtifact = require('../artifacts/src/tokens/ElasticGovernanceToken.sol/ElasticGovernanceToken.json'); +const { ONE } = require('./constants'); + +const { ethBalance, signers, summonedDAO } = require('./helpers'); describe('ElasticDAO: CapitalDelta value of a token', () => { - let agent; - let Ecosystem; - let ElasticDAO; - let elasticDAO; - let TokenModel; - let tokenModel; - let summoner; - let summoner1; - let summoner2; + let dao; + let token; beforeEach(async () => { - [agent, summoner, summoner1, summoner2] = await hre.getSigners(); - await deployments.fixture(); - - // required contracts - Ecosystem = await deployments.get('Ecosystem'); - - const { deploy } = deployments; - await deployments.fixture(); - - TokenModel = await deployments.get('Token'); - tokenModel = new ethers.Contract(TokenModel.address, TokenModel.abi, summoner); - - // agent is the deployer - await deploy('ElasticDAO', { - from: agent.address, - args: [ - Ecosystem.address, - summoner.address, - [summoner.address, summoner1.address, summoner2.address], - 'ElasticDAO', - 3, - ], - }); - - ElasticDAO = await deployments.get('ElasticDAO'); - elasticDAO = new ethers.Contract(ElasticDAO.address, ElasticDAO.abi, agent); - - await elasticDAO - .initializeToken( - 'Elastic Governance Token', - 'EGT', - ONE_TENTH, // eByl value - TWO_HUNDREDTHS, // elasticity - ONE_HUNDRED, // k - ethers.constants.WeiPerEther, // max lambda purchase - ) - .catch((error) => { - console.log(error); - }); - - // can use .connect method too - elasticDAO = new ethers.Contract(ElasticDAO.address, ElasticDAO.abi, summoner); - - await elasticDAO.seedSummoning({ - value: ONE, - }); - - await elasticDAO.summon(ONE_TENTH); + dao = await summonedDAO(); + token = await dao.token(); }); it('Should return a mismatch in the values of capital delta', async () => { - const ecosystem = await elasticDAO.getEcosystem(); - // summoner is sending, but here any random address would do too - - await summoner.sendTransaction({ - to: ElasticDAO.address, - value: ONE, - }); - - const tokenInstance = await tokenModel.deserialize(ecosystem.governanceTokenAddress, ecosystem); - - const tokenInstanceContract = new ethers.Contract( - tokenInstance.uuid, - elasticGovernanceTokenArtifact.abi, - summoner, - ); + const { agent } = await signers(); // get the eth balance of elasticDAO - const ethBalanceElasticDAO = await hre.provider.getBalance(elasticDAO.address); + const ethBalanceElasticDAO = await ethBalance(dao.uuid); + + // sending a random amount of new ETH to throw the numbers off + await agent.sendTransaction({ to: dao.uuid, value: ONE }); // get the T value of the token - const totalSupplyOfToken = await tokenInstanceContract.totalSupply(); + const totalSupplyOfToken = await dao.elasticGovernanceToken.totalSupply(); // calculate capital Delta - const capitalDelta = BigNumber(ethBalanceElasticDAO.toString()).dividedBy( - totalSupplyOfToken.toString(), - ); + const cDelta = capitalDelta(ethBalanceElasticDAO, totalSupplyOfToken); // calculate deltaE using capital Delta to buy ONE_TENTH shares // deltaE = capitalDelta * k * ( (lambdaDash*mDash*revamp) - (lambda*m) ) - const elasticity = BigNumber(tokenInstance.elasticity.toString()).dividedBy(10 ** 18); - const k = BigNumber(tokenInstance.k.toString()).dividedBy(10 ** 18); - const lambda = BigNumber(tokenInstance.lambda.toString()).dividedBy(10 ** 18); - const m = BigNumber(tokenInstance.m.toString()).dividedBy(10 ** 18); - const lambdaDash = lambda.plus(0.1); - const revamp = elasticity.plus(1); - const mDash = m.multipliedBy(lambdaDash.dividedBy(lambda)); - const a = lambdaDash.multipliedBy(mDash).multipliedBy(revamp); - const b = lambda.multipliedBy(m); - const c = a.minus(b); - const deltaE = capitalDelta.multipliedBy(k).multipliedBy(c); + const dE = deltaE(0.1, cDelta, token.k, token.elasticity, token.lambda, token.m); // send that value of deltaE to joinDAO to buy ONE_TENTH shares - const value = deltaE.multipliedBy(10 ** 18).toFixed(0); - const tx = elasticDAO.join(TWO_HUNDREDTHS, { - value, - }); + const tx = dao.elasticDAO.join(0.1, { value: dE }); // transaction reverts with 'ElasticDAO: Incorrect ETH amount' await expect(tx).to.be.revertedWith('ElasticDAO: Incorrect ETH amount'); }); it('Should return a match in the values of capital delta', async () => { - const ecosystem = await elasticDAO.getEcosystem(); - // summoner is sending, but here any random address would do too - - const tokenInstance = await tokenModel.deserialize(ecosystem.governanceTokenAddress, ecosystem); - - const tokenInstanceContract = new ethers.Contract( - tokenInstance.uuid, - elasticGovernanceTokenArtifact.abi, - summoner, - ); - // get the eth balance of elasticDAO - const ethBalanceElasticDAOBeforeJoin = await hre.provider.getBalance(elasticDAO.address); + const ethBalanceElasticDAOBeforeJoin = await ethBalance(dao.uuid); + // get the T value of the token - const totalSupplyOfToken = await tokenInstanceContract.totalSupply(); + const totalSupplyOfToken = await dao.elasticGovernanceToken.totalSupply(); // calculate capital Delta - const capitalDelta = BigNumber(ethBalanceElasticDAOBeforeJoin.toString()).dividedBy( - totalSupplyOfToken.toString(), - ); + const cDelta = capitalDelta(ethBalanceElasticDAOBeforeJoin, totalSupplyOfToken); // calculate deltaE using capital Delta to buy ONE_TENTH shares // deltaE = capitalDelta * k * ( (lambdaDash*mDash*revamp) - (lambda*m) ) - const elasticity = BigNumber(tokenInstance.elasticity.toString()).dividedBy(10 ** 18); - const k = BigNumber(tokenInstance.k.toString()).dividedBy(10 ** 18); - const lambda = BigNumber(tokenInstance.lambda.toString()).dividedBy(10 ** 18); - const m = BigNumber(tokenInstance.m.toString()).dividedBy(10 ** 18); - const lambdaDash = lambda.plus(0.1); - const revamp = elasticity.plus(1); - const mDash = m.multipliedBy(lambdaDash.dividedBy(lambda)); - const a = lambdaDash.multipliedBy(mDash).multipliedBy(revamp); - const b = lambda.multipliedBy(m); - const c = a.minus(b); - const deltaE = capitalDelta.multipliedBy(k).multipliedBy(c); + const deltaLambda = BigNumber(0.1); + const lambdaDash = token.lambda.plus(deltaLambda); + const dE = deltaE(deltaLambda, cDelta, token.k, token.elasticity, token.lambda, token.m); + const mD = mDash(lambdaDash, token.lambda, token.m); // send that value of deltaE to joinDAO to buy ONE_TENTH shares - const value = deltaE.multipliedBy(10 ** 18).toFixed(0); - await elasticDAO.join(ONE_TENTH, { - value, - }); + await dao.elasticDAO.join(deltaLambda, { value: dE }); + await token.refresh(); // post join check the following values: // check the m value- after join,previous mDash should be current m - - const tokenInstanceAfterJoin = await tokenModel.deserialize( - ecosystem.governanceTokenAddress, - ecosystem, - ); - - const mAfterJoin = BigNumber(tokenInstanceAfterJoin.m.toString()) - .dividedBy(10 ** 18) - .toString(); - await expect(mAfterJoin).to.equal(mDash.dp(18).toString()); - - // check the lambda value- after join,previous lambdaDash should be current lambda - const lambdaAfterJoin = BigNumber(tokenInstanceAfterJoin.lambda.toString()).dividedBy(10 ** 18); - - await expect(lambdaAfterJoin.dp(18).toString()).to.equal(lambdaDash.dp(18).toString()); + await expect(token.m.toString()).to.equal(mD.toString()); + await expect(token.lambda.toString()).to.equal(lambdaDash.toString()); // check the the total eth - which should be initial eth, plus delta e - const ethBalanceElasticDAOAfterJoin = await hre.provider.getBalance(elasticDAO.address); - // const expectedEthInElasticDAOAfterJoin = deltaE.plus( - // BigNumber(ethBalanceElasticDAOBeforeJoin.toString()), - // ); - const expectedEthInElasticDAOAfterJoin = BigNumber( - BigNumber(ethBalanceElasticDAOBeforeJoin.toString()).dividedBy(10 ** 18), - ).plus(deltaE); - await expect( - BigNumber(ethBalanceElasticDAOAfterJoin.toString()) - .dividedBy(10 ** 18) - .toString(), - ).to.equal(expectedEthInElasticDAOAfterJoin.dp(18).toString()); + const ethBalanceElasticDAOAfterJoin = await ethBalance(dao.uuid); + + const expectedEthInElasticDAOAfterJoin = ethBalanceElasticDAOBeforeJoin.plus(dE); + await expect(ethBalanceElasticDAOAfterJoin.toString()).to.equal( + expectedEthInElasticDAOAfterJoin.toString(), + ); }); }); diff --git a/test/ecosystemTests.js b/test/ecosystemTests.js index 8e9f6a6..c60adf1 100644 --- a/test/ecosystemTests.js +++ b/test/ecosystemTests.js @@ -17,8 +17,6 @@ describe('ElasticDAO: Ecosystem Model', () => { beforeEach(async () => { [agent] = await hre.getSigners(); - await deployments.fixture(); - // setup needed contracts Balance = await deployments.get('Balance'); BalanceMultipliers = await deployments.get('BalanceMultipliers'); diff --git a/test/elasticDAOFactoryTest.js b/test/elasticDAOFactoryTest.js index 001b687..8e58e31 100644 --- a/test/elasticDAOFactoryTest.js +++ b/test/elasticDAOFactoryTest.js @@ -1,44 +1,11 @@ +const { ethers } = require('ethers'); const { expect } = require('chai'); -const ethers = require('ethers'); -const hre = require('hardhat').ethers; -const { SDK } = require('@elastic-dao/sdk'); - -const { ONE, ONE_HUNDRED, ONE_TENTH, TWO_HUNDREDTHS } = require('./constants'); -const generateEnv = require('./env'); +const { newDAO } = require('./helpers'); describe('ElasticDAO: Factory', () => { - let agent; - let summoner; - let summoner1; - let summoner2; - it('Should allow a DAO to be deployed using the factory', async () => { - [agent, summoner, summoner1, summoner2] = await hre.getSigners(); - const { provider } = hre; - - const env = await generateEnv(); - - const sdk = new SDK({ - account: agent.address, - contract: ({ abi, address }) => new ethers.Contract(address, abi, agent), - env, - provider, - signer: agent, - }); - - const dao = await sdk.elasticDAOFactory.deployDAOAndToken( - [summoner.address, summoner1.address, summoner2.address], - 'Elastic DAO', - 3, - 'Elastic Governance Token', - 'EGT', - ONE_TENTH, - TWO_HUNDREDTHS, - ONE_HUNDRED, - ONE, - ); - - expect(dao.uuid).to.not.equal(undefined); - expect(dao.ecosystem.governanceTokenAddress).to.not.equal(undefined); + const dao = await newDAO(); + expect(dao.uuid).to.not.equal(ethers.constants.AddressZero); + expect(dao.ecosystem.governanceTokenAddress).to.not.equal(ethers.constants.AddressZero); }); }); diff --git a/test/elasticDAOTests.js b/test/elasticDAOTests.js index fac4623..f7b96e3 100644 --- a/test/elasticDAOTests.js +++ b/test/elasticDAOTests.js @@ -1,260 +1,187 @@ const { expect } = require('chai'); -const ethers = require('ethers'); +const { ethers } = require('ethers'); const hre = require('hardhat').ethers; -const { deployments } = require('hardhat'); -const elasticGovernanceTokenArtifact = require('../artifacts/src/tokens/ElasticGovernanceToken.sol/ElasticGovernanceToken.json'); -const { - ONE_HUNDRED, - ONE_TENTH, - ONE_THOUSAND_ONE_HUNDRED, - TEN, - ONE_THOUSAND, - TWO_HUNDREDTHS, -} = require('./constants'); +const { ethBalance, SDK, signers, summoners, summonedDAO } = require('./helpers'); describe('ElasticDAO: Core', () => { - let agent; - let Ecosystem; - let elasticDAO; - let ElasticDAO; - let summoner; - let summoner1; - let summoner2; - let Token; - let tokenStorage; + let dao; beforeEach(async () => { - [agent, summoner, summoner1, summoner2] = await hre.getSigners(); - - await deployments.fixture(); - - // setup needed contracts - Ecosystem = await deployments.get('Ecosystem'); - Token = await deployments.get('Token'); - - const { deploy } = deployments; - - await deploy('ElasticDAO', { - from: agent.address, - args: [ - Ecosystem.address, - summoner1.address, - [summoner.address, summoner1.address, summoner2.address], - 'ElasticDAO', - 3, - ], - }); - - ElasticDAO = await deployments.get('ElasticDAO'); + const sdk = await SDK(); + const { summoner1 } = await signers(); + const args = [ + sdk.env.elasticDAO.ecosystemModelAddress, + summoner1.address, + await summoners(), + 'ElasticDAO', + 3, + ]; + + const ElasticDAO = await hre.getContractFactory('ElasticDAO'); + const elasticDAO = await ElasticDAO.deploy(...args); + + dao = await sdk.models.DAO.deserialize(elasticDAO.address); }); it('Should allow a token to be initialized', async () => { - elasticDAO = new ethers.Contract(ElasticDAO.address, ElasticDAO.abi, agent); - - await elasticDAO - .initializeToken( - 'Elastic Governance Token', - 'EGT', - ONE_TENTH, - TWO_HUNDREDTHS, - ONE_HUNDRED, - ethers.constants.WeiPerEther, - ) - .catch((error) => { - console.log(error); - }); + await dao.elasticDAO.contract.initializeToken( + 'Elastic Governance Token', + 'EGT', + dao.toEthersBigNumber(0.1, 18), + dao.toEthersBigNumber(0.02, 18), + dao.toEthersBigNumber(100, 18), + ethers.constants.WeiPerEther, + ); - const ecosystem = await elasticDAO.getEcosystem(); + await dao.ecosystem.refresh(); - expect(ecosystem.governanceTokenAddress).to.not.equal(ethers.constants.AddressZero); + expect(dao.ecosystem.governanceTokenAddress).to.not.equal(ethers.constants.AddressZero); }); it('Should not allow a token to be initialized if not the deployer', async () => { - elasticDAO = new ethers.Contract(ElasticDAO.address, ElasticDAO.abi, summoner); + const { summoner1 } = await signers(); + dao.sdk.changeSigner(summoner1); await expect( - elasticDAO.initializeToken( + dao.elasticDAO.contract.initializeToken( 'Elastic Governance Token', 'EGT', - ONE_TENTH, - TWO_HUNDREDTHS, - ONE_HUNDRED, + dao.toEthersBigNumber(0.1, 18), + dao.toEthersBigNumber(0.02, 18), + dao.toEthersBigNumber(100, 18), ethers.constants.WeiPerEther, ), ).to.be.revertedWith('ElasticDAO: Only deployer'); }); it('Should not allow the DAO to be summoned before it has been seeded', async () => { - elasticDAO = new ethers.Contract(ElasticDAO.address, ElasticDAO.abi, agent); - - await elasticDAO.initializeToken( + await dao.elasticDAO.contract.initializeToken( 'Elastic Governance Token', 'EGT', - ONE_TENTH, - TWO_HUNDREDTHS, - ONE_HUNDRED, + dao.toEthersBigNumber(0.1, 18), + dao.toEthersBigNumber(0.02, 18), + dao.toEthersBigNumber(100, 18), ethers.constants.WeiPerEther, ); - elasticDAO = new ethers.Contract(ElasticDAO.address, ElasticDAO.abi, summoner); - - tokenStorage = new ethers.Contract(Token.address, Token.abi, summoner); - const ecosystem = await elasticDAO.getEcosystem(); - const token = await tokenStorage.deserialize(ecosystem.governanceTokenAddress, ecosystem); + const { summoner1 } = await signers(); + dao.sdk.changeSigner(summoner1); + const token = await dao.token(); - await expect(elasticDAO.summon(token.maxLambdaPurchase)).to.be.revertedWith( - 'ElasticDAO: Please seed DAO with ETH to set ETH:EGT ratio', - ); + await expect( + dao.elasticDAO.contract.summon(dao.toEthersBigNumber(token.maxLambdaPurchase, 18)), + ).to.be.revertedWith('ElasticDAO: Please seed DAO with ETH to set ETH:EGT ratio'); }); it('Should allow summoners to seed', async () => { - elasticDAO = new ethers.Contract(ElasticDAO.address, ElasticDAO.abi, agent); - - await elasticDAO.initializeToken( + await dao.elasticDAO.contract.initializeToken( 'Elastic Governance Token', 'EGT', - ONE_TENTH, // capitalDelta - TWO_HUNDREDTHS, // elasticity - ONE_HUNDRED, // k + dao.toEthersBigNumber(0.1, 18), + dao.toEthersBigNumber(0.02, 18), + dao.toEthersBigNumber(100, 18), ethers.constants.WeiPerEther, // lambda ); - elasticDAO = new ethers.Contract(ElasticDAO.address, ElasticDAO.abi, summoner); - - const ecosystem = await elasticDAO.getEcosystem(); - - const tokenContract = new ethers.Contract( - ecosystem.governanceTokenAddress, - elasticGovernanceTokenArtifact.abi, - hre.provider, - ); - - await elasticDAO.seedSummoning({ value: ethers.constants.WeiPerEther }); - - const balance = await hre.provider.getBalance(ElasticDAO.address); - expect(balance).to.equal(ethers.constants.WeiPerEther); + const { summoner1 } = await signers(); + dao.sdk.changeSigner(summoner1); + dao = await dao.refresh(); + await dao.elasticDAO.seedSummoning({ value: 1 }); + const balance = await ethBalance(dao.uuid); + expect(balance.toNumber()).to.equal(1); /// signers token balance is correct - expect(await tokenContract.balanceOfInShares(summoner.address)).to.equal(TEN); - expect(await tokenContract.balanceOf(summoner.address)).to.equal(ONE_THOUSAND); - /// get balance at block + const summoner1Balance = await dao.elasticGovernanceToken.balanceOf(summoner1.address); + const summoner1Shares = await dao.elasticGovernanceToken.balanceOfInShares(summoner1.address); + expect(summoner1Balance.toNumber()).to.equal(1000); + expect(summoner1Shares.toNumber()).to.equal(10); + + /// get balance after a block await hre.provider.send('evm_mine'); - expect(await tokenContract.balanceOf(summoner.address)).to.equal(ONE_THOUSAND); + const newBalance = await dao.elasticGovernanceToken.balanceOf(summoner1.address); + expect(newBalance.toNumber()).to.equal(1000); }); it('Should not allow summoners to seed before token has been initialized', async () => { - elasticDAO = new ethers.Contract(ElasticDAO.address, ElasticDAO.abi, summoner); + const { summoner1 } = await signers(); + dao.sdk.changeSigner(summoner1); await expect( - elasticDAO.seedSummoning({ value: ethers.constants.WeiPerEther }), + dao.elasticDAO.contract.seedSummoning({ value: ethers.constants.WeiPerEther }), ).to.be.revertedWith('ElasticDAO: Please call initializeToken first'); }); it('Should not allow non summoners to seed', async () => { - elasticDAO = new ethers.Contract(ElasticDAO.address, ElasticDAO.abi, agent); - - await elasticDAO.initializeToken( + await dao.elasticDAO.contract.initializeToken( 'Elastic Governance Token', 'EGT', - ONE_TENTH, // capitalDelta - TWO_HUNDREDTHS, // elasticity - ONE_HUNDRED, // k + dao.toEthersBigNumber(0.1, 18), + dao.toEthersBigNumber(0.02, 18), + dao.toEthersBigNumber(100, 18), ethers.constants.WeiPerEther, // lambda ); await expect( - elasticDAO.seedSummoning({ value: ethers.constants.WeiPerEther }), + dao.elasticDAO.contract.seedSummoning({ value: ethers.constants.WeiPerEther }), ).to.be.revertedWith('ElasticDAO: Only summoners'); }); it('Should not allow the DAO to be summoned by a non-summoner', async () => { - elasticDAO = new ethers.Contract(ElasticDAO.address, ElasticDAO.abi, agent); - const elasticDAOSummoner = new ethers.Contract(ElasticDAO.address, ElasticDAO.abi, summoner); - - await elasticDAO.initializeToken( + await dao.elasticDAO.contract.initializeToken( 'Elastic Governance Token', 'EGT', - ONE_TENTH, - TWO_HUNDREDTHS, - ONE_HUNDRED, + dao.toEthersBigNumber(0.1, 18), + dao.toEthersBigNumber(0.02, 18), + dao.toEthersBigNumber(100, 18), ethers.constants.WeiPerEther, ); - tokenStorage = new ethers.Contract(Token.address, Token.abi, summoner); - const ecosystem = await elasticDAO.getEcosystem(); - const token = await tokenStorage.deserialize(ecosystem.governanceTokenAddress, ecosystem); + const { agent, summoner1 } = await signers(); + dao.sdk.changeSigner(summoner1); - await elasticDAOSummoner.seedSummoning({ value: ethers.constants.WeiPerEther }); + await dao.elasticDAO.seedSummoning({ value: 1 }); - await expect(elasticDAO.summon(token.maxLambdaPurchase)).to.be.revertedWith( - 'ElasticDAO: Only summoners', - ); + dao.sdk.changeSigner(agent); + + await expect(dao.elasticDAO.summon(1)).to.be.revertedWith('ElasticDAO: Only summoners'); }); it('Should allow the DAO to be summoned after it has been seeded', async () => { - elasticDAO = new ethers.Contract(ElasticDAO.address, ElasticDAO.abi, agent); - - await elasticDAO.initializeToken( + await dao.elasticDAO.contract.initializeToken( 'Elastic Governance Token', 'EGT', - ONE_TENTH, - TWO_HUNDREDTHS, - ONE_HUNDRED, + dao.toEthersBigNumber(0.1, 18), + dao.toEthersBigNumber(0.02, 18), + dao.toEthersBigNumber(100, 18), ethers.constants.WeiPerEther, ); - elasticDAO = new ethers.Contract(ElasticDAO.address, ElasticDAO.abi, summoner); - tokenStorage = new ethers.Contract(Token.address, Token.abi, summoner); - const ecosystem = await elasticDAO.getEcosystem(); - const token = await tokenStorage.deserialize(ecosystem.governanceTokenAddress, ecosystem); + const { summoner1, summoner2, summoner3 } = await signers(); + dao.sdk.changeSigner(summoner1); - await elasticDAO.seedSummoning({ value: ethers.constants.WeiPerEther }); - await elasticDAO.summon(token.maxLambdaPurchase); + await dao.elasticDAO.seedSummoning({ value: 1 }); + await dao.elasticDAO.summon(1); - const dao = await elasticDAO.getDAO(); expect(dao.summoned).to.equal(true); - const tokenContract = new ethers.Contract( - ecosystem.governanceTokenAddress, - elasticGovernanceTokenArtifact.abi, - hre.provider, - ); - const summoner0balance = await tokenContract.balanceOf(summoner.address); - const summoner1balance = await tokenContract.balanceOf(summoner1.address); - const summoner2balance = await tokenContract.balanceOf(summoner2.address); + const summoner1balance = await dao.elasticGovernanceToken.balanceOf(summoner1.address); + const summoner2balance = await dao.elasticGovernanceToken.balanceOf(summoner2.address); + const summoner3balance = await dao.elasticGovernanceToken.balanceOf(summoner3.address); - expect(summoner0balance).to.equal(ONE_THOUSAND_ONE_HUNDRED); - expect(summoner1balance).to.equal(ONE_HUNDRED); - expect(summoner2balance).to.equal(ONE_HUNDRED); + expect(summoner1balance.toNumber()).to.equal(1100); + expect(summoner2balance.toNumber()).to.equal(100); + expect(summoner3balance.toNumber()).to.equal(100); }); it('Should not allow a token to be initialized after summoning', async () => { - elasticDAO = new ethers.Contract(ElasticDAO.address, ElasticDAO.abi, agent); - - await elasticDAO.initializeToken( - 'Elastic Governance Token', - 'EGT', - ONE_TENTH, - TWO_HUNDREDTHS, - ONE_HUNDRED, - ethers.constants.WeiPerEther, - ); - - elasticDAO = new ethers.Contract(ElasticDAO.address, ElasticDAO.abi, summoner); - tokenStorage = new ethers.Contract(Token.address, Token.abi, summoner); - const ecosystem = await elasticDAO.getEcosystem(); - const token = await tokenStorage.deserialize(ecosystem.governanceTokenAddress, ecosystem); - - await elasticDAO.seedSummoning({ value: ethers.constants.WeiPerEther }); - await elasticDAO.summon(token.maxLambdaPurchase); - + dao = await summonedDAO(); await expect( - elasticDAO.initializeToken( + dao.elasticDAO.contract.initializeToken( 'Elastic Governance Token', 'EGT', - ONE_TENTH, - TWO_HUNDREDTHS, - ONE_HUNDRED, + dao.toEthersBigNumber(0.1, 18), + dao.toEthersBigNumber(0.02, 18), + dao.toEthersBigNumber(100, 18), ethers.constants.WeiPerEther, ), ).to.be.revertedWith('ElasticDAO: DAO must not be summoned'); diff --git a/test/exitDaoTest.js b/test/exitDaoTest.js index 749bc66..afa792a 100644 --- a/test/exitDaoTest.js +++ b/test/exitDaoTest.js @@ -1,76 +1,18 @@ const { expect } = require('chai'); -// const BigNumber = require('bignumber.js'); -const ethers = require('ethers'); -const hre = require('hardhat').ethers; - -const { provider } = hre; - -const { SDK } = require('@elastic-dao/sdk'); -const generateEnv = require('./env'); - -describe('ElasticDAO: exitDAO ', () => { - let agent; - let dao; - let sdk; - let summoner; - let summoner1; - let summoner2; - - beforeEach(async () => { - [agent, summoner, summoner1, summoner2] = await hre.getSigners(); - - const env = await generateEnv(); - - // agent is the deployer - sdk = new SDK({ - account: agent.address, - contract: ({ abi, address }) => new ethers.Contract(address, abi, agent), - env, - provider, - signer: agent, - }); - - dao = await sdk.elasticDAOFactory.deployDAOAndToken( - [summoner.address, summoner1.address, summoner2.address], - 'Elastic DAO', - 3, - 'Elastic Governance Token', - 'EGT', - 0.1, - 0.02, - 100, - 1, - ); - - sdk.account = summoner.address; - sdk.contract = ({ abi, address }) => new ethers.Contract(address, abi, summoner); - sdk.signer = summoner; - - // blocknumber 21 - await dao.elasticDAO.seedSummoning({ - value: 1, - }); - - // blocknumber 22 - await dao.elasticDAO.summon(0.1); - - // refresh - await dao.elasticDAO.getDAO(); - }); +const { signers, summonedDAO } = require('./helpers'); +describe('ElasticDAO: exit', () => { it('should allow to exit with 1 share and corresponding eth', async () => { - // summoner exits one share -> should have 9.1 shares and ( 1 * CapitalDelta ) eth + const dao = await summonedDAO(); + const { summoner1 } = await signers(); - const elasticGovernanceToken = await dao.elasticGovernanceToken; - const postSummonBalanceOf = await elasticGovernanceToken.balanceOf(summoner.address); + const postSummonBalanceOf = await dao.elasticGovernanceToken.balanceOf(summoner1.address); expect(postSummonBalanceOf.toNumber()).to.equal(1010); - // post exit dao - // blockNumber 23 await dao.elasticDAO.exit(1); - const atExitBalanceRecord = await elasticGovernanceToken.balanceOf(summoner.address); + const atExitBalanceRecord = await dao.elasticGovernanceToken.balanceOf(summoner1.address); expect(atExitBalanceRecord.toNumber()).to.equal(910); }); }); diff --git a/test/helpers.js b/test/helpers.js new file mode 100644 index 0000000..6647cf5 --- /dev/null +++ b/test/helpers.js @@ -0,0 +1,79 @@ +const { default: BigNumber } = require('bignumber.js'); +const { ethers } = require('ethers'); +const { SDK } = require('@elastic-dao/sdk'); +const hre = require('hardhat').ethers; +const generateEnv = require('./env'); + +const contract = ({ abi, address, signer }) => new ethers.Contract(address, abi, signer); + +const ethBalance = async (address) => { + const balance = (await provider().getBalance(address)).toString(); + return BigNumber(balance) + .dividedBy(10 ** 18) + .dp(18); +}; + +const newDAO = async () => { + const { elasticDAOFactory } = await sdk(); + return elasticDAOFactory.deployDAOAndToken( + await summoners(), + 'Elastic DAO', + 3, + 'Elastic Governance Token', + 'EGT', + 0.1, + 0.02, + 100, + 1, + ); +}; + +const provider = () => hre.provider; + +const sdk = async (overrides = {}) => { + const { agent } = await signers(); + + return new SDK({ + account: agent.address, + contract: (args) => contract({ ...args, signer: agent }), + env: await generateEnv(), + provider: provider(), + signer: agent, + ...overrides, + }); +}; + +const seededDAO = async () => { + const { summoner1 } = await signers(); + + const dao = await newDAO(); + dao.sdk.contract = (args) => contract({ ...args, signer: summoner1 }); + return dao.elasticDAO.seedSummoning({ value: 1 }); +}; + +const signers = async () => { + const [agent, summoner1, summoner2, summoner3] = await hre.getSigners(); + return { agent, summoner1, summoner2, summoner3 }; +}; + +const summonedDAO = async () => { + const dao = await seededDAO(); + return dao.elasticDAO.summon(0.1); +}; + +const summoners = async () => { + const { summoner1, summoner2, summoner3 } = await signers(); + return [summoner1.address, summoner2.address, summoner3.address]; +}; + +module.exports = { + contract, + ethBalance, + newDAO, + provider, + SDK: sdk, + seededDAO, + signers, + summonedDAO, + summoners, +}; From a610a6a99df706600f8824f1f81d59de5c98c98f Mon Sep 17 00:00:00 2001 From: alleycatdev Date: Sun, 31 Jan 2021 11:35:39 -0500 Subject: [PATCH 011/118] uses forked version of solidity coverage to enable optimizer --- coverage.json | 2 +- hardhat.config.js | 1 + package.json | 2 +- yarn.lock | 5 ++--- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/coverage.json b/coverage.json index 92b92c3..ec68565 100644 --- a/coverage.json +++ b/coverage.json @@ -1 +1 @@ -{"src/core/ElasticDAO.sol":{"l":{"19":0,"20":0,"21":0,"24":13,"25":13,"28":13,"29":12,"32":65,"33":65,"34":65,"37":65,"38":65,"39":65,"41":65,"42":62,"51":27,"52":27,"54":27,"55":27,"56":27,"67":21,"69":21,"85":0,"86":0,"87":0,"99":12,"101":12,"104":12,"106":12,"108":12,"112":28,"114":27,"115":27,"116":27,"117":27,"119":27,"121":27,"122":81,"125":27,"126":27,"132":0,"136":6,"140":0,"146":65,"150":276,"158":0,"163":39,"164":39,"168":0,"169":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAO.sol","s":{"1":0,"2":0,"3":13,"4":13,"5":13,"6":65,"7":65,"8":65,"9":65,"10":65,"11":65,"12":27,"13":27,"14":27,"15":27,"16":27,"17":21,"18":21,"19":0,"20":0,"21":0,"22":12,"23":12,"24":12,"25":12,"26":12,"27":28,"28":27,"29":27,"30":27,"31":27,"32":27,"33":27,"34":81,"35":27,"36":27,"37":0,"38":6,"39":0,"40":65,"41":276,"42":0,"43":39,"44":39,"45":0,"46":0},"b":{"1":[0,0],"2":[12,1],"3":[65,0],"4":[62,3],"5":[27,1]},"f":{"1":0,"2":13,"3":65,"4":65,"5":27,"6":21,"7":0,"8":12,"9":28,"10":0,"11":6,"12":0,"13":65,"14":276,"15":0,"16":39,"17":0},"fnMap":{"1":{"name":"onlyAfterSummoning","line":18,"loc":{"start":{"line":18,"column":2},"end":{"line":22,"column":2}}},"2":{"name":"onlyAfterTokenInitialized","line":23,"loc":{"start":{"line":23,"column":2},"end":{"line":30,"column":2}}},"3":{"name":"onlyBeforeSummoning","line":31,"loc":{"start":{"line":31,"column":2},"end":{"line":35,"column":2}}},"4":{"name":"onlySummoners","line":36,"loc":{"start":{"line":36,"column":2},"end":{"line":43,"column":2}}},"5":{"name":"constructor","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":57,"column":2}}},"6":{"name":"initializeToken","line":66,"loc":{"start":{"line":59,"column":2},"end":{"line":78,"column":2}}},"7":{"name":"initializeModule","line":83,"loc":{"start":{"line":80,"column":2},"end":{"line":88,"column":2}}},"8":{"name":"seedSummoning","line":97,"loc":{"start":{"line":92,"column":2},"end":{"line":109,"column":2}}},"9":{"name":"summon","line":111,"loc":{"start":{"line":111,"column":2},"end":{"line":127,"column":2}}},"10":{"name":"getDAO","line":131,"loc":{"start":{"line":131,"column":2},"end":{"line":133,"column":2}}},"11":{"name":"getEcosystem","line":135,"loc":{"start":{"line":135,"column":2},"end":{"line":137,"column":2}}},"12":{"name":"getModuleAddress","line":139,"loc":{"start":{"line":139,"column":2},"end":{"line":141,"column":2}}},"13":{"name":"_getDAO","line":145,"loc":{"start":{"line":145,"column":2},"end":{"line":147,"column":2}}},"14":{"name":"_getEcosystem","line":149,"loc":{"start":{"line":149,"column":2},"end":{"line":151,"column":2}}},"15":{"name":"_getElasticModule","line":153,"loc":{"start":{"line":153,"column":2},"end":{"line":160,"column":2}}},"16":{"name":"_getToken","line":162,"loc":{"start":{"line":162,"column":2},"end":{"line":165,"column":2}}},"17":{"name":"_getTokenHolder","line":167,"loc":{"start":{"line":167,"column":2},"end":{"line":174,"column":2}}}},"statementMap":{"1":{"start":{"line":19,"column":4},"end":{"line":19,"column":39}},"2":{"start":{"line":20,"column":4},"end":{"line":20,"column":60}},"3":{"start":{"line":24,"column":4},"end":{"line":24,"column":57}},"4":{"start":{"line":25,"column":4},"end":{"line":25,"column":663}},"5":{"start":{"line":28,"column":4},"end":{"line":28,"column":77}},"6":{"start":{"line":32,"column":4},"end":{"line":32,"column":39}},"7":{"start":{"line":33,"column":4},"end":{"line":33,"column":73}},"8":{"start":{"line":37,"column":4},"end":{"line":37,"column":58}},"9":{"start":{"line":38,"column":4},"end":{"line":38,"column":68}},"10":{"start":{"line":39,"column":4},"end":{"line":39,"column":64}},"11":{"start":{"line":41,"column":4},"end":{"line":41,"column":55}},"12":{"start":{"line":51,"column":4},"end":{"line":51,"column":49}},"13":{"start":{"line":52,"column":4},"end":{"line":52,"column":98}},"14":{"start":{"line":54,"column":4},"end":{"line":54,"column":74}},"15":{"start":{"line":55,"column":4},"end":{"line":55,"column":79}},"16":{"start":{"line":56,"column":4},"end":{"line":56,"column":74}},"17":{"start":{"line":67,"column":4},"end":{"line":67,"column":57}},"18":{"start":{"line":69,"column":4},"end":{"line":69,"column":2161}},"19":{"start":{"line":85,"column":4},"end":{"line":85,"column":57}},"20":{"start":{"line":86,"column":4},"end":{"line":86,"column":71}},"21":{"start":{"line":87,"column":4},"end":{"line":87,"column":52}},"22":{"start":{"line":99,"column":4},"end":{"line":99,"column":45}},"23":{"start":{"line":101,"column":4},"end":{"line":101,"column":30}},"24":{"start":{"line":104,"column":4},"end":{"line":104,"column":97}},"25":{"start":{"line":106,"column":4},"end":{"line":106,"column":65}},"26":{"start":{"line":108,"column":4},"end":{"line":108,"column":62}},"27":{"start":{"line":112,"column":4},"end":{"line":112,"column":98}},"28":{"start":{"line":114,"column":4},"end":{"line":114,"column":58}},"29":{"start":{"line":115,"column":4},"end":{"line":115,"column":68}},"30":{"start":{"line":116,"column":4},"end":{"line":116,"column":45}},"31":{"start":{"line":117,"column":4},"end":{"line":117,"column":77}},"32":{"start":{"line":119,"column":4},"end":{"line":119,"column":66}},"33":{"start":{"line":121,"column":4},"end":{"line":121,"column":3705}},"34":{"start":{"line":122,"column":6},"end":{"line":122,"column":64}},"35":{"start":{"line":125,"column":4},"end":{"line":125,"column":22}},"36":{"start":{"line":126,"column":4},"end":{"line":126,"column":54}},"37":{"start":{"line":132,"column":4},"end":{"line":132,"column":20}},"38":{"start":{"line":136,"column":4},"end":{"line":136,"column":26}},"39":{"start":{"line":140,"column":4},"end":{"line":140,"column":51}},"40":{"start":{"line":146,"column":4},"end":{"line":146,"column":74}},"41":{"start":{"line":150,"column":4},"end":{"line":150,"column":70}},"42":{"start":{"line":158,"column":4},"end":{"line":158,"column":4828}},"43":{"start":{"line":163,"column":4},"end":{"line":163,"column":57}},"44":{"start":{"line":164,"column":4},"end":{"line":164,"column":91}},"45":{"start":{"line":168,"column":4},"end":{"line":168,"column":57}},"46":{"start":{"line":169,"column":4},"end":{"line":169,"column":5236}}},"branchMap":{"1":{"line":20,"type":"if","locations":[{"start":{"line":20,"column":4},"end":{"line":20,"column":4}},{"start":{"line":20,"column":4},"end":{"line":20,"column":4}}]},"2":{"line":28,"type":"if","locations":[{"start":{"line":28,"column":4},"end":{"line":28,"column":4}},{"start":{"line":28,"column":4},"end":{"line":28,"column":4}}]},"3":{"line":33,"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":33,"column":4}},{"start":{"line":33,"column":4},"end":{"line":33,"column":4}}]},"4":{"line":41,"type":"if","locations":[{"start":{"line":41,"column":4},"end":{"line":41,"column":4}},{"start":{"line":41,"column":4},"end":{"line":41,"column":4}}]},"5":{"line":112,"type":"if","locations":[{"start":{"line":112,"column":4},"end":{"line":112,"column":4}},{"start":{"line":112,"column":4},"end":{"line":112,"column":4}}]}}},"src/interfaces/IERC20.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IERC20.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/libraries/ElasticMath.sol":{"l":{"32":0,"33":0,"40":0,"58":0,"71":0,"88":134,"98":268,"108":24},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/ElasticMath.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":134,"7":268,"8":24},"b":{},"f":{"1":0,"2":0,"3":0,"4":134,"5":268,"6":24},"fnMap":{"1":{"name":"deltaE","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":41,"column":2}}},"2":{"name":"mDash","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":59,"column":2}}},"3":{"name":"revamp","line":70,"loc":{"start":{"line":70,"column":2},"end":{"line":72,"column":2}}},"4":{"name":"t","line":83,"loc":{"start":{"line":83,"column":2},"end":{"line":89,"column":2}}},"5":{"name":"wmul","line":97,"loc":{"start":{"line":97,"column":2},"end":{"line":99,"column":2}}},"6":{"name":"wdiv","line":107,"loc":{"start":{"line":107,"column":2},"end":{"line":109,"column":2}}}},"statementMap":{"1":{"start":{"line":32,"column":4},"end":{"line":32,"column":58}},"2":{"start":{"line":33,"column":4},"end":{"line":33,"column":951}},"3":{"start":{"line":40,"column":4},"end":{"line":40,"column":22}},"4":{"start":{"line":58,"column":4},"end":{"line":58,"column":60}},"5":{"start":{"line":71,"column":4},"end":{"line":71,"column":57}},"6":{"start":{"line":88,"column":4},"end":{"line":88,"column":35}},"7":{"start":{"line":98,"column":4},"end":{"line":98,"column":90}},"8":{"start":{"line":108,"column":4},"end":{"line":108,"column":72}}},"branchMap":{}},"src/libraries/SafeMath.sol":{"l":{"29":735,"30":735,"32":735,"46":0,"64":0,"65":0,"67":0,"84":292,"85":0,"88":292,"89":292,"91":292,"107":186,"127":186,"128":186,"131":186,"147":0,"167":0,"168":0,"172":0,"173":0,"175":0,"177":0,"179":0,"180":0,"181":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/SafeMath.sol","s":{"1":735,"2":735,"3":735,"4":0,"5":0,"6":0,"7":0,"8":292,"9":0,"10":292,"11":292,"12":292,"13":186,"14":186,"15":186,"16":186,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0},"b":{"1":[735,0],"2":[0,0],"3":[0,292],"4":[292,0],"5":[186,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0]},"f":{"1":735,"2":0,"3":0,"4":292,"5":186,"6":186,"7":0,"8":0,"9":0},"fnMap":{"1":{"name":"add","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":33,"column":2}}},"2":{"name":"sub","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":2}}},"3":{"name":"sub","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":68,"column":2}}},"4":{"name":"mul","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":92,"column":2}}},"5":{"name":"div","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":108,"column":2}}},"6":{"name":"div","line":122,"loc":{"start":{"line":122,"column":2},"end":{"line":132,"column":2}}},"7":{"name":"mod","line":146,"loc":{"start":{"line":146,"column":2},"end":{"line":148,"column":2}}},"8":{"name":"mod","line":162,"loc":{"start":{"line":162,"column":2},"end":{"line":169,"column":2}}},"9":{"name":"pow","line":171,"loc":{"start":{"line":171,"column":2},"end":{"line":183,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":21}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":49}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":12}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":54}},"5":{"start":{"line":64,"column":4},"end":{"line":64,"column":32}},"6":{"start":{"line":65,"column":4},"end":{"line":65,"column":21}},"7":{"start":{"line":67,"column":4},"end":{"line":67,"column":12}},"8":{"start":{"line":84,"column":4},"end":{"line":84,"column":2356}},"9":{"start":{"line":85,"column":6},"end":{"line":85,"column":14}},"10":{"start":{"line":88,"column":4},"end":{"line":88,"column":21}},"11":{"start":{"line":89,"column":4},"end":{"line":89,"column":59}},"12":{"start":{"line":91,"column":4},"end":{"line":91,"column":12}},"13":{"start":{"line":107,"column":4},"end":{"line":107,"column":50}},"14":{"start":{"line":127,"column":4},"end":{"line":127,"column":31}},"15":{"start":{"line":128,"column":4},"end":{"line":128,"column":21}},"16":{"start":{"line":131,"column":4},"end":{"line":131,"column":12}},"17":{"start":{"line":147,"column":4},"end":{"line":147,"column":48}},"18":{"start":{"line":167,"column":4},"end":{"line":167,"column":32}},"19":{"start":{"line":168,"column":4},"end":{"line":168,"column":16}},"20":{"start":{"line":172,"column":4},"end":{"line":172,"column":5030}},"21":{"start":{"line":173,"column":6},"end":{"line":173,"column":14}},"22":{"start":{"line":174,"column":11},"end":{"line":174,"column":5078}},"23":{"start":{"line":175,"column":6},"end":{"line":175,"column":17}},"24":{"start":{"line":176,"column":11},"end":{"line":176,"column":5129}},"25":{"start":{"line":177,"column":6},"end":{"line":177,"column":14}},"26":{"start":{"line":179,"column":6},"end":{"line":179,"column":22}},"27":{"start":{"line":180,"column":6},"end":{"line":180,"column":71}},"28":{"start":{"line":180,"column":55},"end":{"line":180,"column":70}},"29":{"start":{"line":181,"column":6},"end":{"line":181,"column":14}}},"branchMap":{"1":{"line":30,"type":"if","locations":[{"start":{"line":30,"column":4},"end":{"line":30,"column":4}},{"start":{"line":30,"column":4},"end":{"line":30,"column":4}}]},"2":{"line":64,"type":"if","locations":[{"start":{"line":64,"column":4},"end":{"line":64,"column":4}},{"start":{"line":64,"column":4},"end":{"line":64,"column":4}}]},"3":{"line":84,"type":"if","locations":[{"start":{"line":84,"column":4},"end":{"line":84,"column":4}},{"start":{"line":84,"column":4},"end":{"line":84,"column":4}}]},"4":{"line":89,"type":"if","locations":[{"start":{"line":89,"column":4},"end":{"line":89,"column":4}},{"start":{"line":89,"column":4},"end":{"line":89,"column":4}}]},"5":{"line":127,"type":"if","locations":[{"start":{"line":127,"column":4},"end":{"line":127,"column":4}},{"start":{"line":127,"column":4},"end":{"line":127,"column":4}}]},"6":{"line":167,"type":"if","locations":[{"start":{"line":167,"column":4},"end":{"line":167,"column":4}},{"start":{"line":167,"column":4},"end":{"line":167,"column":4}}]},"7":{"line":172,"type":"if","locations":[{"start":{"line":172,"column":4},"end":{"line":172,"column":4}},{"start":{"line":172,"column":4},"end":{"line":172,"column":4}}]},"8":{"line":174,"type":"if","locations":[{"start":{"line":174,"column":11},"end":{"line":174,"column":11}},{"start":{"line":174,"column":11},"end":{"line":174,"column":11}}]},"9":{"line":176,"type":"if","locations":[{"start":{"line":176,"column":11},"end":{"line":176,"column":11}},{"start":{"line":176,"column":11},"end":{"line":176,"column":11}}]}}},"src/models/BalanceChange.sol":{"l":{"39":2,"40":2,"41":2,"43":2,"44":1,"45":1,"46":1,"49":1,"50":1,"53":2,"61":0,"69":93,"73":93,"77":93,"81":93,"82":93,"84":93,"92":2},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/BalanceChange.sol","s":{"1":2,"2":2,"3":2,"4":2,"5":1,"6":1,"7":1,"8":1,"9":1,"10":2,"11":0,"12":93,"13":93,"14":93,"15":93,"16":93,"17":93,"18":2},"b":{"1":[1,1]},"f":{"1":3,"2":2,"3":0,"4":93,"5":2},"fnMap":{"1":{"name":"constructor","line":14,"loc":{"start":{"line":14,"column":2},"end":{"line":14,"column":32}}},"2":{"name":"deserialize","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":54,"column":2}}},"3":{"name":"exists","line":56,"loc":{"start":{"line":56,"column":2},"end":{"line":62,"column":2}}},"4":{"name":"serialize","line":68,"loc":{"start":{"line":68,"column":2},"end":{"line":85,"column":2}}},"5":{"name":"_exists","line":87,"loc":{"start":{"line":87,"column":2},"end":{"line":93,"column":2}}}},"statementMap":{"1":{"start":{"line":39,"column":4},"end":{"line":39,"column":18}},"2":{"start":{"line":40,"column":4},"end":{"line":40,"column":38}},"3":{"start":{"line":41,"column":4},"end":{"line":41,"column":22}},"4":{"start":{"line":43,"column":4},"end":{"line":43,"column":1248}},"5":{"start":{"line":44,"column":6},"end":{"line":44,"column":98}},"6":{"start":{"line":45,"column":6},"end":{"line":45,"column":98}},"7":{"start":{"line":46,"column":6},"end":{"line":46,"column":1500}},"8":{"start":{"line":49,"column":6},"end":{"line":49,"column":78}},"9":{"start":{"line":50,"column":6},"end":{"line":50,"column":78}},"10":{"start":{"line":53,"column":4},"end":{"line":53,"column":17}},"11":{"start":{"line":61,"column":4},"end":{"line":61,"column":45}},"12":{"start":{"line":69,"column":4},"end":{"line":69,"column":2122}},"13":{"start":{"line":73,"column":4},"end":{"line":73,"column":2256}},"14":{"start":{"line":77,"column":4},"end":{"line":77,"column":2390}},"15":{"start":{"line":81,"column":4},"end":{"line":81,"column":93}},"16":{"start":{"line":82,"column":4},"end":{"line":82,"column":93}},"17":{"start":{"line":84,"column":4},"end":{"line":84,"column":94}},"18":{"start":{"line":92,"column":4},"end":{"line":92,"column":78}}},"branchMap":{"1":{"line":43,"type":"if","locations":[{"start":{"line":43,"column":4},"end":{"line":43,"column":4}},{"start":{"line":43,"column":4},"end":{"line":43,"column":4}}]}}},"src/models/DAO.sol":{"l":{"28":157,"30":157,"31":157,"32":157,"33":157,"36":157,"45":0,"49":81,"59":65,"67":54,"68":54,"69":54,"71":54,"72":27,"73":81,"74":81,"78":54,"82":157},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/DAO.sol","s":{"1":157,"2":157,"3":157,"4":157,"5":157,"6":157,"7":0,"8":81,"9":65,"10":54,"11":54,"12":54,"13":54,"14":27,"15":81,"16":81,"17":54,"18":157},"b":{"1":[157,0],"2":[27,27]},"f":{"1":3,"2":157,"3":0,"4":81,"5":65,"6":54,"7":157},"fnMap":{"1":{"name":"constructor","line":12,"loc":{"start":{"line":12,"column":2},"end":{"line":12,"column":32}}},"2":{"name":"deserialize","line":27,"loc":{"start":{"line":27,"column":2},"end":{"line":37,"column":2}}},"3":{"name":"exists","line":44,"loc":{"start":{"line":44,"column":2},"end":{"line":46,"column":2}}},"4":{"name":"getSummoner","line":48,"loc":{"start":{"line":48,"column":2},"end":{"line":50,"column":2}}},"5":{"name":"isSummoner","line":58,"loc":{"start":{"line":58,"column":2},"end":{"line":60,"column":2}}},"6":{"name":"serialize","line":66,"loc":{"start":{"line":66,"column":2},"end":{"line":79,"column":2}}},"7":{"name":"_exists","line":81,"loc":{"start":{"line":81,"column":2},"end":{"line":83,"column":2}}}},"statementMap":{"1":{"start":{"line":28,"column":4},"end":{"line":28,"column":22}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":791}},"3":{"start":{"line":31,"column":6},"end":{"line":31,"column":66}},"4":{"start":{"line":32,"column":6},"end":{"line":32,"column":90}},"5":{"start":{"line":33,"column":6},"end":{"line":33,"column":72}},"6":{"start":{"line":36,"column":4},"end":{"line":36,"column":17}},"7":{"start":{"line":45,"column":4},"end":{"line":45,"column":25}},"8":{"start":{"line":49,"column":4},"end":{"line":49,"column":75}},"9":{"start":{"line":59,"column":4},"end":{"line":59,"column":82}},"10":{"start":{"line":67,"column":4},"end":{"line":67,"column":69}},"11":{"start":{"line":68,"column":4},"end":{"line":68,"column":93}},"12":{"start":{"line":69,"column":4},"end":{"line":69,"column":75}},"13":{"start":{"line":71,"column":4},"end":{"line":71,"column":2248}},"14":{"start":{"line":72,"column":6},"end":{"line":72,"column":2315}},"15":{"start":{"line":73,"column":8},"end":{"line":73,"column":89}},"16":{"start":{"line":74,"column":8},"end":{"line":74,"column":90}},"17":{"start":{"line":78,"column":4},"end":{"line":78,"column":62}},"18":{"start":{"line":82,"column":4},"end":{"line":82,"column":58}}},"branchMap":{"1":{"line":30,"type":"if","locations":[{"start":{"line":30,"column":4},"end":{"line":30,"column":4}},{"start":{"line":30,"column":4},"end":{"line":30,"column":4}}]},"2":{"line":71,"type":"if","locations":[{"start":{"line":71,"column":4},"end":{"line":71,"column":4}},{"start":{"line":71,"column":4},"end":{"line":71,"column":4}}]}}},"src/models/Ecosystem.sol":{"l":{"38":702,"39":702,"40":702,"43":702,"46":702,"47":702,"50":702,"53":702,"56":702,"59":702,"62":702,"67":702,"76":1,"84":51,"88":51,"92":51,"93":51,"97":51,"101":51,"105":51,"106":51,"110":51,"112":51,"116":703},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Ecosystem.sol","s":{"1":702,"2":702,"3":702,"4":702,"5":702,"6":702,"7":702,"8":702,"9":702,"10":702,"11":702,"12":702,"13":1,"14":51,"15":51,"16":51,"17":51,"18":51,"19":51,"20":51,"21":51,"22":51,"23":51,"24":703},"b":{"1":[702,0]},"f":{"1":3,"2":702,"3":1,"4":51,"5":703},"fnMap":{"1":{"name":"constructor","line":14,"loc":{"start":{"line":14,"column":2},"end":{"line":14,"column":32}}},"2":{"name":"deserialize","line":37,"loc":{"start":{"line":37,"column":2},"end":{"line":68,"column":2}}},"3":{"name":"exists","line":75,"loc":{"start":{"line":75,"column":2},"end":{"line":77,"column":2}}},"4":{"name":"serialize","line":83,"loc":{"start":{"line":83,"column":2},"end":{"line":113,"column":2}}},"5":{"name":"_exists","line":115,"loc":{"start":{"line":115,"column":2},"end":{"line":117,"column":2}}}},"statementMap":{"1":{"start":{"line":38,"column":4},"end":{"line":38,"column":1204}},"2":{"start":{"line":39,"column":6},"end":{"line":39,"column":24}},"3":{"start":{"line":40,"column":6},"end":{"line":40,"column":1261}},"4":{"start":{"line":43,"column":6},"end":{"line":43,"column":1395}},"5":{"start":{"line":46,"column":6},"end":{"line":46,"column":95}},"6":{"start":{"line":47,"column":6},"end":{"line":47,"column":1615}},"7":{"start":{"line":50,"column":6},"end":{"line":50,"column":1741}},"8":{"start":{"line":53,"column":6},"end":{"line":53,"column":1875}},"9":{"start":{"line":56,"column":6},"end":{"line":56,"column":2003}},"10":{"start":{"line":59,"column":6},"end":{"line":59,"column":2123}},"11":{"start":{"line":62,"column":6},"end":{"line":62,"column":2253}},"12":{"start":{"line":67,"column":4},"end":{"line":67,"column":17}},"13":{"start":{"line":76,"column":4},"end":{"line":76,"column":25}},"14":{"start":{"line":84,"column":4},"end":{"line":84,"column":2789}},"15":{"start":{"line":88,"column":4},"end":{"line":88,"column":2922}},"16":{"start":{"line":92,"column":4},"end":{"line":92,"column":92}},"17":{"start":{"line":93,"column":4},"end":{"line":93,"column":3138}},"18":{"start":{"line":97,"column":4},"end":{"line":97,"column":3263}},"19":{"start":{"line":101,"column":4},"end":{"line":101,"column":3396}},"20":{"start":{"line":105,"column":4},"end":{"line":105,"column":98}},"21":{"start":{"line":106,"column":4},"end":{"line":106,"column":3624}},"22":{"start":{"line":110,"column":4},"end":{"line":110,"column":96}},"23":{"start":{"line":112,"column":4},"end":{"line":112,"column":62}},"24":{"start":{"line":116,"column":4},"end":{"line":116,"column":58}}},"branchMap":{"1":{"line":38,"type":"if","locations":[{"start":{"line":38,"column":4},"end":{"line":38,"column":4}},{"start":{"line":38,"column":4},"end":{"line":38,"column":4}}]}}},"src/models/ElasticModule.sol":{"l":{"31":0,"32":0,"34":0,"35":0,"38":0,"48":0,"56":0,"61":0,"65":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/ElasticModule.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0},"b":{"1":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0},"fnMap":{"1":{"name":"deserialize","line":26,"loc":{"start":{"line":26,"column":2},"end":{"line":39,"column":2}}},"2":{"name":"exists","line":47,"loc":{"start":{"line":47,"column":2},"end":{"line":49,"column":2}}},"3":{"name":"serialize","line":55,"loc":{"start":{"line":55,"column":2},"end":{"line":62,"column":2}}},"4":{"name":"_exists","line":64,"loc":{"start":{"line":64,"column":2},"end":{"line":66,"column":2}}}},"statementMap":{"1":{"start":{"line":31,"column":4},"end":{"line":31,"column":22}},"2":{"start":{"line":32,"column":4},"end":{"line":32,"column":22}},"3":{"start":{"line":34,"column":4},"end":{"line":34,"column":978}},"4":{"start":{"line":35,"column":6},"end":{"line":35,"column":96}},"5":{"start":{"line":38,"column":4},"end":{"line":38,"column":17}},"6":{"start":{"line":48,"column":4},"end":{"line":48,"column":32}},"7":{"start":{"line":56,"column":4},"end":{"line":56,"column":1603}},"8":{"start":{"line":61,"column":4},"end":{"line":61,"column":75}},"9":{"start":{"line":65,"column":4},"end":{"line":65,"column":65}}},"branchMap":{"1":{"line":34,"type":"if","locations":[{"start":{"line":34,"column":4},"end":{"line":34,"column":4}},{"start":{"line":34,"column":4},"end":{"line":34,"column":4}}]}}},"src/models/EternalModel.sol":{"l":{"30":1041,"37":431,"39":431,"46":6399,"53":1330,"60":0,"67":0,"69":0,"81":1296,"89":282,"97":540,"105":633,"113":0,"121":0,"132":0,"139":0,"141":0,"148":0,"155":0,"162":0,"169":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/EternalModel.sol","s":{"1":1041,"2":431,"3":431,"4":6399,"5":1330,"6":0,"7":0,"8":0,"9":1296,"10":282,"11":540,"12":633,"13":0,"14":0,"15":0},"b":{"1":[431,0],"2":[0,0],"3":[0,0]},"f":{"1":1041,"2":431,"3":6399,"4":1330,"5":0,"6":0,"7":1296,"8":282,"9":540,"10":633,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0},"fnMap":{"1":{"name":"getUint","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":31,"column":2}}},"2":{"name":"getString","line":36,"loc":{"start":{"line":36,"column":2},"end":{"line":40,"column":2}}},"3":{"name":"getAddress","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":2}}},"4":{"name":"getBool","line":52,"loc":{"start":{"line":52,"column":2},"end":{"line":54,"column":2}}},"5":{"name":"getInt","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":61,"column":2}}},"6":{"name":"getBytes","line":66,"loc":{"start":{"line":66,"column":2},"end":{"line":70,"column":2}}},"7":{"name":"setUint","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":82,"column":2}}},"8":{"name":"setString","line":88,"loc":{"start":{"line":88,"column":2},"end":{"line":90,"column":2}}},"9":{"name":"setAddress","line":96,"loc":{"start":{"line":96,"column":2},"end":{"line":98,"column":2}}},"10":{"name":"setBool","line":104,"loc":{"start":{"line":104,"column":2},"end":{"line":106,"column":2}}},"11":{"name":"setInt","line":112,"loc":{"start":{"line":112,"column":2},"end":{"line":114,"column":2}}},"12":{"name":"setBytes","line":120,"loc":{"start":{"line":120,"column":2},"end":{"line":122,"column":2}}},"13":{"name":"deleteUint","line":131,"loc":{"start":{"line":131,"column":2},"end":{"line":133,"column":2}}},"14":{"name":"deleteString","line":138,"loc":{"start":{"line":138,"column":2},"end":{"line":142,"column":2}}},"15":{"name":"deleteAddress","line":147,"loc":{"start":{"line":147,"column":2},"end":{"line":149,"column":2}}},"16":{"name":"deleteBool","line":154,"loc":{"start":{"line":154,"column":2},"end":{"line":156,"column":2}}},"17":{"name":"deleteInt","line":161,"loc":{"start":{"line":161,"column":2},"end":{"line":163,"column":2}}},"18":{"name":"deleteBytes","line":168,"loc":{"start":{"line":168,"column":2},"end":{"line":170,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":30}},"2":{"start":{"line":37,"column":4},"end":{"line":37,"column":52}},"3":{"start":{"line":39,"column":4},"end":{"line":39,"column":32}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":33}},"5":{"start":{"line":53,"column":4},"end":{"line":53,"column":30}},"6":{"start":{"line":60,"column":4},"end":{"line":60,"column":29}},"7":{"start":{"line":67,"column":4},"end":{"line":67,"column":52}},"8":{"start":{"line":69,"column":4},"end":{"line":69,"column":31}},"9":{"start":{"line":81,"column":4},"end":{"line":81,"column":31}},"10":{"start":{"line":89,"column":4},"end":{"line":89,"column":33}},"11":{"start":{"line":97,"column":4},"end":{"line":97,"column":34}},"12":{"start":{"line":105,"column":4},"end":{"line":105,"column":31}},"13":{"start":{"line":113,"column":4},"end":{"line":113,"column":30}},"14":{"start":{"line":121,"column":4},"end":{"line":121,"column":32}},"15":{"start":{"line":139,"column":4},"end":{"line":139,"column":52}}},"branchMap":{"1":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":37,"column":4}},{"start":{"line":37,"column":4},"end":{"line":37,"column":4}}]},"2":{"line":67,"type":"if","locations":[{"start":{"line":67,"column":4},"end":{"line":67,"column":4}},{"start":{"line":67,"column":4},"end":{"line":67,"column":4}}]},"3":{"line":139,"type":"if","locations":[{"start":{"line":139,"column":4},"end":{"line":139,"column":4}},{"start":{"line":139,"column":4},"end":{"line":139,"column":4}}]}}},"src/models/Token.sol":{"l":{"36":137,"38":137,"39":137,"40":137,"41":137,"42":137,"43":137,"44":137,"45":137,"46":137,"49":137,"58":13,"66":114,"67":114,"68":114,"69":114,"70":114,"71":114,"72":114,"73":114,"75":114,"79":150},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Token.sol","s":{"1":137,"2":137,"3":137,"4":137,"5":137,"6":137,"7":137,"8":137,"9":137,"10":137,"11":137,"12":13,"13":114,"14":114,"15":114,"16":114,"17":114,"18":114,"19":114,"20":114,"21":114,"22":150},"b":{"1":[137,0]},"f":{"1":3,"2":137,"3":13,"4":114,"5":150},"fnMap":{"1":{"name":"constructor","line":16,"loc":{"start":{"line":16,"column":2},"end":{"line":16,"column":32}}},"2":{"name":"deserialize","line":35,"loc":{"start":{"line":35,"column":2},"end":{"line":50,"column":2}}},"3":{"name":"exists","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":59,"column":2}}},"4":{"name":"serialize","line":65,"loc":{"start":{"line":65,"column":2},"end":{"line":76,"column":2}}},"5":{"name":"_exists","line":78,"loc":{"start":{"line":78,"column":2},"end":{"line":80,"column":2}}}},"statementMap":{"1":{"start":{"line":36,"column":4},"end":{"line":36,"column":22}},"2":{"start":{"line":38,"column":4},"end":{"line":38,"column":1071}},"3":{"start":{"line":39,"column":6},"end":{"line":39,"column":80}},"4":{"start":{"line":40,"column":6},"end":{"line":40,"column":76}},"5":{"start":{"line":41,"column":6},"end":{"line":41,"column":58}},"6":{"start":{"line":42,"column":6},"end":{"line":42,"column":68}},"7":{"start":{"line":43,"column":6},"end":{"line":43,"column":58}},"8":{"start":{"line":44,"column":6},"end":{"line":44,"column":90}},"9":{"start":{"line":45,"column":6},"end":{"line":45,"column":66}},"10":{"start":{"line":46,"column":6},"end":{"line":46,"column":70}},"11":{"start":{"line":49,"column":4},"end":{"line":49,"column":17}},"12":{"start":{"line":58,"column":4},"end":{"line":58,"column":25}},"13":{"start":{"line":66,"column":4},"end":{"line":66,"column":69}},"14":{"start":{"line":67,"column":4},"end":{"line":67,"column":73}},"15":{"start":{"line":68,"column":4},"end":{"line":68,"column":83}},"16":{"start":{"line":69,"column":4},"end":{"line":69,"column":79}},"17":{"start":{"line":70,"column":4},"end":{"line":70,"column":61}},"18":{"start":{"line":71,"column":4},"end":{"line":71,"column":71}},"19":{"start":{"line":72,"column":4},"end":{"line":72,"column":61}},"20":{"start":{"line":73,"column":4},"end":{"line":73,"column":93}},"21":{"start":{"line":75,"column":4},"end":{"line":75,"column":62}},"22":{"start":{"line":79,"column":4},"end":{"line":79,"column":58}}},"branchMap":{"1":{"line":38,"type":"if","locations":[{"start":{"line":38,"column":4},"end":{"line":38,"column":4}},{"start":{"line":38,"column":4},"end":{"line":38,"column":4}}]}}},"src/models/TokenHolder.sol":{"l":{"34":95,"35":95,"37":95,"38":29,"39":29,"42":95,"52":0,"60":93,"61":93,"63":93,"67":95},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/TokenHolder.sol","s":{"1":95,"2":95,"3":95,"4":29,"5":29,"6":95,"7":0,"8":93,"9":93,"10":93,"11":95},"b":{"1":[29,66]},"f":{"1":3,"2":95,"3":0,"4":93,"5":95},"fnMap":{"1":{"name":"constructor","line":14,"loc":{"start":{"line":14,"column":2},"end":{"line":14,"column":32}}},"2":{"name":"deserialize","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":43,"column":2}}},"3":{"name":"exists","line":51,"loc":{"start":{"line":51,"column":2},"end":{"line":53,"column":2}}},"4":{"name":"serialize","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":64,"column":2}}},"5":{"name":"_exists","line":66,"loc":{"start":{"line":66,"column":2},"end":{"line":68,"column":2}}}},"statementMap":{"1":{"start":{"line":34,"column":4},"end":{"line":34,"column":22}},"2":{"start":{"line":35,"column":4},"end":{"line":35,"column":38}},"3":{"start":{"line":37,"column":4},"end":{"line":37,"column":1059}},"4":{"start":{"line":38,"column":6},"end":{"line":38,"column":85}},"5":{"start":{"line":39,"column":6},"end":{"line":39,"column":83}},"6":{"start":{"line":42,"column":4},"end":{"line":42,"column":17}},"7":{"start":{"line":52,"column":4},"end":{"line":52,"column":40}},"8":{"start":{"line":60,"column":4},"end":{"line":60,"column":94}},"9":{"start":{"line":61,"column":4},"end":{"line":61,"column":92}},"10":{"start":{"line":63,"column":4},"end":{"line":63,"column":83}},"11":{"start":{"line":67,"column":4},"end":{"line":67,"column":73}}},"branchMap":{"1":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":37,"column":4}},{"start":{"line":37,"column":4},"end":{"line":37,"column":4}}]}}},"src/services/Configurator.sol":{"l":{"30":27,"31":27,"32":27,"33":27,"34":27,"35":27,"36":27,"48":27,"50":27,"53":27,"54":27,"55":27,"56":27,"57":27,"58":27,"61":27,"62":27,"64":27,"89":21,"91":21,"92":21,"93":21,"94":21,"95":21,"96":21,"97":21,"98":21,"99":21,"100":21,"102":21,"103":21,"104":21,"112":21},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/services/Configurator.sol","s":{"1":27,"2":27,"3":27,"4":27,"5":27,"6":27,"7":27,"8":27,"9":27,"10":27,"11":27,"12":27,"13":27,"14":27,"15":27,"16":27,"17":27,"18":27,"19":21,"20":21,"21":21,"22":21,"23":21,"24":21,"25":21,"26":21,"27":21,"28":21,"29":21,"30":21,"31":21,"32":21,"33":21},"b":{},"f":{"1":27,"2":27,"3":21,"4":21},"fnMap":{"1":{"name":"buildDAO","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":37,"column":2}}},"2":{"name":"buildEcosystem","line":44,"loc":{"start":{"line":44,"column":2},"end":{"line":65,"column":2}}},"3":{"name":"buildToken","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":105,"column":2}}},"4":{"name":"_getEcosystem","line":107,"loc":{"start":{"line":107,"column":2},"end":{"line":113,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":51}},"2":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":19}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":45}},"5":{"start":{"line":34,"column":4},"end":{"line":34,"column":23}},"6":{"start":{"line":35,"column":4},"end":{"line":35,"column":29}},"7":{"start":{"line":36,"column":4},"end":{"line":36,"column":28}},"8":{"start":{"line":48,"column":4},"end":{"line":48,"column":74}},"9":{"start":{"line":50,"column":4},"end":{"line":50,"column":30}},"10":{"start":{"line":53,"column":4},"end":{"line":53,"column":75}},"11":{"start":{"line":54,"column":4},"end":{"line":54,"column":55}},"12":{"start":{"line":55,"column":4},"end":{"line":55,"column":67}},"13":{"start":{"line":56,"column":4},"end":{"line":56,"column":75}},"14":{"start":{"line":57,"column":4},"end":{"line":57,"column":71}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":59}},"16":{"start":{"line":61,"column":4},"end":{"line":61,"column":63}},"17":{"start":{"line":62,"column":4},"end":{"line":62,"column":61}},"18":{"start":{"line":64,"column":4},"end":{"line":64,"column":40}},"19":{"start":{"line":89,"column":4},"end":{"line":89,"column":79}},"20":{"start":{"line":91,"column":4},"end":{"line":91,"column":59}},"21":{"start":{"line":92,"column":4},"end":{"line":92,"column":37}},"22":{"start":{"line":93,"column":4},"end":{"line":93,"column":33}},"23":{"start":{"line":94,"column":4},"end":{"line":94,"column":15}},"24":{"start":{"line":95,"column":4},"end":{"line":95,"column":19}},"25":{"start":{"line":96,"column":4},"end":{"line":96,"column":32}},"26":{"start":{"line":97,"column":4},"end":{"line":97,"column":47}},"27":{"start":{"line":98,"column":4},"end":{"line":98,"column":21}},"28":{"start":{"line":99,"column":4},"end":{"line":99,"column":25}},"29":{"start":{"line":100,"column":4},"end":{"line":100,"column":87}},"30":{"start":{"line":102,"column":4},"end":{"line":102,"column":48}},"31":{"start":{"line":103,"column":4},"end":{"line":103,"column":57}},"32":{"start":{"line":104,"column":4},"end":{"line":104,"column":32}},"33":{"start":{"line":112,"column":4},"end":{"line":112,"column":51}}},"branchMap":{}},"src/services/Registrator.sol":{"l":{"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"32":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/services/Registrator.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0},"b":{},"f":{"1":0,"2":0},"fnMap":{"1":{"name":"registerModule","line":17,"loc":{"start":{"line":17,"column":2},"end":{"line":25,"column":2}}},"2":{"name":"_getEcosystem","line":27,"loc":{"start":{"line":27,"column":2},"end":{"line":33,"column":2}}}},"statementMap":{"1":{"start":{"line":18,"column":4},"end":{"line":18,"column":67}},"2":{"start":{"line":19,"column":4},"end":{"line":19,"column":91}},"3":{"start":{"line":20,"column":4},"end":{"line":20,"column":47}},"4":{"start":{"line":21,"column":4},"end":{"line":21,"column":34}},"5":{"start":{"line":22,"column":4},"end":{"line":22,"column":29}},"6":{"start":{"line":23,"column":4},"end":{"line":23,"column":49}},"7":{"start":{"line":24,"column":4},"end":{"line":24,"column":48}},"8":{"start":{"line":32,"column":4},"end":{"line":32,"column":51}}},"branchMap":{}},"src/tokens/ElasticGovernanceToken.sol":{"l":{"26":93,"27":93,"31":21,"32":21,"45":0,"64":0,"65":0,"74":1,"75":1,"77":1,"79":1,"88":1,"89":1,"90":1,"92":1,"93":1,"95":1,"100":1,"101":1,"102":1,"104":0,"105":0,"108":1,"109":1,"112":1,"120":0,"130":0,"132":0,"134":0,"135":0,"145":0,"146":0,"155":93,"157":93,"165":0,"174":0,"187":0,"188":0,"200":0,"201":0,"219":0,"221":0,"223":0,"224":0,"226":0,"229":0,"239":0,"240":0,"242":0,"244":0,"248":93,"250":93,"252":93,"253":93,"255":93,"257":93,"259":93,"260":93,"261":93,"263":93,"264":93,"266":93,"274":0,"276":0,"277":0,"279":0,"280":0,"282":0,"283":0,"285":0,"286":0,"287":0,"289":0,"298":93,"299":93,"301":93,"302":93,"303":93,"305":93,"307":93,"309":93,"310":93,"314":93,"316":93,"317":93,"319":0,"321":93,"323":93,"333":2,"335":2,"339":377,"343":95,"347":94},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/tokens/ElasticGovernanceToken.sol","s":{"1":93,"2":21,"3":21,"4":0,"5":0,"6":0,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":0,"21":0,"22":1,"23":1,"24":1,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":93,"33":93,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":93,"51":93,"52":93,"53":93,"54":93,"55":93,"56":93,"57":93,"58":93,"59":93,"60":93,"61":93,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":93,"74":93,"75":93,"76":93,"77":93,"78":93,"79":93,"80":93,"81":93,"82":93,"83":93,"84":93,"85":0,"86":93,"87":93,"88":2,"89":2,"90":377,"91":95,"92":94},"b":{"1":[93,0],"2":[1,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[93,0]},"f":{"1":93,"2":21,"3":0,"4":0,"5":1,"6":1,"7":0,"8":0,"9":0,"10":93,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":93,"18":0,"19":93,"20":2,"21":377,"22":95,"23":94},"fnMap":{"1":{"name":"onlyDAO","line":25,"loc":{"start":{"line":25,"column":2},"end":{"line":28,"column":2}}},"2":{"name":"constructor","line":30,"loc":{"start":{"line":30,"column":2},"end":{"line":33,"column":2}}},"3":{"name":"allowance","line":44,"loc":{"start":{"line":44,"column":2},"end":{"line":46,"column":2}}},"4":{"name":"approve","line":63,"loc":{"start":{"line":63,"column":2},"end":{"line":66,"column":2}}},"5":{"name":"balanceOf","line":73,"loc":{"start":{"line":73,"column":2},"end":{"line":80,"column":2}}},"6":{"name":"balanceOfAt","line":87,"loc":{"start":{"line":87,"column":2},"end":{"line":113,"column":2}}},"7":{"name":"decimals","line":119,"loc":{"start":{"line":119,"column":2},"end":{"line":121,"column":2}}},"8":{"name":"decreaseAllowance","line":129,"loc":{"start":{"line":129,"column":2},"end":{"line":136,"column":2}}},"9":{"name":"increaseAllowance","line":144,"loc":{"start":{"line":144,"column":2},"end":{"line":147,"column":2}}},"10":{"name":"mint","line":154,"loc":{"start":{"line":154,"column":2},"end":{"line":158,"column":2}}},"11":{"name":"name","line":164,"loc":{"start":{"line":164,"column":2},"end":{"line":166,"column":2}}},"12":{"name":"symbol","line":173,"loc":{"start":{"line":173,"column":2},"end":{"line":175,"column":2}}},"13":{"name":"totalSupply","line":186,"loc":{"start":{"line":186,"column":2},"end":{"line":189,"column":2}}},"14":{"name":"transfer","line":199,"loc":{"start":{"line":199,"column":2},"end":{"line":202,"column":2}}},"15":{"name":"transferFrom","line":214,"loc":{"start":{"line":214,"column":2},"end":{"line":230,"column":2}}},"16":{"name":"_approve","line":234,"loc":{"start":{"line":234,"column":2},"end":{"line":245,"column":2}}},"17":{"name":"_mint","line":247,"loc":{"start":{"line":247,"column":2},"end":{"line":267,"column":2}}},"18":{"name":"_transfer","line":269,"loc":{"start":{"line":269,"column":2},"end":{"line":290,"column":2}}},"19":{"name":"_updateBalance","line":292,"loc":{"start":{"line":292,"column":2},"end":{"line":324,"column":2}}},"20":{"name":"_getBalanceChange","line":328,"loc":{"start":{"line":328,"column":2},"end":{"line":336,"column":2}}},"21":{"name":"_getEcosystem","line":338,"loc":{"start":{"line":338,"column":2},"end":{"line":340,"column":2}}},"22":{"name":"_getTokenHolder","line":342,"loc":{"start":{"line":342,"column":2},"end":{"line":344,"column":2}}},"23":{"name":"_getToken","line":346,"loc":{"start":{"line":346,"column":2},"end":{"line":348,"column":2}}}},"statementMap":{"1":{"start":{"line":26,"column":4},"end":{"line":26,"column":67}},"2":{"start":{"line":31,"column":4},"end":{"line":31,"column":27}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":49}},"4":{"start":{"line":45,"column":4},"end":{"line":45,"column":40}},"5":{"start":{"line":64,"column":4},"end":{"line":64,"column":42}},"6":{"start":{"line":65,"column":4},"end":{"line":65,"column":15}},"7":{"start":{"line":74,"column":4},"end":{"line":74,"column":45}},"8":{"start":{"line":75,"column":4},"end":{"line":75,"column":71}},"9":{"start":{"line":77,"column":4},"end":{"line":77,"column":67}},"10":{"start":{"line":79,"column":4},"end":{"line":79,"column":12}},"11":{"start":{"line":88,"column":4},"end":{"line":88,"column":17}},"12":{"start":{"line":89,"column":4},"end":{"line":89,"column":22}},"13":{"start":{"line":90,"column":4},"end":{"line":90,"column":8}},"14":{"start":{"line":92,"column":4},"end":{"line":92,"column":71}},"15":{"start":{"line":93,"column":4},"end":{"line":93,"column":80}},"16":{"start":{"line":95,"column":4},"end":{"line":95,"column":3196}},"17":{"start":{"line":100,"column":6},"end":{"line":100,"column":3342}},"18":{"start":{"line":101,"column":8},"end":{"line":101,"column":63}},"19":{"start":{"line":102,"column":8},"end":{"line":102,"column":66}},"20":{"start":{"line":104,"column":8},"end":{"line":104,"column":63}},"21":{"start":{"line":105,"column":8},"end":{"line":105,"column":66}},"22":{"start":{"line":108,"column":6},"end":{"line":108,"column":27}},"23":{"start":{"line":109,"column":6},"end":{"line":109,"column":51}},"24":{"start":{"line":112,"column":4},"end":{"line":112,"column":12}},"25":{"start":{"line":120,"column":4},"end":{"line":120,"column":13}},"26":{"start":{"line":130,"column":4},"end":{"line":130,"column":92}},"27":{"start":{"line":132,"column":4},"end":{"line":132,"column":74}},"28":{"start":{"line":134,"column":4},"end":{"line":134,"column":47}},"29":{"start":{"line":135,"column":4},"end":{"line":135,"column":15}},"30":{"start":{"line":145,"column":4},"end":{"line":145,"column":95}},"31":{"start":{"line":146,"column":4},"end":{"line":146,"column":15}},"32":{"start":{"line":155,"column":4},"end":{"line":155,"column":27}},"33":{"start":{"line":157,"column":4},"end":{"line":157,"column":15}},"34":{"start":{"line":165,"column":4},"end":{"line":165,"column":27}},"35":{"start":{"line":174,"column":4},"end":{"line":174,"column":29}},"36":{"start":{"line":187,"column":4},"end":{"line":187,"column":45}},"37":{"start":{"line":188,"column":4},"end":{"line":188,"column":69}},"38":{"start":{"line":200,"column":4},"end":{"line":200,"column":38}},"39":{"start":{"line":201,"column":4},"end":{"line":201,"column":15}},"40":{"start":{"line":219,"column":4},"end":{"line":219,"column":97}},"41":{"start":{"line":221,"column":4},"end":{"line":221,"column":33}},"42":{"start":{"line":223,"column":4},"end":{"line":223,"column":7178}},"43":{"start":{"line":224,"column":6},"end":{"line":224,"column":91}},"44":{"start":{"line":226,"column":6},"end":{"line":226,"column":68}},"45":{"start":{"line":229,"column":4},"end":{"line":229,"column":15}},"46":{"start":{"line":239,"column":4},"end":{"line":239,"column":72}},"47":{"start":{"line":240,"column":4},"end":{"line":240,"column":72}},"48":{"start":{"line":242,"column":4},"end":{"line":242,"column":42}},"49":{"start":{"line":244,"column":4},"end":{"line":244,"column":44}},"50":{"start":{"line":248,"column":4},"end":{"line":248,"column":45}},"51":{"start":{"line":250,"column":4},"end":{"line":250,"column":71}},"52":{"start":{"line":252,"column":4},"end":{"line":252,"column":79}},"53":{"start":{"line":253,"column":4},"end":{"line":253,"column":65}},"54":{"start":{"line":255,"column":4},"end":{"line":255,"column":70}},"55":{"start":{"line":257,"column":4},"end":{"line":257,"column":57}},"56":{"start":{"line":259,"column":4},"end":{"line":259,"column":57}},"57":{"start":{"line":260,"column":4},"end":{"line":260,"column":59}},"58":{"start":{"line":261,"column":4},"end":{"line":261,"column":32}},"59":{"start":{"line":263,"column":4},"end":{"line":263,"column":83}},"60":{"start":{"line":264,"column":4},"end":{"line":264,"column":44}},"61":{"start":{"line":266,"column":4},"end":{"line":266,"column":47}},"62":{"start":{"line":274,"column":4},"end":{"line":274,"column":45}},"63":{"start":{"line":276,"column":4},"end":{"line":276,"column":72}},"64":{"start":{"line":277,"column":4},"end":{"line":277,"column":68}},"65":{"start":{"line":279,"column":4},"end":{"line":279,"column":79}},"66":{"start":{"line":280,"column":4},"end":{"line":280,"column":65}},"67":{"start":{"line":282,"column":4},"end":{"line":282,"column":79}},"68":{"start":{"line":283,"column":4},"end":{"line":283,"column":74}},"69":{"start":{"line":285,"column":4},"end":{"line":285,"column":89}},"70":{"start":{"line":286,"column":4},"end":{"line":286,"column":48}},"71":{"start":{"line":287,"column":4},"end":{"line":287,"column":46}},"72":{"start":{"line":289,"column":4},"end":{"line":289,"column":37}},"73":{"start":{"line":298,"column":4},"end":{"line":298,"column":47}},"74":{"start":{"line":299,"column":4},"end":{"line":299,"column":43}},"75":{"start":{"line":301,"column":4},"end":{"line":301,"column":43}},"76":{"start":{"line":302,"column":4},"end":{"line":302,"column":42}},"77":{"start":{"line":303,"column":4},"end":{"line":303,"column":45}},"78":{"start":{"line":305,"column":4},"end":{"line":305,"column":29}},"79":{"start":{"line":307,"column":4},"end":{"line":307,"column":29}},"80":{"start":{"line":309,"column":4},"end":{"line":309,"column":43}},"81":{"start":{"line":310,"column":4},"end":{"line":310,"column":41}},"82":{"start":{"line":314,"column":4},"end":{"line":314,"column":63}},"83":{"start":{"line":316,"column":4},"end":{"line":316,"column":10176}},"84":{"start":{"line":317,"column":6},"end":{"line":317,"column":74}},"85":{"start":{"line":319,"column":6},"end":{"line":319,"column":74}},"86":{"start":{"line":321,"column":4},"end":{"line":321,"column":84}},"87":{"start":{"line":323,"column":4},"end":{"line":323,"column":23}},"88":{"start":{"line":333,"column":4},"end":{"line":333,"column":81}},"89":{"start":{"line":335,"column":4},"end":{"line":335,"column":90}},"90":{"start":{"line":339,"column":4},"end":{"line":339,"column":67}},"91":{"start":{"line":343,"column":4},"end":{"line":343,"column":97}},"92":{"start":{"line":347,"column":4},"end":{"line":347,"column":78}}},"branchMap":{"1":{"line":26,"type":"if","locations":[{"start":{"line":26,"column":4},"end":{"line":26,"column":4}},{"start":{"line":26,"column":4},"end":{"line":26,"column":4}}]},"2":{"line":100,"type":"if","locations":[{"start":{"line":100,"column":6},"end":{"line":100,"column":6}},{"start":{"line":100,"column":6},"end":{"line":100,"column":6}}]},"3":{"line":132,"type":"if","locations":[{"start":{"line":132,"column":4},"end":{"line":132,"column":4}},{"start":{"line":132,"column":4},"end":{"line":132,"column":4}}]},"4":{"line":219,"type":"if","locations":[{"start":{"line":219,"column":4},"end":{"line":219,"column":4}},{"start":{"line":219,"column":4},"end":{"line":219,"column":4}}]},"5":{"line":223,"type":"if","locations":[{"start":{"line":223,"column":4},"end":{"line":223,"column":4}},{"start":{"line":223,"column":4},"end":{"line":223,"column":4}}]},"6":{"line":239,"type":"if","locations":[{"start":{"line":239,"column":4},"end":{"line":239,"column":4}},{"start":{"line":239,"column":4},"end":{"line":239,"column":4}}]},"7":{"line":240,"type":"if","locations":[{"start":{"line":240,"column":4},"end":{"line":240,"column":4}},{"start":{"line":240,"column":4},"end":{"line":240,"column":4}}]},"8":{"line":316,"type":"if","locations":[{"start":{"line":316,"column":4},"end":{"line":316,"column":4}},{"start":{"line":316,"column":4},"end":{"line":316,"column":4}}]}}}} \ No newline at end of file +{"src/core/ElasticDAO.sol":{"l":{"24":0,"25":0,"26":0,"29":0,"30":0,"32":0,"33":0,"36":0,"37":0,"38":0,"41":0,"42":0,"45":0,"46":0,"49":0,"50":0,"51":0,"52":0,"54":0,"55":0,"58":0,"59":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"76":0,"77":0,"78":0,"83":0,"84":0,"85":0,"88":0,"89":0,"91":0,"102":0,"103":0,"105":0,"116":0,"117":0,"118":0,"120":0,"124":0,"126":0,"131":0,"132":0,"141":0,"151":0,"154":0,"155":0,"158":0,"159":0,"160":0,"161":0,"164":0,"168":0,"169":0,"170":0,"171":0,"175":0,"187":0,"189":0,"190":0,"191":0,"195":0,"197":0,"198":0,"199":0,"200":0,"202":0,"204":0,"205":0,"207":0,"208":0,"214":0,"218":0,"224":0,"225":0,"229":0,"233":0,"234":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAO.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0},"fnMap":{"1":{"name":"onlyAfterSummoning","line":23,"loc":{"start":{"line":23,"column":2},"end":{"line":27,"column":2}}},"2":{"name":"onlyAfterTokenInitialized","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":34,"column":2}}},"3":{"name":"onlyBeforeSummoning","line":35,"loc":{"start":{"line":35,"column":2},"end":{"line":39,"column":2}}},"4":{"name":"onlyController","line":40,"loc":{"start":{"line":40,"column":2},"end":{"line":43,"column":2}}},"5":{"name":"onlyDeployer","line":44,"loc":{"start":{"line":44,"column":2},"end":{"line":47,"column":2}}},"6":{"name":"onlySummoners","line":48,"loc":{"start":{"line":48,"column":2},"end":{"line":56,"column":2}}},"7":{"name":"onlyWhenOpen","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":60,"column":2}}},"8":{"name":"constructor","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":79,"column":2}}},"9":{"name":"exit","line":81,"loc":{"start":{"line":81,"column":2},"end":{"line":92,"column":2}}},"10":{"name":"initializeToken","line":101,"loc":{"start":{"line":94,"column":2},"end":{"line":121,"column":2}}},"11":{"name":"join","line":123,"loc":{"start":{"line":123,"column":2},"end":{"line":165,"column":2}}},"12":{"name":"setController","line":167,"loc":{"start":{"line":167,"column":2},"end":{"line":172,"column":2}}},"13":{"name":"setMaxVotingLambda","line":174,"loc":{"start":{"line":174,"column":2},"end":{"line":176,"column":2}}},"14":{"name":"seedSummoning","line":185,"loc":{"start":{"line":180,"column":2},"end":{"line":192,"column":2}}},"15":{"name":"summon","line":194,"loc":{"start":{"line":194,"column":2},"end":{"line":209,"column":2}}},"16":{"name":"getDAO","line":213,"loc":{"start":{"line":213,"column":2},"end":{"line":215,"column":2}}},"17":{"name":"getEcosystem","line":217,"loc":{"start":{"line":217,"column":2},"end":{"line":219,"column":2}}},"18":{"name":"_getDAO","line":223,"loc":{"start":{"line":223,"column":2},"end":{"line":226,"column":2}}},"19":{"name":"_getEcosystem","line":228,"loc":{"start":{"line":228,"column":2},"end":{"line":230,"column":2}}},"20":{"name":"_getToken","line":232,"loc":{"start":{"line":232,"column":2},"end":{"line":236,"column":2}}},"21":{"name":null,"line":240,"loc":{"start":{"line":240,"column":2},"end":{"line":240,"column":31}}}},"statementMap":{"1":{"start":{"line":24,"column":4},"end":{"line":24,"column":39}},"2":{"start":{"line":25,"column":4},"end":{"line":25,"column":60}},"3":{"start":{"line":29,"column":4},"end":{"line":29,"column":57}},"4":{"start":{"line":30,"column":4},"end":{"line":30,"column":913}},"5":{"start":{"line":32,"column":4},"end":{"line":32,"column":77}},"6":{"start":{"line":36,"column":4},"end":{"line":36,"column":39}},"7":{"start":{"line":37,"column":4},"end":{"line":37,"column":73}},"8":{"start":{"line":41,"column":4},"end":{"line":41,"column":67}},"9":{"start":{"line":45,"column":4},"end":{"line":45,"column":63}},"10":{"start":{"line":49,"column":4},"end":{"line":49,"column":57}},"11":{"start":{"line":50,"column":4},"end":{"line":50,"column":52}},"12":{"start":{"line":51,"column":4},"end":{"line":51,"column":79}},"13":{"start":{"line":52,"column":4},"end":{"line":52,"column":64}},"14":{"start":{"line":54,"column":4},"end":{"line":54,"column":55}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":71}},"16":{"start":{"line":69,"column":4},"end":{"line":69,"column":49}},"17":{"start":{"line":70,"column":4},"end":{"line":70,"column":27}},"18":{"start":{"line":71,"column":4},"end":{"line":71,"column":24}},"19":{"start":{"line":72,"column":4},"end":{"line":72,"column":98}},"20":{"start":{"line":73,"column":4},"end":{"line":73,"column":40}},"21":{"start":{"line":74,"column":4},"end":{"line":74,"column":25}},"22":{"start":{"line":76,"column":4},"end":{"line":76,"column":74}},"23":{"start":{"line":77,"column":4},"end":{"line":77,"column":79}},"24":{"start":{"line":78,"column":4},"end":{"line":78,"column":74}},"25":{"start":{"line":83,"column":4},"end":{"line":83,"column":45}},"26":{"start":{"line":84,"column":4},"end":{"line":84,"column":77}},"27":{"start":{"line":85,"column":4},"end":{"line":85,"column":53}},"28":{"start":{"line":88,"column":4},"end":{"line":88,"column":72}},"29":{"start":{"line":89,"column":4},"end":{"line":89,"column":86}},"30":{"start":{"line":91,"column":4},"end":{"line":91,"column":41}},"31":{"start":{"line":102,"column":4},"end":{"line":102,"column":88}},"32":{"start":{"line":103,"column":4},"end":{"line":103,"column":57}},"33":{"start":{"line":105,"column":4},"end":{"line":105,"column":3533}},"34":{"start":{"line":116,"column":4},"end":{"line":116,"column":77}},"35":{"start":{"line":117,"column":4},"end":{"line":117,"column":38}},"36":{"start":{"line":118,"column":4},"end":{"line":118,"column":38}},"37":{"start":{"line":120,"column":4},"end":{"line":120,"column":51}},"38":{"start":{"line":124,"column":4},"end":{"line":124,"column":45}},"39":{"start":{"line":126,"column":4},"end":{"line":126,"column":4117}},"40":{"start":{"line":131,"column":4},"end":{"line":131,"column":77}},"41":{"start":{"line":132,"column":4},"end":{"line":132,"column":4328}},"42":{"start":{"line":141,"column":4},"end":{"line":141,"column":4774}},"43":{"start":{"line":151,"column":4},"end":{"line":151,"column":67}},"44":{"start":{"line":154,"column":4},"end":{"line":154,"column":65}},"45":{"start":{"line":155,"column":4},"end":{"line":155,"column":72}},"46":{"start":{"line":158,"column":4},"end":{"line":158,"column":57}},"47":{"start":{"line":159,"column":4},"end":{"line":159,"column":59}},"48":{"start":{"line":160,"column":4},"end":{"line":160,"column":18}},"49":{"start":{"line":161,"column":4},"end":{"line":161,"column":32}},"50":{"start":{"line":164,"column":4},"end":{"line":164,"column":53}},"51":{"start":{"line":168,"column":4},"end":{"line":168,"column":27}},"52":{"start":{"line":169,"column":4},"end":{"line":169,"column":83}},"53":{"start":{"line":170,"column":4},"end":{"line":170,"column":38}},"54":{"start":{"line":171,"column":4},"end":{"line":171,"column":38}},"55":{"start":{"line":175,"column":4},"end":{"line":175,"column":37}},"56":{"start":{"line":187,"column":4},"end":{"line":187,"column":45}},"57":{"start":{"line":189,"column":4},"end":{"line":189,"column":30}},"58":{"start":{"line":190,"column":4},"end":{"line":190,"column":62}},"59":{"start":{"line":191,"column":4},"end":{"line":191,"column":73}},"60":{"start":{"line":195,"column":4},"end":{"line":195,"column":98}},"61":{"start":{"line":197,"column":4},"end":{"line":197,"column":57}},"62":{"start":{"line":198,"column":4},"end":{"line":198,"column":52}},"63":{"start":{"line":199,"column":4},"end":{"line":199,"column":79}},"64":{"start":{"line":200,"column":4},"end":{"line":200,"column":6717}},"65":{"start":{"line":202,"column":4},"end":{"line":202,"column":77}},"66":{"start":{"line":204,"column":4},"end":{"line":204,"column":6837}},"67":{"start":{"line":205,"column":6},"end":{"line":205,"column":76}},"68":{"start":{"line":207,"column":4},"end":{"line":207,"column":22}},"69":{"start":{"line":208,"column":4},"end":{"line":208,"column":29}},"70":{"start":{"line":214,"column":4},"end":{"line":214,"column":20}},"71":{"start":{"line":218,"column":4},"end":{"line":218,"column":26}},"72":{"start":{"line":224,"column":4},"end":{"line":224,"column":57}},"73":{"start":{"line":225,"column":4},"end":{"line":225,"column":79}},"74":{"start":{"line":229,"column":4},"end":{"line":229,"column":70}},"75":{"start":{"line":233,"column":4},"end":{"line":233,"column":57}},"76":{"start":{"line":234,"column":4},"end":{"line":234,"column":7880}}},"branchMap":{"1":{"line":25,"type":"if","locations":[{"start":{"line":25,"column":4},"end":{"line":25,"column":4}},{"start":{"line":25,"column":4},"end":{"line":25,"column":4}}]},"2":{"line":32,"type":"if","locations":[{"start":{"line":32,"column":4},"end":{"line":32,"column":4}},{"start":{"line":32,"column":4},"end":{"line":32,"column":4}}]},"3":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":37,"column":4}},{"start":{"line":37,"column":4},"end":{"line":37,"column":4}}]},"4":{"line":41,"type":"if","locations":[{"start":{"line":41,"column":4},"end":{"line":41,"column":4}},{"start":{"line":41,"column":4},"end":{"line":41,"column":4}}]},"5":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":45,"column":4}},{"start":{"line":45,"column":4},"end":{"line":45,"column":4}}]},"6":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":54,"column":4}},{"start":{"line":54,"column":4},"end":{"line":54,"column":4}}]},"7":{"line":58,"type":"if","locations":[{"start":{"line":58,"column":4},"end":{"line":58,"column":4}},{"start":{"line":58,"column":4},"end":{"line":58,"column":4}}]},"8":{"line":102,"type":"if","locations":[{"start":{"line":102,"column":4},"end":{"line":102,"column":4}},{"start":{"line":102,"column":4},"end":{"line":102,"column":4}}]},"9":{"line":126,"type":"if","locations":[{"start":{"line":126,"column":4},"end":{"line":126,"column":4}},{"start":{"line":126,"column":4},"end":{"line":126,"column":4}}]},"10":{"line":151,"type":"if","locations":[{"start":{"line":151,"column":4},"end":{"line":151,"column":4}},{"start":{"line":151,"column":4},"end":{"line":151,"column":4}}]},"11":{"line":195,"type":"if","locations":[{"start":{"line":195,"column":4},"end":{"line":195,"column":4}},{"start":{"line":195,"column":4},"end":{"line":195,"column":4}}]}}},"src/core/ElasticDAOFactory.sol":{"l":{"21":0,"22":0,"26":0,"27":0,"46":0,"50":0,"52":0,"53":0,"54":0,"58":0,"59":0,"63":0,"65":0,"66":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAOFactory.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0},"b":{"1":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0},"fnMap":{"1":{"name":"onlyDeployer","line":20,"loc":{"start":{"line":20,"column":2},"end":{"line":23,"column":2}}},"2":{"name":"constructor","line":25,"loc":{"start":{"line":25,"column":2},"end":{"line":28,"column":2}}},"3":{"name":"deployDAOAndToken","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":55,"column":2}}},"4":{"name":"updateFeeAddress","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":60,"column":2}}},"5":{"name":"collectFees","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":67,"column":2}}},"6":{"name":null,"line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":71,"column":31}}}},"statementMap":{"1":{"start":{"line":21,"column":4},"end":{"line":21,"column":63}},"2":{"start":{"line":26,"column":4},"end":{"line":26,"column":24}},"3":{"start":{"line":27,"column":4},"end":{"line":27,"column":49}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":1354}},"5":{"start":{"line":50,"column":4},"end":{"line":50,"column":96}},"6":{"start":{"line":52,"column":4},"end":{"line":52,"column":49}},"7":{"start":{"line":53,"column":4},"end":{"line":53,"column":55}},"8":{"start":{"line":54,"column":4},"end":{"line":54,"column":41}},"9":{"start":{"line":58,"column":4},"end":{"line":58,"column":37}},"10":{"start":{"line":59,"column":4},"end":{"line":59,"column":40}},"11":{"start":{"line":63,"column":4},"end":{"line":63,"column":42}},"12":{"start":{"line":65,"column":4},"end":{"line":65,"column":30}},"13":{"start":{"line":66,"column":4},"end":{"line":66,"column":51}}},"branchMap":{"1":{"line":21,"type":"if","locations":[{"start":{"line":21,"column":4},"end":{"line":21,"column":4}},{"start":{"line":21,"column":4},"end":{"line":21,"column":4}}]}}},"src/interfaces/IElasticToken.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IElasticToken.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/interfaces/IERC20.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IERC20.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/libraries/ElasticMath.sol":{"l":{"17":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"48":0,"49":0,"51":0,"52":0,"54":0,"55":0,"57":0,"58":0,"60":0,"61":0,"63":0,"64":0,"66":0,"67":0,"69":0,"70":0,"72":0,"73":0,"75":0,"83":0,"101":0,"114":0,"131":0,"141":0,"151":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/ElasticMath.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0},"b":{},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0},"fnMap":{"1":{"name":"capitalDelta","line":12,"loc":{"start":{"line":12,"column":2},"end":{"line":18,"column":2}}},"2":{"name":"deltaE","line":33,"loc":{"start":{"line":33,"column":2},"end":{"line":76,"column":2}}},"3":{"name":"lambdaFromT","line":78,"loc":{"start":{"line":78,"column":2},"end":{"line":84,"column":2}}},"4":{"name":"mDash","line":96,"loc":{"start":{"line":96,"column":2},"end":{"line":102,"column":2}}},"5":{"name":"revamp","line":113,"loc":{"start":{"line":113,"column":2},"end":{"line":115,"column":2}}},"6":{"name":"t","line":126,"loc":{"start":{"line":126,"column":2},"end":{"line":132,"column":2}}},"7":{"name":"wmul","line":140,"loc":{"start":{"line":140,"column":2},"end":{"line":142,"column":2}}},"8":{"name":"wdiv","line":150,"loc":{"start":{"line":150,"column":2},"end":{"line":152,"column":2}}}},"statementMap":{"1":{"start":{"line":17,"column":4},"end":{"line":17,"column":53}},"2":{"start":{"line":41,"column":4},"end":{"line":41,"column":54}},"3":{"start":{"line":42,"column":4},"end":{"line":42,"column":66}},"4":{"start":{"line":43,"column":4},"end":{"line":43,"column":34}},"5":{"start":{"line":44,"column":4},"end":{"line":44,"column":52}},"6":{"start":{"line":45,"column":4},"end":{"line":45,"column":44}},"7":{"start":{"line":46,"column":4},"end":{"line":46,"column":34}},"8":{"start":{"line":48,"column":4},"end":{"line":48,"column":58}},"9":{"start":{"line":49,"column":4},"end":{"line":49,"column":52}},"10":{"start":{"line":51,"column":4},"end":{"line":51,"column":42}},"11":{"start":{"line":52,"column":4},"end":{"line":52,"column":33}},"12":{"start":{"line":54,"column":4},"end":{"line":54,"column":34}},"13":{"start":{"line":55,"column":4},"end":{"line":55,"column":34}},"14":{"start":{"line":57,"column":4},"end":{"line":57,"column":31}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":34}},"16":{"start":{"line":60,"column":4},"end":{"line":60,"column":44}},"17":{"start":{"line":61,"column":4},"end":{"line":61,"column":34}},"18":{"start":{"line":63,"column":4},"end":{"line":63,"column":26}},"19":{"start":{"line":64,"column":4},"end":{"line":64,"column":34}},"20":{"start":{"line":66,"column":4},"end":{"line":66,"column":35}},"21":{"start":{"line":67,"column":4},"end":{"line":67,"column":34}},"22":{"start":{"line":69,"column":4},"end":{"line":69,"column":34}},"23":{"start":{"line":70,"column":4},"end":{"line":70,"column":34}},"24":{"start":{"line":72,"column":4},"end":{"line":72,"column":27}},"25":{"start":{"line":73,"column":4},"end":{"line":73,"column":54}},"26":{"start":{"line":75,"column":4},"end":{"line":75,"column":22}},"27":{"start":{"line":83,"column":4},"end":{"line":83,"column":30}},"28":{"start":{"line":101,"column":4},"end":{"line":101,"column":44}},"29":{"start":{"line":114,"column":4},"end":{"line":114,"column":57}},"30":{"start":{"line":131,"column":4},"end":{"line":131,"column":35}},"31":{"start":{"line":141,"column":4},"end":{"line":141,"column":90}},"32":{"start":{"line":151,"column":4},"end":{"line":151,"column":72}}},"branchMap":{}},"src/libraries/SafeMath.sol":{"l":{"29":0,"30":0,"32":0,"46":0,"64":0,"65":0,"67":0,"84":0,"85":0,"88":0,"89":0,"91":0,"107":0,"127":0,"128":0,"131":0,"147":0,"167":0,"168":0,"172":0,"173":0,"175":0,"177":0,"179":0,"180":0,"181":0,"189":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/SafeMath.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0},"fnMap":{"1":{"name":"add","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":33,"column":2}}},"2":{"name":"sub","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":2}}},"3":{"name":"sub","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":68,"column":2}}},"4":{"name":"mul","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":92,"column":2}}},"5":{"name":"div","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":108,"column":2}}},"6":{"name":"div","line":122,"loc":{"start":{"line":122,"column":2},"end":{"line":132,"column":2}}},"7":{"name":"mod","line":146,"loc":{"start":{"line":146,"column":2},"end":{"line":148,"column":2}}},"8":{"name":"mod","line":162,"loc":{"start":{"line":162,"column":2},"end":{"line":169,"column":2}}},"9":{"name":"pow","line":171,"loc":{"start":{"line":171,"column":2},"end":{"line":183,"column":2}}},"10":{"name":"max","line":188,"loc":{"start":{"line":188,"column":2},"end":{"line":190,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":21}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":49}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":12}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":54}},"5":{"start":{"line":64,"column":4},"end":{"line":64,"column":32}},"6":{"start":{"line":65,"column":4},"end":{"line":65,"column":21}},"7":{"start":{"line":67,"column":4},"end":{"line":67,"column":12}},"8":{"start":{"line":84,"column":4},"end":{"line":84,"column":2356}},"9":{"start":{"line":85,"column":6},"end":{"line":85,"column":14}},"10":{"start":{"line":88,"column":4},"end":{"line":88,"column":21}},"11":{"start":{"line":89,"column":4},"end":{"line":89,"column":59}},"12":{"start":{"line":91,"column":4},"end":{"line":91,"column":12}},"13":{"start":{"line":107,"column":4},"end":{"line":107,"column":50}},"14":{"start":{"line":127,"column":4},"end":{"line":127,"column":31}},"15":{"start":{"line":128,"column":4},"end":{"line":128,"column":21}},"16":{"start":{"line":131,"column":4},"end":{"line":131,"column":12}},"17":{"start":{"line":147,"column":4},"end":{"line":147,"column":48}},"18":{"start":{"line":167,"column":4},"end":{"line":167,"column":32}},"19":{"start":{"line":168,"column":4},"end":{"line":168,"column":16}},"20":{"start":{"line":172,"column":4},"end":{"line":172,"column":5030}},"21":{"start":{"line":173,"column":6},"end":{"line":173,"column":14}},"22":{"start":{"line":174,"column":11},"end":{"line":174,"column":5078}},"23":{"start":{"line":175,"column":6},"end":{"line":175,"column":17}},"24":{"start":{"line":176,"column":11},"end":{"line":176,"column":5129}},"25":{"start":{"line":177,"column":6},"end":{"line":177,"column":14}},"26":{"start":{"line":179,"column":6},"end":{"line":179,"column":22}},"27":{"start":{"line":180,"column":6},"end":{"line":180,"column":71}},"28":{"start":{"line":180,"column":55},"end":{"line":180,"column":70}},"29":{"start":{"line":181,"column":6},"end":{"line":181,"column":14}},"30":{"start":{"line":189,"column":4},"end":{"line":189,"column":25}}},"branchMap":{"1":{"line":30,"type":"if","locations":[{"start":{"line":30,"column":4},"end":{"line":30,"column":4}},{"start":{"line":30,"column":4},"end":{"line":30,"column":4}}]},"2":{"line":64,"type":"if","locations":[{"start":{"line":64,"column":4},"end":{"line":64,"column":4}},{"start":{"line":64,"column":4},"end":{"line":64,"column":4}}]},"3":{"line":84,"type":"if","locations":[{"start":{"line":84,"column":4},"end":{"line":84,"column":4}},{"start":{"line":84,"column":4},"end":{"line":84,"column":4}}]},"4":{"line":89,"type":"if","locations":[{"start":{"line":89,"column":4},"end":{"line":89,"column":4}},{"start":{"line":89,"column":4},"end":{"line":89,"column":4}}]},"5":{"line":127,"type":"if","locations":[{"start":{"line":127,"column":4},"end":{"line":127,"column":4}},{"start":{"line":127,"column":4},"end":{"line":127,"column":4}}]},"6":{"line":167,"type":"if","locations":[{"start":{"line":167,"column":4},"end":{"line":167,"column":4}},{"start":{"line":167,"column":4},"end":{"line":167,"column":4}}]},"7":{"line":172,"type":"if","locations":[{"start":{"line":172,"column":4},"end":{"line":172,"column":4}},{"start":{"line":172,"column":4},"end":{"line":172,"column":4}}]},"8":{"line":174,"type":"if","locations":[{"start":{"line":174,"column":11},"end":{"line":174,"column":11}},{"start":{"line":174,"column":11},"end":{"line":174,"column":11}}]},"9":{"line":176,"type":"if","locations":[{"start":{"line":176,"column":11},"end":{"line":176,"column":11}},{"start":{"line":176,"column":11},"end":{"line":176,"column":11}}]}}},"src/models/Balance.sol":{"l":{"35":0,"36":0,"37":0,"38":0,"41":0,"42":0,"44":0,"51":0,"52":0,"53":0,"55":0,"64":0,"72":0,"74":0,"80":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Balance.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0},"b":{"1":[0,0]},"f":{"1":0,"2":0,"3":0},"fnMap":{"1":{"name":"deserialize","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":56,"column":2}}},"2":{"name":"exists","line":58,"loc":{"start":{"line":58,"column":2},"end":{"line":65,"column":2}}},"3":{"name":"serialize","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":95,"column":2}}}},"statementMap":{"1":{"start":{"line":35,"column":4},"end":{"line":35,"column":36}},"2":{"start":{"line":36,"column":4},"end":{"line":36,"column":32}},"3":{"start":{"line":37,"column":4},"end":{"line":37,"column":38}},"4":{"start":{"line":38,"column":4},"end":{"line":38,"column":1214}},"5":{"start":{"line":41,"column":4},"end":{"line":41,"column":24}},"6":{"start":{"line":42,"column":4},"end":{"line":42,"column":36}},"7":{"start":{"line":44,"column":4},"end":{"line":44,"column":1419}},"8":{"start":{"line":51,"column":4},"end":{"line":51,"column":36}},"9":{"start":{"line":52,"column":4},"end":{"line":52,"column":34}},"10":{"start":{"line":53,"column":4},"end":{"line":53,"column":34}},"11":{"start":{"line":55,"column":4},"end":{"line":55,"column":17}},"12":{"start":{"line":64,"column":4},"end":{"line":64,"column":15}},"13":{"start":{"line":72,"column":4},"end":{"line":72,"column":71}},"14":{"start":{"line":74,"column":4},"end":{"line":74,"column":2167}},"15":{"start":{"line":80,"column":4},"end":{"line":80,"column":2333}},"16":{"start":{"line":85,"column":4},"end":{"line":85,"column":57}},"17":{"start":{"line":86,"column":4},"end":{"line":86,"column":54}},"18":{"start":{"line":87,"column":4},"end":{"line":87,"column":50}},"19":{"start":{"line":88,"column":4},"end":{"line":88,"column":34}},"20":{"start":{"line":89,"column":4},"end":{"line":89,"column":34}},"21":{"start":{"line":90,"column":4},"end":{"line":90,"column":50}},"22":{"start":{"line":91,"column":4},"end":{"line":91,"column":42}},"23":{"start":{"line":92,"column":4},"end":{"line":92,"column":2815}}},"branchMap":{"1":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":72,"column":4}},{"start":{"line":72,"column":4},"end":{"line":72,"column":4}}]}}},"src/models/BalanceMultipliers.sol":{"l":{"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"45":0,"53":0,"55":0,"59":0,"60":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/BalanceMultipliers.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0},"b":{"1":[0,0]},"f":{"1":0,"2":0,"3":0},"fnMap":{"1":{"name":"deserialize","line":26,"loc":{"start":{"line":26,"column":2},"end":{"line":38,"column":2}}},"2":{"name":"exists","line":40,"loc":{"start":{"line":40,"column":2},"end":{"line":46,"column":2}}},"3":{"name":"serialize","line":52,"loc":{"start":{"line":52,"column":2},"end":{"line":61,"column":2}}}},"statementMap":{"1":{"start":{"line":31,"column":4},"end":{"line":31,"column":36}},"2":{"start":{"line":32,"column":4},"end":{"line":32,"column":32}},"3":{"start":{"line":33,"column":4},"end":{"line":33,"column":32}},"4":{"start":{"line":34,"column":4},"end":{"line":34,"column":76}},"5":{"start":{"line":35,"column":4},"end":{"line":35,"column":76}},"6":{"start":{"line":36,"column":4},"end":{"line":36,"column":24}},"7":{"start":{"line":37,"column":4},"end":{"line":37,"column":17}},"8":{"start":{"line":45,"column":4},"end":{"line":45,"column":15}},"9":{"start":{"line":53,"column":4},"end":{"line":53,"column":90}},"10":{"start":{"line":55,"column":4},"end":{"line":55,"column":1650}},"11":{"start":{"line":59,"column":4},"end":{"line":59,"column":81}},"12":{"start":{"line":60,"column":4},"end":{"line":60,"column":81}}},"branchMap":{"1":{"line":53,"type":"if","locations":[{"start":{"line":53,"column":4},"end":{"line":53,"column":4}},{"start":{"line":53,"column":4},"end":{"line":53,"column":4}}]}}},"src/models/DAO.sol":{"l":{"32":0,"33":0,"35":0,"36":0,"37":0,"38":0,"41":0,"50":0,"54":0,"64":0,"72":0,"77":0,"78":0,"79":0,"81":0,"82":0,"83":0,"84":0,"88":0,"92":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/DAO.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0},"fnMap":{"1":{"name":"deserialize","line":27,"loc":{"start":{"line":27,"column":2},"end":{"line":42,"column":2}}},"2":{"name":"exists","line":49,"loc":{"start":{"line":49,"column":2},"end":{"line":51,"column":2}}},"3":{"name":"getSummoner","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":55,"column":2}}},"4":{"name":"isSummoner","line":63,"loc":{"start":{"line":63,"column":2},"end":{"line":65,"column":2}}},"5":{"name":"serialize","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":89,"column":2}}},"6":{"name":"_exists","line":91,"loc":{"start":{"line":91,"column":2},"end":{"line":93,"column":2}}}},"statementMap":{"1":{"start":{"line":32,"column":4},"end":{"line":32,"column":22}},"2":{"start":{"line":33,"column":4},"end":{"line":33,"column":32}},"3":{"start":{"line":35,"column":4},"end":{"line":35,"column":903}},"4":{"start":{"line":36,"column":6},"end":{"line":36,"column":66}},"5":{"start":{"line":37,"column":6},"end":{"line":37,"column":90}},"6":{"start":{"line":38,"column":6},"end":{"line":38,"column":72}},"7":{"start":{"line":41,"column":4},"end":{"line":41,"column":17}},"8":{"start":{"line":50,"column":4},"end":{"line":50,"column":25}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":76}},"10":{"start":{"line":64,"column":4},"end":{"line":64,"column":82}},"11":{"start":{"line":72,"column":4},"end":{"line":72,"column":2142}},"12":{"start":{"line":77,"column":4},"end":{"line":77,"column":69}},"13":{"start":{"line":78,"column":4},"end":{"line":78,"column":93}},"14":{"start":{"line":79,"column":4},"end":{"line":79,"column":75}},"15":{"start":{"line":81,"column":4},"end":{"line":81,"column":2530}},"16":{"start":{"line":82,"column":6},"end":{"line":82,"column":2597}},"17":{"start":{"line":83,"column":8},"end":{"line":83,"column":89}},"18":{"start":{"line":84,"column":8},"end":{"line":84,"column":90}},"19":{"start":{"line":88,"column":4},"end":{"line":88,"column":62}},"20":{"start":{"line":92,"column":4},"end":{"line":92,"column":58}}},"branchMap":{"1":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":35,"column":4}},{"start":{"line":35,"column":4},"end":{"line":35,"column":4}}]},"2":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":72,"column":4}},{"start":{"line":72,"column":4},"end":{"line":72,"column":4}}]},"3":{"line":81,"type":"if","locations":[{"start":{"line":81,"column":4},"end":{"line":81,"column":4}},{"start":{"line":81,"column":4},"end":{"line":81,"column":4}}]}}},"src/models/Ecosystem.sol":{"l":{"35":0,"36":0,"37":0,"40":0,"43":0,"46":0,"49":0,"50":0,"53":0,"56":0,"61":0,"70":0,"78":0,"80":0,"87":0,"91":0,"95":0,"99":0,"100":0,"104":0,"108":0,"113":0,"117":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Ecosystem.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0},"b":{"1":[0,0],"2":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0},"fnMap":{"1":{"name":"deserialize","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":62,"column":2}}},"2":{"name":"exists","line":69,"loc":{"start":{"line":69,"column":2},"end":{"line":71,"column":2}}},"3":{"name":"serialize","line":77,"loc":{"start":{"line":77,"column":2},"end":{"line":114,"column":2}}},"4":{"name":"_exists","line":116,"loc":{"start":{"line":116,"column":2},"end":{"line":118,"column":2}}}},"statementMap":{"1":{"start":{"line":35,"column":4},"end":{"line":35,"column":1142}},"2":{"start":{"line":36,"column":6},"end":{"line":36,"column":36}},"3":{"start":{"line":37,"column":6},"end":{"line":37,"column":1217}},"4":{"start":{"line":40,"column":6},"end":{"line":40,"column":1345}},"5":{"start":{"line":43,"column":6},"end":{"line":43,"column":1495}},"6":{"start":{"line":46,"column":6},"end":{"line":46,"column":1623}},"7":{"start":{"line":49,"column":6},"end":{"line":49,"column":49}},"8":{"start":{"line":50,"column":6},"end":{"line":50,"column":1795}},"9":{"start":{"line":53,"column":6},"end":{"line":53,"column":1929}},"10":{"start":{"line":56,"column":6},"end":{"line":56,"column":2065}},"11":{"start":{"line":61,"column":4},"end":{"line":61,"column":17}},"12":{"start":{"line":70,"column":4},"end":{"line":70,"column":31}},"13":{"start":{"line":78,"column":4},"end":{"line":78,"column":50}},"14":{"start":{"line":80,"column":4},"end":{"line":80,"column":2684}},"15":{"start":{"line":87,"column":4},"end":{"line":87,"column":2891}},"16":{"start":{"line":91,"column":4},"end":{"line":91,"column":3018}},"17":{"start":{"line":95,"column":4},"end":{"line":95,"column":3167}},"18":{"start":{"line":99,"column":4},"end":{"line":99,"column":98}},"19":{"start":{"line":100,"column":4},"end":{"line":100,"column":3395}},"20":{"start":{"line":104,"column":4},"end":{"line":104,"column":3528}},"21":{"start":{"line":108,"column":4},"end":{"line":108,"column":3663}},"22":{"start":{"line":113,"column":4},"end":{"line":113,"column":68}},"23":{"start":{"line":117,"column":4},"end":{"line":117,"column":64}}},"branchMap":{"1":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":35,"column":4}},{"start":{"line":35,"column":4},"end":{"line":35,"column":4}}]},"2":{"line":80,"type":"if","locations":[{"start":{"line":80,"column":4},"end":{"line":80,"column":4}},{"start":{"line":80,"column":4},"end":{"line":80,"column":4}}]}}},"src/models/EternalModel.sol":{"l":{"30":0,"37":0,"39":0,"46":0,"53":0,"60":0,"67":0,"69":0,"81":0,"89":0,"97":0,"105":0,"113":0,"121":0,"132":0,"139":0,"141":0,"148":0,"155":0,"162":0,"169":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/EternalModel.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0},"fnMap":{"1":{"name":"getUint","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":31,"column":2}}},"2":{"name":"getString","line":36,"loc":{"start":{"line":36,"column":2},"end":{"line":40,"column":2}}},"3":{"name":"getAddress","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":2}}},"4":{"name":"getBool","line":52,"loc":{"start":{"line":52,"column":2},"end":{"line":54,"column":2}}},"5":{"name":"getInt","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":61,"column":2}}},"6":{"name":"getBytes","line":66,"loc":{"start":{"line":66,"column":2},"end":{"line":70,"column":2}}},"7":{"name":"setUint","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":82,"column":2}}},"8":{"name":"setString","line":88,"loc":{"start":{"line":88,"column":2},"end":{"line":90,"column":2}}},"9":{"name":"setAddress","line":96,"loc":{"start":{"line":96,"column":2},"end":{"line":98,"column":2}}},"10":{"name":"setBool","line":104,"loc":{"start":{"line":104,"column":2},"end":{"line":106,"column":2}}},"11":{"name":"setInt","line":112,"loc":{"start":{"line":112,"column":2},"end":{"line":114,"column":2}}},"12":{"name":"setBytes","line":120,"loc":{"start":{"line":120,"column":2},"end":{"line":122,"column":2}}},"13":{"name":"deleteUint","line":131,"loc":{"start":{"line":131,"column":2},"end":{"line":133,"column":2}}},"14":{"name":"deleteString","line":138,"loc":{"start":{"line":138,"column":2},"end":{"line":142,"column":2}}},"15":{"name":"deleteAddress","line":147,"loc":{"start":{"line":147,"column":2},"end":{"line":149,"column":2}}},"16":{"name":"deleteBool","line":154,"loc":{"start":{"line":154,"column":2},"end":{"line":156,"column":2}}},"17":{"name":"deleteInt","line":161,"loc":{"start":{"line":161,"column":2},"end":{"line":163,"column":2}}},"18":{"name":"deleteBytes","line":168,"loc":{"start":{"line":168,"column":2},"end":{"line":170,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":30}},"2":{"start":{"line":37,"column":4},"end":{"line":37,"column":52}},"3":{"start":{"line":39,"column":4},"end":{"line":39,"column":32}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":33}},"5":{"start":{"line":53,"column":4},"end":{"line":53,"column":30}},"6":{"start":{"line":60,"column":4},"end":{"line":60,"column":29}},"7":{"start":{"line":67,"column":4},"end":{"line":67,"column":52}},"8":{"start":{"line":69,"column":4},"end":{"line":69,"column":31}},"9":{"start":{"line":81,"column":4},"end":{"line":81,"column":31}},"10":{"start":{"line":89,"column":4},"end":{"line":89,"column":33}},"11":{"start":{"line":97,"column":4},"end":{"line":97,"column":34}},"12":{"start":{"line":105,"column":4},"end":{"line":105,"column":31}},"13":{"start":{"line":113,"column":4},"end":{"line":113,"column":30}},"14":{"start":{"line":121,"column":4},"end":{"line":121,"column":32}},"15":{"start":{"line":139,"column":4},"end":{"line":139,"column":52}}},"branchMap":{"1":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":37,"column":4}},{"start":{"line":37,"column":4},"end":{"line":37,"column":4}}]},"2":{"line":67,"type":"if","locations":[{"start":{"line":67,"column":4},"end":{"line":67,"column":4}},{"start":{"line":67,"column":4},"end":{"line":67,"column":4}}]},"3":{"line":139,"type":"if","locations":[{"start":{"line":139,"column":4},"end":{"line":139,"column":4}},{"start":{"line":139,"column":4},"end":{"line":139,"column":4}}]}}},"src/models/Token.sol":{"l":{"42":0,"43":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"58":0,"62":0,"66":0,"68":0,"69":0,"77":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"93":0,"99":0,"103":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Token.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0},"fnMap":{"1":{"name":"deserialize","line":37,"loc":{"start":{"line":37,"column":2},"end":{"line":59,"column":2}}},"2":{"name":"exists","line":61,"loc":{"start":{"line":61,"column":2},"end":{"line":63,"column":2}}},"3":{"name":"incrementCounter","line":65,"loc":{"start":{"line":65,"column":2},"end":{"line":70,"column":2}}},"4":{"name":"serialize","line":76,"loc":{"start":{"line":76,"column":2},"end":{"line":94,"column":2}}},"5":{"name":"updateNumberOfTokenHolders","line":96,"loc":{"start":{"line":96,"column":2},"end":{"line":100,"column":2}}},"6":{"name":"_exists","line":102,"loc":{"start":{"line":102,"column":2},"end":{"line":104,"column":2}}}},"statementMap":{"1":{"start":{"line":42,"column":4},"end":{"line":42,"column":22}},"2":{"start":{"line":43,"column":4},"end":{"line":43,"column":32}},"3":{"start":{"line":45,"column":4},"end":{"line":45,"column":1269}},"4":{"start":{"line":46,"column":6},"end":{"line":46,"column":70}},"5":{"start":{"line":47,"column":6},"end":{"line":47,"column":64}},"6":{"start":{"line":48,"column":6},"end":{"line":48,"column":76}},"7":{"start":{"line":49,"column":6},"end":{"line":49,"column":58}},"8":{"start":{"line":50,"column":6},"end":{"line":50,"column":68}},"9":{"start":{"line":51,"column":6},"end":{"line":51,"column":58}},"10":{"start":{"line":52,"column":6},"end":{"line":52,"column":90}},"11":{"start":{"line":53,"column":6},"end":{"line":53,"column":66}},"12":{"start":{"line":54,"column":6},"end":{"line":54,"column":96}},"13":{"start":{"line":55,"column":6},"end":{"line":55,"column":70}},"14":{"start":{"line":58,"column":4},"end":{"line":58,"column":17}},"15":{"start":{"line":62,"column":4},"end":{"line":62,"column":25}},"16":{"start":{"line":66,"column":4},"end":{"line":66,"column":65}},"17":{"start":{"line":68,"column":4},"end":{"line":68,"column":76}},"18":{"start":{"line":69,"column":4},"end":{"line":69,"column":83}},"19":{"start":{"line":77,"column":4},"end":{"line":77,"column":2629}},"20":{"start":{"line":84,"column":4},"end":{"line":84,"column":69}},"21":{"start":{"line":85,"column":4},"end":{"line":85,"column":73}},"22":{"start":{"line":86,"column":4},"end":{"line":86,"column":67}},"23":{"start":{"line":87,"column":4},"end":{"line":87,"column":79}},"24":{"start":{"line":88,"column":4},"end":{"line":88,"column":61}},"25":{"start":{"line":89,"column":4},"end":{"line":89,"column":71}},"26":{"start":{"line":90,"column":4},"end":{"line":90,"column":61}},"27":{"start":{"line":91,"column":4},"end":{"line":91,"column":93}},"28":{"start":{"line":93,"column":4},"end":{"line":93,"column":62}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":92}},"30":{"start":{"line":103,"column":4},"end":{"line":103,"column":58}}},"branchMap":{"1":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":45,"column":4}},{"start":{"line":45,"column":4},"end":{"line":45,"column":4}}]},"2":{"line":66,"type":"if","locations":[{"start":{"line":66,"column":4},"end":{"line":66,"column":4}},{"start":{"line":66,"column":4},"end":{"line":66,"column":4}}]},"3":{"line":77,"type":"if","locations":[{"start":{"line":77,"column":4},"end":{"line":77,"column":4}},{"start":{"line":77,"column":4},"end":{"line":77,"column":4}}]}}},"src/models/TokenHolder.sol":{"l":{"29":0,"30":0,"31":0,"33":0,"34":0,"35":0,"38":0,"46":0,"54":0,"56":0,"57":0,"59":0,"67":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/TokenHolder.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0},"b":{"1":[0,0],"2":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0},"fnMap":{"1":{"name":"deserialize","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":39,"column":2}}},"2":{"name":"exists","line":41,"loc":{"start":{"line":41,"column":2},"end":{"line":47,"column":2}}},"3":{"name":"serialize","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":60,"column":2}}},"4":{"name":"_exists","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":68,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":28}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":32}},"3":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":1003}},"5":{"start":{"line":34,"column":6},"end":{"line":34,"column":98}},"6":{"start":{"line":35,"column":6},"end":{"line":35,"column":96}},"7":{"start":{"line":38,"column":4},"end":{"line":38,"column":17}},"8":{"start":{"line":46,"column":4},"end":{"line":46,"column":48}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":71}},"10":{"start":{"line":56,"column":4},"end":{"line":56,"column":95}},"11":{"start":{"line":57,"column":4},"end":{"line":57,"column":93}},"12":{"start":{"line":59,"column":4},"end":{"line":59,"column":84}},"13":{"start":{"line":67,"column":4},"end":{"line":67,"column":74}}},"branchMap":{"1":{"line":33,"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":33,"column":4}},{"start":{"line":33,"column":4},"end":{"line":33,"column":4}}]},"2":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":54,"column":4}},{"start":{"line":54,"column":4},"end":{"line":54,"column":4}}]}}},"src/services/Configurator.sol":{"l":{"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"50":0,"52":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"63":0,"65":0,"66":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"103":0,"104":0,"105":0,"107":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/services/Configurator.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0},"b":{},"f":{"1":0,"2":0,"3":0},"fnMap":{"1":{"name":"buildDAO","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":39,"column":2}}},"2":{"name":"buildEcosystem","line":46,"loc":{"start":{"line":46,"column":2},"end":{"line":67,"column":2}}},"3":{"name":"buildToken","line":82,"loc":{"start":{"line":82,"column":2},"end":{"line":108,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":52}},"2":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":29}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":19}},"5":{"start":{"line":34,"column":4},"end":{"line":34,"column":45}},"6":{"start":{"line":35,"column":4},"end":{"line":35,"column":23}},"7":{"start":{"line":36,"column":4},"end":{"line":36,"column":29}},"8":{"start":{"line":37,"column":4},"end":{"line":37,"column":28}},"9":{"start":{"line":38,"column":4},"end":{"line":38,"column":14}},"10":{"start":{"line":50,"column":4},"end":{"line":50,"column":74}},"11":{"start":{"line":52,"column":4},"end":{"line":52,"column":36}},"12":{"start":{"line":55,"column":4},"end":{"line":55,"column":63}},"13":{"start":{"line":56,"column":4},"end":{"line":56,"column":85}},"14":{"start":{"line":57,"column":4},"end":{"line":57,"column":55}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":67}},"16":{"start":{"line":59,"column":4},"end":{"line":59,"column":71}},"17":{"start":{"line":60,"column":4},"end":{"line":60,"column":59}},"18":{"start":{"line":63,"column":4},"end":{"line":63,"column":63}},"19":{"start":{"line":65,"column":4},"end":{"line":65,"column":40}},"20":{"start":{"line":66,"column":4},"end":{"line":66,"column":20}},"21":{"start":{"line":91,"column":4},"end":{"line":91,"column":60}},"22":{"start":{"line":92,"column":4},"end":{"line":92,"column":21}},"23":{"start":{"line":93,"column":4},"end":{"line":93,"column":31}},"24":{"start":{"line":94,"column":4},"end":{"line":94,"column":33}},"25":{"start":{"line":95,"column":4},"end":{"line":95,"column":15}},"26":{"start":{"line":96,"column":4},"end":{"line":96,"column":19}},"27":{"start":{"line":97,"column":4},"end":{"line":97,"column":32}},"28":{"start":{"line":98,"column":4},"end":{"line":98,"column":47}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":21}},"30":{"start":{"line":100,"column":4},"end":{"line":100,"column":25}},"31":{"start":{"line":101,"column":4},"end":{"line":101,"column":97}},"32":{"start":{"line":103,"column":4},"end":{"line":103,"column":49}},"33":{"start":{"line":104,"column":4},"end":{"line":104,"column":68}},"34":{"start":{"line":105,"column":4},"end":{"line":105,"column":32}},"35":{"start":{"line":107,"column":4},"end":{"line":107,"column":16}}},"branchMap":{}},"src/tokens/ElasticGovernanceToken.sol":{"l":{"29":0,"30":0,"34":0,"35":0,"39":0,"40":0,"44":0,"45":0,"46":0,"47":0,"60":0,"79":0,"80":0,"89":0,"90":0,"91":0,"93":0,"102":0,"103":0,"107":0,"108":0,"109":0,"110":0,"112":0,"113":0,"115":0,"131":0,"132":0,"147":0,"148":0,"156":0,"166":0,"168":0,"170":0,"171":0,"181":0,"182":0,"192":0,"194":0,"209":0,"210":0,"218":0,"222":0,"226":0,"230":0,"239":0,"252":0,"253":0,"257":0,"258":0,"270":0,"271":0,"289":0,"291":0,"293":0,"294":0,"296":0,"299":0,"309":0,"310":0,"312":0,"314":0,"322":0,"323":0,"324":0,"325":0,"327":0,"331":0,"332":0,"333":0,"337":0,"338":0,"339":0,"340":0,"341":0,"343":0,"345":0,"346":0,"348":0,"349":0,"350":0,"354":0,"355":0,"356":0,"360":0,"361":0,"362":0,"363":0,"364":0,"366":0,"368":0,"370":0,"371":0,"373":0,"374":0,"375":0,"377":0,"385":0,"386":0,"387":0,"389":0,"390":0,"391":0,"392":0,"394":0,"395":0,"397":0,"398":0,"400":0,"401":0,"402":0,"403":0,"404":0,"406":0,"415":0,"416":0,"417":0,"418":0,"419":0,"420":0,"421":0,"422":0,"423":0,"424":0,"425":0,"427":0,"428":0,"430":0,"433":0,"435":0,"436":0,"438":0,"447":0,"448":0,"451":0,"452":0,"459":0,"463":0,"464":0,"473":0,"474":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/tokens/ElasticGovernanceToken.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0},"fnMap":{"1":{"name":"onlyDAO","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":31,"column":2}}},"2":{"name":"onlyDAOorBurner","line":33,"loc":{"start":{"line":33,"column":2},"end":{"line":36,"column":2}}},"3":{"name":"onlyDAOorMinter","line":38,"loc":{"start":{"line":38,"column":2},"end":{"line":41,"column":2}}},"4":{"name":"constructor","line":43,"loc":{"start":{"line":43,"column":2},"end":{"line":48,"column":2}}},"5":{"name":"allowance","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":61,"column":2}}},"6":{"name":"approve","line":78,"loc":{"start":{"line":78,"column":2},"end":{"line":81,"column":2}}},"7":{"name":"balanceOf","line":88,"loc":{"start":{"line":88,"column":2},"end":{"line":94,"column":2}}},"8":{"name":"balanceOfInShares","line":101,"loc":{"start":{"line":101,"column":2},"end":{"line":104,"column":2}}},"9":{"name":"balanceOfVoting","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":117,"column":2}}},"10":{"name":"burn","line":128,"loc":{"start":{"line":125,"column":2},"end":{"line":133,"column":2}}},"11":{"name":"burnShares","line":144,"loc":{"start":{"line":141,"column":2},"end":{"line":149,"column":2}}},"12":{"name":"decimals","line":155,"loc":{"start":{"line":155,"column":2},"end":{"line":157,"column":2}}},"13":{"name":"decreaseAllowance","line":165,"loc":{"start":{"line":165,"column":2},"end":{"line":172,"column":2}}},"14":{"name":"increaseAllowance","line":180,"loc":{"start":{"line":180,"column":2},"end":{"line":183,"column":2}}},"15":{"name":"mint","line":191,"loc":{"start":{"line":191,"column":2},"end":{"line":195,"column":2}}},"16":{"name":"mintShares","line":206,"loc":{"start":{"line":203,"column":2},"end":{"line":211,"column":2}}},"17":{"name":"name","line":217,"loc":{"start":{"line":217,"column":2},"end":{"line":219,"column":2}}},"18":{"name":"numberOfTokenHolders","line":221,"loc":{"start":{"line":221,"column":2},"end":{"line":223,"column":2}}},"19":{"name":"setBurner","line":225,"loc":{"start":{"line":225,"column":2},"end":{"line":227,"column":2}}},"20":{"name":"setMinter","line":229,"loc":{"start":{"line":229,"column":2},"end":{"line":231,"column":2}}},"21":{"name":"symbol","line":238,"loc":{"start":{"line":238,"column":2},"end":{"line":240,"column":2}}},"22":{"name":"totalSupply","line":251,"loc":{"start":{"line":251,"column":2},"end":{"line":254,"column":2}}},"23":{"name":"totalSupplyInShares","line":256,"loc":{"start":{"line":256,"column":2},"end":{"line":259,"column":2}}},"24":{"name":"transfer","line":269,"loc":{"start":{"line":269,"column":2},"end":{"line":272,"column":2}}},"25":{"name":"transferFrom","line":284,"loc":{"start":{"line":284,"column":2},"end":{"line":300,"column":2}}},"26":{"name":"_approve","line":304,"loc":{"start":{"line":304,"column":2},"end":{"line":315,"column":2}}},"27":{"name":"_balanceAt","line":317,"loc":{"start":{"line":317,"column":2},"end":{"line":328,"column":2}}},"28":{"name":"_burn","line":330,"loc":{"start":{"line":330,"column":2},"end":{"line":334,"column":2}}},"29":{"name":"_burnShares","line":336,"loc":{"start":{"line":336,"column":2},"end":{"line":351,"column":2}}},"30":{"name":"_mint","line":353,"loc":{"start":{"line":353,"column":2},"end":{"line":357,"column":2}}},"31":{"name":"_mintShares","line":359,"loc":{"start":{"line":359,"column":2},"end":{"line":378,"column":2}}},"32":{"name":"_transfer","line":380,"loc":{"start":{"line":380,"column":2},"end":{"line":407,"column":2}}},"33":{"name":"_updateBalance","line":409,"loc":{"start":{"line":409,"column":2},"end":{"line":439,"column":2}}},"34":{"name":"_updateNumberOfTokenHolders","line":441,"loc":{"start":{"line":441,"column":2},"end":{"line":454,"column":2}}},"35":{"name":"_getEcosystem","line":458,"loc":{"start":{"line":458,"column":2},"end":{"line":460,"column":2}}},"36":{"name":"_getTokenHolder","line":462,"loc":{"start":{"line":462,"column":2},"end":{"line":470,"column":2}}},"37":{"name":"_getToken","line":472,"loc":{"start":{"line":472,"column":2},"end":{"line":475,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":90}},"2":{"start":{"line":34,"column":4},"end":{"line":34,"column":90}},"3":{"start":{"line":39,"column":4},"end":{"line":39,"column":90}},"4":{"start":{"line":44,"column":4},"end":{"line":44,"column":23}},"5":{"start":{"line":45,"column":4},"end":{"line":45,"column":27}},"6":{"start":{"line":46,"column":4},"end":{"line":46,"column":49}},"7":{"start":{"line":47,"column":4},"end":{"line":47,"column":23}},"8":{"start":{"line":60,"column":4},"end":{"line":60,"column":40}},"9":{"start":{"line":79,"column":4},"end":{"line":79,"column":42}},"10":{"start":{"line":80,"column":4},"end":{"line":80,"column":15}},"11":{"start":{"line":89,"column":4},"end":{"line":89,"column":45}},"12":{"start":{"line":90,"column":4},"end":{"line":90,"column":71}},"13":{"start":{"line":91,"column":4},"end":{"line":91,"column":67}},"14":{"start":{"line":93,"column":4},"end":{"line":93,"column":12}},"15":{"start":{"line":102,"column":4},"end":{"line":102,"column":71}},"16":{"start":{"line":103,"column":4},"end":{"line":103,"column":29}},"17":{"start":{"line":107,"column":4},"end":{"line":107,"column":45}},"18":{"start":{"line":108,"column":4},"end":{"line":108,"column":71}},"19":{"start":{"line":109,"column":4},"end":{"line":109,"column":59}},"20":{"start":{"line":110,"column":4},"end":{"line":110,"column":58}},"21":{"start":{"line":112,"column":4},"end":{"line":112,"column":3845}},"22":{"start":{"line":113,"column":6},"end":{"line":113,"column":61}},"23":{"start":{"line":115,"column":6},"end":{"line":115,"column":64}},"24":{"start":{"line":131,"column":4},"end":{"line":131,"column":27}},"25":{"start":{"line":132,"column":4},"end":{"line":132,"column":15}},"26":{"start":{"line":147,"column":4},"end":{"line":147,"column":33}},"27":{"start":{"line":148,"column":4},"end":{"line":148,"column":15}},"28":{"start":{"line":156,"column":4},"end":{"line":156,"column":13}},"29":{"start":{"line":166,"column":4},"end":{"line":166,"column":92}},"30":{"start":{"line":168,"column":4},"end":{"line":168,"column":74}},"31":{"start":{"line":170,"column":4},"end":{"line":170,"column":47}},"32":{"start":{"line":171,"column":4},"end":{"line":171,"column":15}},"33":{"start":{"line":181,"column":4},"end":{"line":181,"column":95}},"34":{"start":{"line":182,"column":4},"end":{"line":182,"column":15}},"35":{"start":{"line":192,"column":4},"end":{"line":192,"column":27}},"36":{"start":{"line":194,"column":4},"end":{"line":194,"column":15}},"37":{"start":{"line":209,"column":4},"end":{"line":209,"column":33}},"38":{"start":{"line":210,"column":4},"end":{"line":210,"column":15}},"39":{"start":{"line":218,"column":4},"end":{"line":218,"column":27}},"40":{"start":{"line":222,"column":4},"end":{"line":222,"column":43}},"41":{"start":{"line":226,"column":4},"end":{"line":226,"column":19}},"42":{"start":{"line":230,"column":4},"end":{"line":230,"column":19}},"43":{"start":{"line":239,"column":4},"end":{"line":239,"column":29}},"44":{"start":{"line":252,"column":4},"end":{"line":252,"column":45}},"45":{"start":{"line":253,"column":4},"end":{"line":253,"column":56}},"46":{"start":{"line":257,"column":4},"end":{"line":257,"column":45}},"47":{"start":{"line":258,"column":4},"end":{"line":258,"column":23}},"48":{"start":{"line":270,"column":4},"end":{"line":270,"column":38}},"49":{"start":{"line":271,"column":4},"end":{"line":271,"column":15}},"50":{"start":{"line":289,"column":4},"end":{"line":289,"column":97}},"51":{"start":{"line":291,"column":4},"end":{"line":291,"column":33}},"52":{"start":{"line":293,"column":4},"end":{"line":293,"column":9096}},"53":{"start":{"line":294,"column":6},"end":{"line":294,"column":91}},"54":{"start":{"line":296,"column":6},"end":{"line":296,"column":68}},"55":{"start":{"line":299,"column":4},"end":{"line":299,"column":15}},"56":{"start":{"line":309,"column":4},"end":{"line":309,"column":72}},"57":{"start":{"line":310,"column":4},"end":{"line":310,"column":72}},"58":{"start":{"line":312,"column":4},"end":{"line":312,"column":42}},"59":{"start":{"line":314,"column":4},"end":{"line":314,"column":44}},"60":{"start":{"line":322,"column":4},"end":{"line":322,"column":45}},"61":{"start":{"line":323,"column":4},"end":{"line":323,"column":71}},"62":{"start":{"line":324,"column":4},"end":{"line":324,"column":57}},"63":{"start":{"line":325,"column":4},"end":{"line":325,"column":67}},"64":{"start":{"line":327,"column":4},"end":{"line":327,"column":82}},"65":{"start":{"line":331,"column":4},"end":{"line":331,"column":45}},"66":{"start":{"line":332,"column":4},"end":{"line":332,"column":76}},"67":{"start":{"line":333,"column":4},"end":{"line":333,"column":37}},"68":{"start":{"line":337,"column":4},"end":{"line":337,"column":57}},"69":{"start":{"line":338,"column":4},"end":{"line":338,"column":59}},"70":{"start":{"line":339,"column":4},"end":{"line":339,"column":84}},"71":{"start":{"line":340,"column":4},"end":{"line":340,"column":71}},"72":{"start":{"line":341,"column":4},"end":{"line":341,"column":52}},"73":{"start":{"line":343,"column":4},"end":{"line":343,"column":72}},"74":{"start":{"line":345,"column":4},"end":{"line":345,"column":58}},"75":{"start":{"line":346,"column":4},"end":{"line":346,"column":32}},"76":{"start":{"line":348,"column":4},"end":{"line":348,"column":83}},"77":{"start":{"line":349,"column":4},"end":{"line":349,"column":44}},"78":{"start":{"line":350,"column":4},"end":{"line":350,"column":84}},"79":{"start":{"line":354,"column":4},"end":{"line":354,"column":45}},"80":{"start":{"line":355,"column":4},"end":{"line":355,"column":76}},"81":{"start":{"line":356,"column":4},"end":{"line":356,"column":37}},"82":{"start":{"line":360,"column":4},"end":{"line":360,"column":57}},"83":{"start":{"line":361,"column":4},"end":{"line":361,"column":59}},"84":{"start":{"line":362,"column":4},"end":{"line":362,"column":84}},"85":{"start":{"line":363,"column":4},"end":{"line":363,"column":71}},"86":{"start":{"line":364,"column":4},"end":{"line":364,"column":52}},"87":{"start":{"line":366,"column":4},"end":{"line":366,"column":66}},"88":{"start":{"line":368,"column":4},"end":{"line":368,"column":71}},"89":{"start":{"line":370,"column":4},"end":{"line":370,"column":58}},"90":{"start":{"line":371,"column":4},"end":{"line":371,"column":32}},"91":{"start":{"line":373,"column":4},"end":{"line":373,"column":83}},"92":{"start":{"line":374,"column":4},"end":{"line":374,"column":44}},"93":{"start":{"line":375,"column":4},"end":{"line":375,"column":84}},"94":{"start":{"line":377,"column":4},"end":{"line":377,"column":47}},"95":{"start":{"line":385,"column":4},"end":{"line":385,"column":57}},"96":{"start":{"line":386,"column":4},"end":{"line":386,"column":59}},"97":{"start":{"line":387,"column":4},"end":{"line":387,"column":84}},"98":{"start":{"line":389,"column":4},"end":{"line":389,"column":72}},"99":{"start":{"line":390,"column":4},"end":{"line":390,"column":68}},"100":{"start":{"line":391,"column":4},"end":{"line":391,"column":60}},"101":{"start":{"line":392,"column":4},"end":{"line":392,"column":56}},"102":{"start":{"line":394,"column":4},"end":{"line":394,"column":76}},"103":{"start":{"line":395,"column":4},"end":{"line":395,"column":65}},"104":{"start":{"line":397,"column":4},"end":{"line":397,"column":79}},"105":{"start":{"line":398,"column":4},"end":{"line":398,"column":74}},"106":{"start":{"line":400,"column":4},"end":{"line":400,"column":83}},"107":{"start":{"line":401,"column":4},"end":{"line":401,"column":48}},"108":{"start":{"line":402,"column":4},"end":{"line":402,"column":46}},"109":{"start":{"line":403,"column":4},"end":{"line":403,"column":92}},"110":{"start":{"line":404,"column":4},"end":{"line":404,"column":88}},"111":{"start":{"line":406,"column":4},"end":{"line":406,"column":37}},"112":{"start":{"line":415,"column":4},"end":{"line":415,"column":57}},"113":{"start":{"line":416,"column":4},"end":{"line":416,"column":35}},"114":{"start":{"line":417,"column":4},"end":{"line":417,"column":37}},"115":{"start":{"line":418,"column":4},"end":{"line":418,"column":32}},"116":{"start":{"line":419,"column":4},"end":{"line":419,"column":39}},"117":{"start":{"line":420,"column":4},"end":{"line":420,"column":23}},"118":{"start":{"line":421,"column":4},"end":{"line":421,"column":23}},"119":{"start":{"line":422,"column":4},"end":{"line":422,"column":25}},"120":{"start":{"line":423,"column":4},"end":{"line":423,"column":37}},"121":{"start":{"line":424,"column":4},"end":{"line":424,"column":51}},"122":{"start":{"line":425,"column":4},"end":{"line":425,"column":63}},"123":{"start":{"line":427,"column":4},"end":{"line":427,"column":14338}},"124":{"start":{"line":428,"column":6},"end":{"line":428,"column":74}},"125":{"start":{"line":430,"column":6},"end":{"line":430,"column":74}},"126":{"start":{"line":433,"column":4},"end":{"line":433,"column":39}},"127":{"start":{"line":435,"column":4},"end":{"line":435,"column":60}},"128":{"start":{"line":436,"column":4},"end":{"line":436,"column":62}},"129":{"start":{"line":438,"column":4},"end":{"line":438,"column":23}},"130":{"start":{"line":447,"column":4},"end":{"line":447,"column":14924}},"131":{"start":{"line":448,"column":6},"end":{"line":448,"column":96}},"132":{"start":{"line":451,"column":4},"end":{"line":451,"column":15095}},"133":{"start":{"line":452,"column":6},"end":{"line":452,"column":96}},"134":{"start":{"line":459,"column":4},"end":{"line":459,"column":67}},"135":{"start":{"line":463,"column":4},"end":{"line":463,"column":57}},"136":{"start":{"line":464,"column":4},"end":{"line":464,"column":15598}},"137":{"start":{"line":473,"column":4},"end":{"line":473,"column":57}},"138":{"start":{"line":474,"column":4},"end":{"line":474,"column":83}}},"branchMap":{"1":{"line":29,"type":"if","locations":[{"start":{"line":29,"column":4},"end":{"line":29,"column":4}},{"start":{"line":29,"column":4},"end":{"line":29,"column":4}}]},"2":{"line":34,"type":"if","locations":[{"start":{"line":34,"column":4},"end":{"line":34,"column":4}},{"start":{"line":34,"column":4},"end":{"line":34,"column":4}}]},"3":{"line":39,"type":"if","locations":[{"start":{"line":39,"column":4},"end":{"line":39,"column":4}},{"start":{"line":39,"column":4},"end":{"line":39,"column":4}}]},"4":{"line":112,"type":"if","locations":[{"start":{"line":112,"column":4},"end":{"line":112,"column":4}},{"start":{"line":112,"column":4},"end":{"line":112,"column":4}}]},"5":{"line":168,"type":"if","locations":[{"start":{"line":168,"column":4},"end":{"line":168,"column":4}},{"start":{"line":168,"column":4},"end":{"line":168,"column":4}}]},"6":{"line":289,"type":"if","locations":[{"start":{"line":289,"column":4},"end":{"line":289,"column":4}},{"start":{"line":289,"column":4},"end":{"line":289,"column":4}}]},"7":{"line":293,"type":"if","locations":[{"start":{"line":293,"column":4},"end":{"line":293,"column":4}},{"start":{"line":293,"column":4},"end":{"line":293,"column":4}}]},"8":{"line":309,"type":"if","locations":[{"start":{"line":309,"column":4},"end":{"line":309,"column":4}},{"start":{"line":309,"column":4},"end":{"line":309,"column":4}}]},"9":{"line":310,"type":"if","locations":[{"start":{"line":310,"column":4},"end":{"line":310,"column":4}},{"start":{"line":310,"column":4},"end":{"line":310,"column":4}}]},"10":{"line":427,"type":"if","locations":[{"start":{"line":427,"column":4},"end":{"line":427,"column":4}},{"start":{"line":427,"column":4},"end":{"line":427,"column":4}}]},"11":{"line":447,"type":"if","locations":[{"start":{"line":447,"column":4},"end":{"line":447,"column":4}},{"start":{"line":447,"column":4},"end":{"line":447,"column":4}}]},"12":{"line":451,"type":"if","locations":[{"start":{"line":451,"column":4},"end":{"line":451,"column":4}},{"start":{"line":451,"column":4},"end":{"line":451,"column":4}}]}}}} \ No newline at end of file diff --git a/hardhat.config.js b/hardhat.config.js index 8e9922e..3813253 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -7,6 +7,7 @@ require('hardhat-gas-reporter'); require('@nomiclabs/hardhat-etherscan'); require('hardhat-deploy'); require('hardhat-contract-sizer'); +require('solidity-coverage'); const ETHERSCAN_API_KEY = process.env.ETHERSCAN || ''; diff --git a/package.json b/package.json index 0bd187d..86a33a8 100644 --- a/package.json +++ b/package.json @@ -50,6 +50,6 @@ "prettier": "2.2.1", "prettier-plugin-solidity": "1.0.0-beta.3", "solhint": "3.3.2", - "solidity-coverage": "0.7.14" + "solidity-coverage": "git://github.com/elasticdao/solidity-coverage.git#e0cdfce1478898a8440471768f304d9786db03e8" } } diff --git a/yarn.lock b/yarn.lock index 287687c..dffd3b6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8104,10 +8104,9 @@ solidity-comments-extractor@^0.0.4: resolved "https://registry.yarnpkg.com/solidity-comments-extractor/-/solidity-comments-extractor-0.0.4.tgz#ce420aef23641ffd0131c7d80ba85b6e1e42147e" integrity sha512-58glBODwXIKMaQ7rfcJOrWtFQMMOK28tJ0/LcB5Xhu7WtAxk4UX2fpgKPuaL41XjMp/y0gAa1MTLqk018wuSzA== -solidity-coverage@0.7.14: +"solidity-coverage@git://github.com/elasticdao/solidity-coverage.git#e0cdfce1478898a8440471768f304d9786db03e8": version "0.7.14" - resolved "https://registry.yarnpkg.com/solidity-coverage/-/solidity-coverage-0.7.14.tgz#88aa9d663dc82e9927275835703542a5e7931a03" - integrity sha512-2X9oNtu4yBbtDXtVe2tc9vYHtwON6QRqNvVylKdkhcJgAdCzP/OkJy9fWcWH/g3fnNCIOFssHoe0LPGZ2ppMZg== + resolved "git://github.com/elasticdao/solidity-coverage.git#e0cdfce1478898a8440471768f304d9786db03e8" dependencies: "@solidity-parser/parser" "^0.11.0" "@truffle/provider" "^0.2.24" From 7ee821d9c9965fb95d930784d6caeb1a030877b5 Mon Sep 17 00:00:00 2001 From: alleycatdev Date: Sun, 31 Jan 2021 11:42:39 -0500 Subject: [PATCH 012/118] fixes linting --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 86a33a8..291da6c 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,8 @@ "hardhat-deploy": "^0.7.0-beta.44", "hardhat-gas-reporter": "1.0.4", "scrypt": "6.0.3", - "solc": "0.7.2" + "solc": "0.7.2", + "solidity-coverage": "git://github.com/elasticdao/solidity-coverage.git#e0cdfce1478898a8440471768f304d9786db03e8" }, "devDependencies": { "chai": "4.2.0", @@ -49,7 +50,6 @@ "mocha": "8.2.1", "prettier": "2.2.1", "prettier-plugin-solidity": "1.0.0-beta.3", - "solhint": "3.3.2", - "solidity-coverage": "git://github.com/elasticdao/solidity-coverage.git#e0cdfce1478898a8440471768f304d9786db03e8" + "solhint": "3.3.2" } } From 2fde9dda161f7118d5d53cde256fbaca6ad6f1d2 Mon Sep 17 00:00:00 2001 From: alleycatdev Date: Mon, 1 Feb 2021 10:54:39 -0500 Subject: [PATCH 013/118] fixes coverage --- coverage.json | 2 +- hardhat.config.js | 1 + package.json | 6 ++--- src/libraries/ElasticMath.sol | 27 ++++++++------------ test/capitalDeltaTest.js | 9 ++++--- test/elasticDAOFactoryTest.js | 1 + yarn.lock | 47 +++++++++++++++++++++-------------- 7 files changed, 51 insertions(+), 42 deletions(-) diff --git a/coverage.json b/coverage.json index ec68565..e643c64 100644 --- a/coverage.json +++ b/coverage.json @@ -1 +1 @@ -{"src/core/ElasticDAO.sol":{"l":{"24":0,"25":0,"26":0,"29":0,"30":0,"32":0,"33":0,"36":0,"37":0,"38":0,"41":0,"42":0,"45":0,"46":0,"49":0,"50":0,"51":0,"52":0,"54":0,"55":0,"58":0,"59":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"76":0,"77":0,"78":0,"83":0,"84":0,"85":0,"88":0,"89":0,"91":0,"102":0,"103":0,"105":0,"116":0,"117":0,"118":0,"120":0,"124":0,"126":0,"131":0,"132":0,"141":0,"151":0,"154":0,"155":0,"158":0,"159":0,"160":0,"161":0,"164":0,"168":0,"169":0,"170":0,"171":0,"175":0,"187":0,"189":0,"190":0,"191":0,"195":0,"197":0,"198":0,"199":0,"200":0,"202":0,"204":0,"205":0,"207":0,"208":0,"214":0,"218":0,"224":0,"225":0,"229":0,"233":0,"234":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAO.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0},"fnMap":{"1":{"name":"onlyAfterSummoning","line":23,"loc":{"start":{"line":23,"column":2},"end":{"line":27,"column":2}}},"2":{"name":"onlyAfterTokenInitialized","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":34,"column":2}}},"3":{"name":"onlyBeforeSummoning","line":35,"loc":{"start":{"line":35,"column":2},"end":{"line":39,"column":2}}},"4":{"name":"onlyController","line":40,"loc":{"start":{"line":40,"column":2},"end":{"line":43,"column":2}}},"5":{"name":"onlyDeployer","line":44,"loc":{"start":{"line":44,"column":2},"end":{"line":47,"column":2}}},"6":{"name":"onlySummoners","line":48,"loc":{"start":{"line":48,"column":2},"end":{"line":56,"column":2}}},"7":{"name":"onlyWhenOpen","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":60,"column":2}}},"8":{"name":"constructor","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":79,"column":2}}},"9":{"name":"exit","line":81,"loc":{"start":{"line":81,"column":2},"end":{"line":92,"column":2}}},"10":{"name":"initializeToken","line":101,"loc":{"start":{"line":94,"column":2},"end":{"line":121,"column":2}}},"11":{"name":"join","line":123,"loc":{"start":{"line":123,"column":2},"end":{"line":165,"column":2}}},"12":{"name":"setController","line":167,"loc":{"start":{"line":167,"column":2},"end":{"line":172,"column":2}}},"13":{"name":"setMaxVotingLambda","line":174,"loc":{"start":{"line":174,"column":2},"end":{"line":176,"column":2}}},"14":{"name":"seedSummoning","line":185,"loc":{"start":{"line":180,"column":2},"end":{"line":192,"column":2}}},"15":{"name":"summon","line":194,"loc":{"start":{"line":194,"column":2},"end":{"line":209,"column":2}}},"16":{"name":"getDAO","line":213,"loc":{"start":{"line":213,"column":2},"end":{"line":215,"column":2}}},"17":{"name":"getEcosystem","line":217,"loc":{"start":{"line":217,"column":2},"end":{"line":219,"column":2}}},"18":{"name":"_getDAO","line":223,"loc":{"start":{"line":223,"column":2},"end":{"line":226,"column":2}}},"19":{"name":"_getEcosystem","line":228,"loc":{"start":{"line":228,"column":2},"end":{"line":230,"column":2}}},"20":{"name":"_getToken","line":232,"loc":{"start":{"line":232,"column":2},"end":{"line":236,"column":2}}},"21":{"name":null,"line":240,"loc":{"start":{"line":240,"column":2},"end":{"line":240,"column":31}}}},"statementMap":{"1":{"start":{"line":24,"column":4},"end":{"line":24,"column":39}},"2":{"start":{"line":25,"column":4},"end":{"line":25,"column":60}},"3":{"start":{"line":29,"column":4},"end":{"line":29,"column":57}},"4":{"start":{"line":30,"column":4},"end":{"line":30,"column":913}},"5":{"start":{"line":32,"column":4},"end":{"line":32,"column":77}},"6":{"start":{"line":36,"column":4},"end":{"line":36,"column":39}},"7":{"start":{"line":37,"column":4},"end":{"line":37,"column":73}},"8":{"start":{"line":41,"column":4},"end":{"line":41,"column":67}},"9":{"start":{"line":45,"column":4},"end":{"line":45,"column":63}},"10":{"start":{"line":49,"column":4},"end":{"line":49,"column":57}},"11":{"start":{"line":50,"column":4},"end":{"line":50,"column":52}},"12":{"start":{"line":51,"column":4},"end":{"line":51,"column":79}},"13":{"start":{"line":52,"column":4},"end":{"line":52,"column":64}},"14":{"start":{"line":54,"column":4},"end":{"line":54,"column":55}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":71}},"16":{"start":{"line":69,"column":4},"end":{"line":69,"column":49}},"17":{"start":{"line":70,"column":4},"end":{"line":70,"column":27}},"18":{"start":{"line":71,"column":4},"end":{"line":71,"column":24}},"19":{"start":{"line":72,"column":4},"end":{"line":72,"column":98}},"20":{"start":{"line":73,"column":4},"end":{"line":73,"column":40}},"21":{"start":{"line":74,"column":4},"end":{"line":74,"column":25}},"22":{"start":{"line":76,"column":4},"end":{"line":76,"column":74}},"23":{"start":{"line":77,"column":4},"end":{"line":77,"column":79}},"24":{"start":{"line":78,"column":4},"end":{"line":78,"column":74}},"25":{"start":{"line":83,"column":4},"end":{"line":83,"column":45}},"26":{"start":{"line":84,"column":4},"end":{"line":84,"column":77}},"27":{"start":{"line":85,"column":4},"end":{"line":85,"column":53}},"28":{"start":{"line":88,"column":4},"end":{"line":88,"column":72}},"29":{"start":{"line":89,"column":4},"end":{"line":89,"column":86}},"30":{"start":{"line":91,"column":4},"end":{"line":91,"column":41}},"31":{"start":{"line":102,"column":4},"end":{"line":102,"column":88}},"32":{"start":{"line":103,"column":4},"end":{"line":103,"column":57}},"33":{"start":{"line":105,"column":4},"end":{"line":105,"column":3533}},"34":{"start":{"line":116,"column":4},"end":{"line":116,"column":77}},"35":{"start":{"line":117,"column":4},"end":{"line":117,"column":38}},"36":{"start":{"line":118,"column":4},"end":{"line":118,"column":38}},"37":{"start":{"line":120,"column":4},"end":{"line":120,"column":51}},"38":{"start":{"line":124,"column":4},"end":{"line":124,"column":45}},"39":{"start":{"line":126,"column":4},"end":{"line":126,"column":4117}},"40":{"start":{"line":131,"column":4},"end":{"line":131,"column":77}},"41":{"start":{"line":132,"column":4},"end":{"line":132,"column":4328}},"42":{"start":{"line":141,"column":4},"end":{"line":141,"column":4774}},"43":{"start":{"line":151,"column":4},"end":{"line":151,"column":67}},"44":{"start":{"line":154,"column":4},"end":{"line":154,"column":65}},"45":{"start":{"line":155,"column":4},"end":{"line":155,"column":72}},"46":{"start":{"line":158,"column":4},"end":{"line":158,"column":57}},"47":{"start":{"line":159,"column":4},"end":{"line":159,"column":59}},"48":{"start":{"line":160,"column":4},"end":{"line":160,"column":18}},"49":{"start":{"line":161,"column":4},"end":{"line":161,"column":32}},"50":{"start":{"line":164,"column":4},"end":{"line":164,"column":53}},"51":{"start":{"line":168,"column":4},"end":{"line":168,"column":27}},"52":{"start":{"line":169,"column":4},"end":{"line":169,"column":83}},"53":{"start":{"line":170,"column":4},"end":{"line":170,"column":38}},"54":{"start":{"line":171,"column":4},"end":{"line":171,"column":38}},"55":{"start":{"line":175,"column":4},"end":{"line":175,"column":37}},"56":{"start":{"line":187,"column":4},"end":{"line":187,"column":45}},"57":{"start":{"line":189,"column":4},"end":{"line":189,"column":30}},"58":{"start":{"line":190,"column":4},"end":{"line":190,"column":62}},"59":{"start":{"line":191,"column":4},"end":{"line":191,"column":73}},"60":{"start":{"line":195,"column":4},"end":{"line":195,"column":98}},"61":{"start":{"line":197,"column":4},"end":{"line":197,"column":57}},"62":{"start":{"line":198,"column":4},"end":{"line":198,"column":52}},"63":{"start":{"line":199,"column":4},"end":{"line":199,"column":79}},"64":{"start":{"line":200,"column":4},"end":{"line":200,"column":6717}},"65":{"start":{"line":202,"column":4},"end":{"line":202,"column":77}},"66":{"start":{"line":204,"column":4},"end":{"line":204,"column":6837}},"67":{"start":{"line":205,"column":6},"end":{"line":205,"column":76}},"68":{"start":{"line":207,"column":4},"end":{"line":207,"column":22}},"69":{"start":{"line":208,"column":4},"end":{"line":208,"column":29}},"70":{"start":{"line":214,"column":4},"end":{"line":214,"column":20}},"71":{"start":{"line":218,"column":4},"end":{"line":218,"column":26}},"72":{"start":{"line":224,"column":4},"end":{"line":224,"column":57}},"73":{"start":{"line":225,"column":4},"end":{"line":225,"column":79}},"74":{"start":{"line":229,"column":4},"end":{"line":229,"column":70}},"75":{"start":{"line":233,"column":4},"end":{"line":233,"column":57}},"76":{"start":{"line":234,"column":4},"end":{"line":234,"column":7880}}},"branchMap":{"1":{"line":25,"type":"if","locations":[{"start":{"line":25,"column":4},"end":{"line":25,"column":4}},{"start":{"line":25,"column":4},"end":{"line":25,"column":4}}]},"2":{"line":32,"type":"if","locations":[{"start":{"line":32,"column":4},"end":{"line":32,"column":4}},{"start":{"line":32,"column":4},"end":{"line":32,"column":4}}]},"3":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":37,"column":4}},{"start":{"line":37,"column":4},"end":{"line":37,"column":4}}]},"4":{"line":41,"type":"if","locations":[{"start":{"line":41,"column":4},"end":{"line":41,"column":4}},{"start":{"line":41,"column":4},"end":{"line":41,"column":4}}]},"5":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":45,"column":4}},{"start":{"line":45,"column":4},"end":{"line":45,"column":4}}]},"6":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":54,"column":4}},{"start":{"line":54,"column":4},"end":{"line":54,"column":4}}]},"7":{"line":58,"type":"if","locations":[{"start":{"line":58,"column":4},"end":{"line":58,"column":4}},{"start":{"line":58,"column":4},"end":{"line":58,"column":4}}]},"8":{"line":102,"type":"if","locations":[{"start":{"line":102,"column":4},"end":{"line":102,"column":4}},{"start":{"line":102,"column":4},"end":{"line":102,"column":4}}]},"9":{"line":126,"type":"if","locations":[{"start":{"line":126,"column":4},"end":{"line":126,"column":4}},{"start":{"line":126,"column":4},"end":{"line":126,"column":4}}]},"10":{"line":151,"type":"if","locations":[{"start":{"line":151,"column":4},"end":{"line":151,"column":4}},{"start":{"line":151,"column":4},"end":{"line":151,"column":4}}]},"11":{"line":195,"type":"if","locations":[{"start":{"line":195,"column":4},"end":{"line":195,"column":4}},{"start":{"line":195,"column":4},"end":{"line":195,"column":4}}]}}},"src/core/ElasticDAOFactory.sol":{"l":{"21":0,"22":0,"26":0,"27":0,"46":0,"50":0,"52":0,"53":0,"54":0,"58":0,"59":0,"63":0,"65":0,"66":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAOFactory.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0},"b":{"1":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0},"fnMap":{"1":{"name":"onlyDeployer","line":20,"loc":{"start":{"line":20,"column":2},"end":{"line":23,"column":2}}},"2":{"name":"constructor","line":25,"loc":{"start":{"line":25,"column":2},"end":{"line":28,"column":2}}},"3":{"name":"deployDAOAndToken","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":55,"column":2}}},"4":{"name":"updateFeeAddress","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":60,"column":2}}},"5":{"name":"collectFees","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":67,"column":2}}},"6":{"name":null,"line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":71,"column":31}}}},"statementMap":{"1":{"start":{"line":21,"column":4},"end":{"line":21,"column":63}},"2":{"start":{"line":26,"column":4},"end":{"line":26,"column":24}},"3":{"start":{"line":27,"column":4},"end":{"line":27,"column":49}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":1354}},"5":{"start":{"line":50,"column":4},"end":{"line":50,"column":96}},"6":{"start":{"line":52,"column":4},"end":{"line":52,"column":49}},"7":{"start":{"line":53,"column":4},"end":{"line":53,"column":55}},"8":{"start":{"line":54,"column":4},"end":{"line":54,"column":41}},"9":{"start":{"line":58,"column":4},"end":{"line":58,"column":37}},"10":{"start":{"line":59,"column":4},"end":{"line":59,"column":40}},"11":{"start":{"line":63,"column":4},"end":{"line":63,"column":42}},"12":{"start":{"line":65,"column":4},"end":{"line":65,"column":30}},"13":{"start":{"line":66,"column":4},"end":{"line":66,"column":51}}},"branchMap":{"1":{"line":21,"type":"if","locations":[{"start":{"line":21,"column":4},"end":{"line":21,"column":4}},{"start":{"line":21,"column":4},"end":{"line":21,"column":4}}]}}},"src/interfaces/IElasticToken.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IElasticToken.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/interfaces/IERC20.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IERC20.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/libraries/ElasticMath.sol":{"l":{"17":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"48":0,"49":0,"51":0,"52":0,"54":0,"55":0,"57":0,"58":0,"60":0,"61":0,"63":0,"64":0,"66":0,"67":0,"69":0,"70":0,"72":0,"73":0,"75":0,"83":0,"101":0,"114":0,"131":0,"141":0,"151":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/ElasticMath.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0},"b":{},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0},"fnMap":{"1":{"name":"capitalDelta","line":12,"loc":{"start":{"line":12,"column":2},"end":{"line":18,"column":2}}},"2":{"name":"deltaE","line":33,"loc":{"start":{"line":33,"column":2},"end":{"line":76,"column":2}}},"3":{"name":"lambdaFromT","line":78,"loc":{"start":{"line":78,"column":2},"end":{"line":84,"column":2}}},"4":{"name":"mDash","line":96,"loc":{"start":{"line":96,"column":2},"end":{"line":102,"column":2}}},"5":{"name":"revamp","line":113,"loc":{"start":{"line":113,"column":2},"end":{"line":115,"column":2}}},"6":{"name":"t","line":126,"loc":{"start":{"line":126,"column":2},"end":{"line":132,"column":2}}},"7":{"name":"wmul","line":140,"loc":{"start":{"line":140,"column":2},"end":{"line":142,"column":2}}},"8":{"name":"wdiv","line":150,"loc":{"start":{"line":150,"column":2},"end":{"line":152,"column":2}}}},"statementMap":{"1":{"start":{"line":17,"column":4},"end":{"line":17,"column":53}},"2":{"start":{"line":41,"column":4},"end":{"line":41,"column":54}},"3":{"start":{"line":42,"column":4},"end":{"line":42,"column":66}},"4":{"start":{"line":43,"column":4},"end":{"line":43,"column":34}},"5":{"start":{"line":44,"column":4},"end":{"line":44,"column":52}},"6":{"start":{"line":45,"column":4},"end":{"line":45,"column":44}},"7":{"start":{"line":46,"column":4},"end":{"line":46,"column":34}},"8":{"start":{"line":48,"column":4},"end":{"line":48,"column":58}},"9":{"start":{"line":49,"column":4},"end":{"line":49,"column":52}},"10":{"start":{"line":51,"column":4},"end":{"line":51,"column":42}},"11":{"start":{"line":52,"column":4},"end":{"line":52,"column":33}},"12":{"start":{"line":54,"column":4},"end":{"line":54,"column":34}},"13":{"start":{"line":55,"column":4},"end":{"line":55,"column":34}},"14":{"start":{"line":57,"column":4},"end":{"line":57,"column":31}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":34}},"16":{"start":{"line":60,"column":4},"end":{"line":60,"column":44}},"17":{"start":{"line":61,"column":4},"end":{"line":61,"column":34}},"18":{"start":{"line":63,"column":4},"end":{"line":63,"column":26}},"19":{"start":{"line":64,"column":4},"end":{"line":64,"column":34}},"20":{"start":{"line":66,"column":4},"end":{"line":66,"column":35}},"21":{"start":{"line":67,"column":4},"end":{"line":67,"column":34}},"22":{"start":{"line":69,"column":4},"end":{"line":69,"column":34}},"23":{"start":{"line":70,"column":4},"end":{"line":70,"column":34}},"24":{"start":{"line":72,"column":4},"end":{"line":72,"column":27}},"25":{"start":{"line":73,"column":4},"end":{"line":73,"column":54}},"26":{"start":{"line":75,"column":4},"end":{"line":75,"column":22}},"27":{"start":{"line":83,"column":4},"end":{"line":83,"column":30}},"28":{"start":{"line":101,"column":4},"end":{"line":101,"column":44}},"29":{"start":{"line":114,"column":4},"end":{"line":114,"column":57}},"30":{"start":{"line":131,"column":4},"end":{"line":131,"column":35}},"31":{"start":{"line":141,"column":4},"end":{"line":141,"column":90}},"32":{"start":{"line":151,"column":4},"end":{"line":151,"column":72}}},"branchMap":{}},"src/libraries/SafeMath.sol":{"l":{"29":0,"30":0,"32":0,"46":0,"64":0,"65":0,"67":0,"84":0,"85":0,"88":0,"89":0,"91":0,"107":0,"127":0,"128":0,"131":0,"147":0,"167":0,"168":0,"172":0,"173":0,"175":0,"177":0,"179":0,"180":0,"181":0,"189":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/SafeMath.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0},"fnMap":{"1":{"name":"add","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":33,"column":2}}},"2":{"name":"sub","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":2}}},"3":{"name":"sub","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":68,"column":2}}},"4":{"name":"mul","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":92,"column":2}}},"5":{"name":"div","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":108,"column":2}}},"6":{"name":"div","line":122,"loc":{"start":{"line":122,"column":2},"end":{"line":132,"column":2}}},"7":{"name":"mod","line":146,"loc":{"start":{"line":146,"column":2},"end":{"line":148,"column":2}}},"8":{"name":"mod","line":162,"loc":{"start":{"line":162,"column":2},"end":{"line":169,"column":2}}},"9":{"name":"pow","line":171,"loc":{"start":{"line":171,"column":2},"end":{"line":183,"column":2}}},"10":{"name":"max","line":188,"loc":{"start":{"line":188,"column":2},"end":{"line":190,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":21}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":49}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":12}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":54}},"5":{"start":{"line":64,"column":4},"end":{"line":64,"column":32}},"6":{"start":{"line":65,"column":4},"end":{"line":65,"column":21}},"7":{"start":{"line":67,"column":4},"end":{"line":67,"column":12}},"8":{"start":{"line":84,"column":4},"end":{"line":84,"column":2356}},"9":{"start":{"line":85,"column":6},"end":{"line":85,"column":14}},"10":{"start":{"line":88,"column":4},"end":{"line":88,"column":21}},"11":{"start":{"line":89,"column":4},"end":{"line":89,"column":59}},"12":{"start":{"line":91,"column":4},"end":{"line":91,"column":12}},"13":{"start":{"line":107,"column":4},"end":{"line":107,"column":50}},"14":{"start":{"line":127,"column":4},"end":{"line":127,"column":31}},"15":{"start":{"line":128,"column":4},"end":{"line":128,"column":21}},"16":{"start":{"line":131,"column":4},"end":{"line":131,"column":12}},"17":{"start":{"line":147,"column":4},"end":{"line":147,"column":48}},"18":{"start":{"line":167,"column":4},"end":{"line":167,"column":32}},"19":{"start":{"line":168,"column":4},"end":{"line":168,"column":16}},"20":{"start":{"line":172,"column":4},"end":{"line":172,"column":5030}},"21":{"start":{"line":173,"column":6},"end":{"line":173,"column":14}},"22":{"start":{"line":174,"column":11},"end":{"line":174,"column":5078}},"23":{"start":{"line":175,"column":6},"end":{"line":175,"column":17}},"24":{"start":{"line":176,"column":11},"end":{"line":176,"column":5129}},"25":{"start":{"line":177,"column":6},"end":{"line":177,"column":14}},"26":{"start":{"line":179,"column":6},"end":{"line":179,"column":22}},"27":{"start":{"line":180,"column":6},"end":{"line":180,"column":71}},"28":{"start":{"line":180,"column":55},"end":{"line":180,"column":70}},"29":{"start":{"line":181,"column":6},"end":{"line":181,"column":14}},"30":{"start":{"line":189,"column":4},"end":{"line":189,"column":25}}},"branchMap":{"1":{"line":30,"type":"if","locations":[{"start":{"line":30,"column":4},"end":{"line":30,"column":4}},{"start":{"line":30,"column":4},"end":{"line":30,"column":4}}]},"2":{"line":64,"type":"if","locations":[{"start":{"line":64,"column":4},"end":{"line":64,"column":4}},{"start":{"line":64,"column":4},"end":{"line":64,"column":4}}]},"3":{"line":84,"type":"if","locations":[{"start":{"line":84,"column":4},"end":{"line":84,"column":4}},{"start":{"line":84,"column":4},"end":{"line":84,"column":4}}]},"4":{"line":89,"type":"if","locations":[{"start":{"line":89,"column":4},"end":{"line":89,"column":4}},{"start":{"line":89,"column":4},"end":{"line":89,"column":4}}]},"5":{"line":127,"type":"if","locations":[{"start":{"line":127,"column":4},"end":{"line":127,"column":4}},{"start":{"line":127,"column":4},"end":{"line":127,"column":4}}]},"6":{"line":167,"type":"if","locations":[{"start":{"line":167,"column":4},"end":{"line":167,"column":4}},{"start":{"line":167,"column":4},"end":{"line":167,"column":4}}]},"7":{"line":172,"type":"if","locations":[{"start":{"line":172,"column":4},"end":{"line":172,"column":4}},{"start":{"line":172,"column":4},"end":{"line":172,"column":4}}]},"8":{"line":174,"type":"if","locations":[{"start":{"line":174,"column":11},"end":{"line":174,"column":11}},{"start":{"line":174,"column":11},"end":{"line":174,"column":11}}]},"9":{"line":176,"type":"if","locations":[{"start":{"line":176,"column":11},"end":{"line":176,"column":11}},{"start":{"line":176,"column":11},"end":{"line":176,"column":11}}]}}},"src/models/Balance.sol":{"l":{"35":0,"36":0,"37":0,"38":0,"41":0,"42":0,"44":0,"51":0,"52":0,"53":0,"55":0,"64":0,"72":0,"74":0,"80":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Balance.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0},"b":{"1":[0,0]},"f":{"1":0,"2":0,"3":0},"fnMap":{"1":{"name":"deserialize","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":56,"column":2}}},"2":{"name":"exists","line":58,"loc":{"start":{"line":58,"column":2},"end":{"line":65,"column":2}}},"3":{"name":"serialize","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":95,"column":2}}}},"statementMap":{"1":{"start":{"line":35,"column":4},"end":{"line":35,"column":36}},"2":{"start":{"line":36,"column":4},"end":{"line":36,"column":32}},"3":{"start":{"line":37,"column":4},"end":{"line":37,"column":38}},"4":{"start":{"line":38,"column":4},"end":{"line":38,"column":1214}},"5":{"start":{"line":41,"column":4},"end":{"line":41,"column":24}},"6":{"start":{"line":42,"column":4},"end":{"line":42,"column":36}},"7":{"start":{"line":44,"column":4},"end":{"line":44,"column":1419}},"8":{"start":{"line":51,"column":4},"end":{"line":51,"column":36}},"9":{"start":{"line":52,"column":4},"end":{"line":52,"column":34}},"10":{"start":{"line":53,"column":4},"end":{"line":53,"column":34}},"11":{"start":{"line":55,"column":4},"end":{"line":55,"column":17}},"12":{"start":{"line":64,"column":4},"end":{"line":64,"column":15}},"13":{"start":{"line":72,"column":4},"end":{"line":72,"column":71}},"14":{"start":{"line":74,"column":4},"end":{"line":74,"column":2167}},"15":{"start":{"line":80,"column":4},"end":{"line":80,"column":2333}},"16":{"start":{"line":85,"column":4},"end":{"line":85,"column":57}},"17":{"start":{"line":86,"column":4},"end":{"line":86,"column":54}},"18":{"start":{"line":87,"column":4},"end":{"line":87,"column":50}},"19":{"start":{"line":88,"column":4},"end":{"line":88,"column":34}},"20":{"start":{"line":89,"column":4},"end":{"line":89,"column":34}},"21":{"start":{"line":90,"column":4},"end":{"line":90,"column":50}},"22":{"start":{"line":91,"column":4},"end":{"line":91,"column":42}},"23":{"start":{"line":92,"column":4},"end":{"line":92,"column":2815}}},"branchMap":{"1":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":72,"column":4}},{"start":{"line":72,"column":4},"end":{"line":72,"column":4}}]}}},"src/models/BalanceMultipliers.sol":{"l":{"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"45":0,"53":0,"55":0,"59":0,"60":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/BalanceMultipliers.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0},"b":{"1":[0,0]},"f":{"1":0,"2":0,"3":0},"fnMap":{"1":{"name":"deserialize","line":26,"loc":{"start":{"line":26,"column":2},"end":{"line":38,"column":2}}},"2":{"name":"exists","line":40,"loc":{"start":{"line":40,"column":2},"end":{"line":46,"column":2}}},"3":{"name":"serialize","line":52,"loc":{"start":{"line":52,"column":2},"end":{"line":61,"column":2}}}},"statementMap":{"1":{"start":{"line":31,"column":4},"end":{"line":31,"column":36}},"2":{"start":{"line":32,"column":4},"end":{"line":32,"column":32}},"3":{"start":{"line":33,"column":4},"end":{"line":33,"column":32}},"4":{"start":{"line":34,"column":4},"end":{"line":34,"column":76}},"5":{"start":{"line":35,"column":4},"end":{"line":35,"column":76}},"6":{"start":{"line":36,"column":4},"end":{"line":36,"column":24}},"7":{"start":{"line":37,"column":4},"end":{"line":37,"column":17}},"8":{"start":{"line":45,"column":4},"end":{"line":45,"column":15}},"9":{"start":{"line":53,"column":4},"end":{"line":53,"column":90}},"10":{"start":{"line":55,"column":4},"end":{"line":55,"column":1650}},"11":{"start":{"line":59,"column":4},"end":{"line":59,"column":81}},"12":{"start":{"line":60,"column":4},"end":{"line":60,"column":81}}},"branchMap":{"1":{"line":53,"type":"if","locations":[{"start":{"line":53,"column":4},"end":{"line":53,"column":4}},{"start":{"line":53,"column":4},"end":{"line":53,"column":4}}]}}},"src/models/DAO.sol":{"l":{"32":0,"33":0,"35":0,"36":0,"37":0,"38":0,"41":0,"50":0,"54":0,"64":0,"72":0,"77":0,"78":0,"79":0,"81":0,"82":0,"83":0,"84":0,"88":0,"92":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/DAO.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0},"fnMap":{"1":{"name":"deserialize","line":27,"loc":{"start":{"line":27,"column":2},"end":{"line":42,"column":2}}},"2":{"name":"exists","line":49,"loc":{"start":{"line":49,"column":2},"end":{"line":51,"column":2}}},"3":{"name":"getSummoner","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":55,"column":2}}},"4":{"name":"isSummoner","line":63,"loc":{"start":{"line":63,"column":2},"end":{"line":65,"column":2}}},"5":{"name":"serialize","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":89,"column":2}}},"6":{"name":"_exists","line":91,"loc":{"start":{"line":91,"column":2},"end":{"line":93,"column":2}}}},"statementMap":{"1":{"start":{"line":32,"column":4},"end":{"line":32,"column":22}},"2":{"start":{"line":33,"column":4},"end":{"line":33,"column":32}},"3":{"start":{"line":35,"column":4},"end":{"line":35,"column":903}},"4":{"start":{"line":36,"column":6},"end":{"line":36,"column":66}},"5":{"start":{"line":37,"column":6},"end":{"line":37,"column":90}},"6":{"start":{"line":38,"column":6},"end":{"line":38,"column":72}},"7":{"start":{"line":41,"column":4},"end":{"line":41,"column":17}},"8":{"start":{"line":50,"column":4},"end":{"line":50,"column":25}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":76}},"10":{"start":{"line":64,"column":4},"end":{"line":64,"column":82}},"11":{"start":{"line":72,"column":4},"end":{"line":72,"column":2142}},"12":{"start":{"line":77,"column":4},"end":{"line":77,"column":69}},"13":{"start":{"line":78,"column":4},"end":{"line":78,"column":93}},"14":{"start":{"line":79,"column":4},"end":{"line":79,"column":75}},"15":{"start":{"line":81,"column":4},"end":{"line":81,"column":2530}},"16":{"start":{"line":82,"column":6},"end":{"line":82,"column":2597}},"17":{"start":{"line":83,"column":8},"end":{"line":83,"column":89}},"18":{"start":{"line":84,"column":8},"end":{"line":84,"column":90}},"19":{"start":{"line":88,"column":4},"end":{"line":88,"column":62}},"20":{"start":{"line":92,"column":4},"end":{"line":92,"column":58}}},"branchMap":{"1":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":35,"column":4}},{"start":{"line":35,"column":4},"end":{"line":35,"column":4}}]},"2":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":72,"column":4}},{"start":{"line":72,"column":4},"end":{"line":72,"column":4}}]},"3":{"line":81,"type":"if","locations":[{"start":{"line":81,"column":4},"end":{"line":81,"column":4}},{"start":{"line":81,"column":4},"end":{"line":81,"column":4}}]}}},"src/models/Ecosystem.sol":{"l":{"35":0,"36":0,"37":0,"40":0,"43":0,"46":0,"49":0,"50":0,"53":0,"56":0,"61":0,"70":0,"78":0,"80":0,"87":0,"91":0,"95":0,"99":0,"100":0,"104":0,"108":0,"113":0,"117":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Ecosystem.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0},"b":{"1":[0,0],"2":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0},"fnMap":{"1":{"name":"deserialize","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":62,"column":2}}},"2":{"name":"exists","line":69,"loc":{"start":{"line":69,"column":2},"end":{"line":71,"column":2}}},"3":{"name":"serialize","line":77,"loc":{"start":{"line":77,"column":2},"end":{"line":114,"column":2}}},"4":{"name":"_exists","line":116,"loc":{"start":{"line":116,"column":2},"end":{"line":118,"column":2}}}},"statementMap":{"1":{"start":{"line":35,"column":4},"end":{"line":35,"column":1142}},"2":{"start":{"line":36,"column":6},"end":{"line":36,"column":36}},"3":{"start":{"line":37,"column":6},"end":{"line":37,"column":1217}},"4":{"start":{"line":40,"column":6},"end":{"line":40,"column":1345}},"5":{"start":{"line":43,"column":6},"end":{"line":43,"column":1495}},"6":{"start":{"line":46,"column":6},"end":{"line":46,"column":1623}},"7":{"start":{"line":49,"column":6},"end":{"line":49,"column":49}},"8":{"start":{"line":50,"column":6},"end":{"line":50,"column":1795}},"9":{"start":{"line":53,"column":6},"end":{"line":53,"column":1929}},"10":{"start":{"line":56,"column":6},"end":{"line":56,"column":2065}},"11":{"start":{"line":61,"column":4},"end":{"line":61,"column":17}},"12":{"start":{"line":70,"column":4},"end":{"line":70,"column":31}},"13":{"start":{"line":78,"column":4},"end":{"line":78,"column":50}},"14":{"start":{"line":80,"column":4},"end":{"line":80,"column":2684}},"15":{"start":{"line":87,"column":4},"end":{"line":87,"column":2891}},"16":{"start":{"line":91,"column":4},"end":{"line":91,"column":3018}},"17":{"start":{"line":95,"column":4},"end":{"line":95,"column":3167}},"18":{"start":{"line":99,"column":4},"end":{"line":99,"column":98}},"19":{"start":{"line":100,"column":4},"end":{"line":100,"column":3395}},"20":{"start":{"line":104,"column":4},"end":{"line":104,"column":3528}},"21":{"start":{"line":108,"column":4},"end":{"line":108,"column":3663}},"22":{"start":{"line":113,"column":4},"end":{"line":113,"column":68}},"23":{"start":{"line":117,"column":4},"end":{"line":117,"column":64}}},"branchMap":{"1":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":35,"column":4}},{"start":{"line":35,"column":4},"end":{"line":35,"column":4}}]},"2":{"line":80,"type":"if","locations":[{"start":{"line":80,"column":4},"end":{"line":80,"column":4}},{"start":{"line":80,"column":4},"end":{"line":80,"column":4}}]}}},"src/models/EternalModel.sol":{"l":{"30":0,"37":0,"39":0,"46":0,"53":0,"60":0,"67":0,"69":0,"81":0,"89":0,"97":0,"105":0,"113":0,"121":0,"132":0,"139":0,"141":0,"148":0,"155":0,"162":0,"169":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/EternalModel.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0},"fnMap":{"1":{"name":"getUint","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":31,"column":2}}},"2":{"name":"getString","line":36,"loc":{"start":{"line":36,"column":2},"end":{"line":40,"column":2}}},"3":{"name":"getAddress","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":2}}},"4":{"name":"getBool","line":52,"loc":{"start":{"line":52,"column":2},"end":{"line":54,"column":2}}},"5":{"name":"getInt","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":61,"column":2}}},"6":{"name":"getBytes","line":66,"loc":{"start":{"line":66,"column":2},"end":{"line":70,"column":2}}},"7":{"name":"setUint","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":82,"column":2}}},"8":{"name":"setString","line":88,"loc":{"start":{"line":88,"column":2},"end":{"line":90,"column":2}}},"9":{"name":"setAddress","line":96,"loc":{"start":{"line":96,"column":2},"end":{"line":98,"column":2}}},"10":{"name":"setBool","line":104,"loc":{"start":{"line":104,"column":2},"end":{"line":106,"column":2}}},"11":{"name":"setInt","line":112,"loc":{"start":{"line":112,"column":2},"end":{"line":114,"column":2}}},"12":{"name":"setBytes","line":120,"loc":{"start":{"line":120,"column":2},"end":{"line":122,"column":2}}},"13":{"name":"deleteUint","line":131,"loc":{"start":{"line":131,"column":2},"end":{"line":133,"column":2}}},"14":{"name":"deleteString","line":138,"loc":{"start":{"line":138,"column":2},"end":{"line":142,"column":2}}},"15":{"name":"deleteAddress","line":147,"loc":{"start":{"line":147,"column":2},"end":{"line":149,"column":2}}},"16":{"name":"deleteBool","line":154,"loc":{"start":{"line":154,"column":2},"end":{"line":156,"column":2}}},"17":{"name":"deleteInt","line":161,"loc":{"start":{"line":161,"column":2},"end":{"line":163,"column":2}}},"18":{"name":"deleteBytes","line":168,"loc":{"start":{"line":168,"column":2},"end":{"line":170,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":30}},"2":{"start":{"line":37,"column":4},"end":{"line":37,"column":52}},"3":{"start":{"line":39,"column":4},"end":{"line":39,"column":32}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":33}},"5":{"start":{"line":53,"column":4},"end":{"line":53,"column":30}},"6":{"start":{"line":60,"column":4},"end":{"line":60,"column":29}},"7":{"start":{"line":67,"column":4},"end":{"line":67,"column":52}},"8":{"start":{"line":69,"column":4},"end":{"line":69,"column":31}},"9":{"start":{"line":81,"column":4},"end":{"line":81,"column":31}},"10":{"start":{"line":89,"column":4},"end":{"line":89,"column":33}},"11":{"start":{"line":97,"column":4},"end":{"line":97,"column":34}},"12":{"start":{"line":105,"column":4},"end":{"line":105,"column":31}},"13":{"start":{"line":113,"column":4},"end":{"line":113,"column":30}},"14":{"start":{"line":121,"column":4},"end":{"line":121,"column":32}},"15":{"start":{"line":139,"column":4},"end":{"line":139,"column":52}}},"branchMap":{"1":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":37,"column":4}},{"start":{"line":37,"column":4},"end":{"line":37,"column":4}}]},"2":{"line":67,"type":"if","locations":[{"start":{"line":67,"column":4},"end":{"line":67,"column":4}},{"start":{"line":67,"column":4},"end":{"line":67,"column":4}}]},"3":{"line":139,"type":"if","locations":[{"start":{"line":139,"column":4},"end":{"line":139,"column":4}},{"start":{"line":139,"column":4},"end":{"line":139,"column":4}}]}}},"src/models/Token.sol":{"l":{"42":0,"43":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"58":0,"62":0,"66":0,"68":0,"69":0,"77":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"93":0,"99":0,"103":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Token.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0},"fnMap":{"1":{"name":"deserialize","line":37,"loc":{"start":{"line":37,"column":2},"end":{"line":59,"column":2}}},"2":{"name":"exists","line":61,"loc":{"start":{"line":61,"column":2},"end":{"line":63,"column":2}}},"3":{"name":"incrementCounter","line":65,"loc":{"start":{"line":65,"column":2},"end":{"line":70,"column":2}}},"4":{"name":"serialize","line":76,"loc":{"start":{"line":76,"column":2},"end":{"line":94,"column":2}}},"5":{"name":"updateNumberOfTokenHolders","line":96,"loc":{"start":{"line":96,"column":2},"end":{"line":100,"column":2}}},"6":{"name":"_exists","line":102,"loc":{"start":{"line":102,"column":2},"end":{"line":104,"column":2}}}},"statementMap":{"1":{"start":{"line":42,"column":4},"end":{"line":42,"column":22}},"2":{"start":{"line":43,"column":4},"end":{"line":43,"column":32}},"3":{"start":{"line":45,"column":4},"end":{"line":45,"column":1269}},"4":{"start":{"line":46,"column":6},"end":{"line":46,"column":70}},"5":{"start":{"line":47,"column":6},"end":{"line":47,"column":64}},"6":{"start":{"line":48,"column":6},"end":{"line":48,"column":76}},"7":{"start":{"line":49,"column":6},"end":{"line":49,"column":58}},"8":{"start":{"line":50,"column":6},"end":{"line":50,"column":68}},"9":{"start":{"line":51,"column":6},"end":{"line":51,"column":58}},"10":{"start":{"line":52,"column":6},"end":{"line":52,"column":90}},"11":{"start":{"line":53,"column":6},"end":{"line":53,"column":66}},"12":{"start":{"line":54,"column":6},"end":{"line":54,"column":96}},"13":{"start":{"line":55,"column":6},"end":{"line":55,"column":70}},"14":{"start":{"line":58,"column":4},"end":{"line":58,"column":17}},"15":{"start":{"line":62,"column":4},"end":{"line":62,"column":25}},"16":{"start":{"line":66,"column":4},"end":{"line":66,"column":65}},"17":{"start":{"line":68,"column":4},"end":{"line":68,"column":76}},"18":{"start":{"line":69,"column":4},"end":{"line":69,"column":83}},"19":{"start":{"line":77,"column":4},"end":{"line":77,"column":2629}},"20":{"start":{"line":84,"column":4},"end":{"line":84,"column":69}},"21":{"start":{"line":85,"column":4},"end":{"line":85,"column":73}},"22":{"start":{"line":86,"column":4},"end":{"line":86,"column":67}},"23":{"start":{"line":87,"column":4},"end":{"line":87,"column":79}},"24":{"start":{"line":88,"column":4},"end":{"line":88,"column":61}},"25":{"start":{"line":89,"column":4},"end":{"line":89,"column":71}},"26":{"start":{"line":90,"column":4},"end":{"line":90,"column":61}},"27":{"start":{"line":91,"column":4},"end":{"line":91,"column":93}},"28":{"start":{"line":93,"column":4},"end":{"line":93,"column":62}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":92}},"30":{"start":{"line":103,"column":4},"end":{"line":103,"column":58}}},"branchMap":{"1":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":45,"column":4}},{"start":{"line":45,"column":4},"end":{"line":45,"column":4}}]},"2":{"line":66,"type":"if","locations":[{"start":{"line":66,"column":4},"end":{"line":66,"column":4}},{"start":{"line":66,"column":4},"end":{"line":66,"column":4}}]},"3":{"line":77,"type":"if","locations":[{"start":{"line":77,"column":4},"end":{"line":77,"column":4}},{"start":{"line":77,"column":4},"end":{"line":77,"column":4}}]}}},"src/models/TokenHolder.sol":{"l":{"29":0,"30":0,"31":0,"33":0,"34":0,"35":0,"38":0,"46":0,"54":0,"56":0,"57":0,"59":0,"67":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/TokenHolder.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0},"b":{"1":[0,0],"2":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0},"fnMap":{"1":{"name":"deserialize","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":39,"column":2}}},"2":{"name":"exists","line":41,"loc":{"start":{"line":41,"column":2},"end":{"line":47,"column":2}}},"3":{"name":"serialize","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":60,"column":2}}},"4":{"name":"_exists","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":68,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":28}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":32}},"3":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":1003}},"5":{"start":{"line":34,"column":6},"end":{"line":34,"column":98}},"6":{"start":{"line":35,"column":6},"end":{"line":35,"column":96}},"7":{"start":{"line":38,"column":4},"end":{"line":38,"column":17}},"8":{"start":{"line":46,"column":4},"end":{"line":46,"column":48}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":71}},"10":{"start":{"line":56,"column":4},"end":{"line":56,"column":95}},"11":{"start":{"line":57,"column":4},"end":{"line":57,"column":93}},"12":{"start":{"line":59,"column":4},"end":{"line":59,"column":84}},"13":{"start":{"line":67,"column":4},"end":{"line":67,"column":74}}},"branchMap":{"1":{"line":33,"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":33,"column":4}},{"start":{"line":33,"column":4},"end":{"line":33,"column":4}}]},"2":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":54,"column":4}},{"start":{"line":54,"column":4},"end":{"line":54,"column":4}}]}}},"src/services/Configurator.sol":{"l":{"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"50":0,"52":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"63":0,"65":0,"66":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"103":0,"104":0,"105":0,"107":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/services/Configurator.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0},"b":{},"f":{"1":0,"2":0,"3":0},"fnMap":{"1":{"name":"buildDAO","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":39,"column":2}}},"2":{"name":"buildEcosystem","line":46,"loc":{"start":{"line":46,"column":2},"end":{"line":67,"column":2}}},"3":{"name":"buildToken","line":82,"loc":{"start":{"line":82,"column":2},"end":{"line":108,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":52}},"2":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":29}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":19}},"5":{"start":{"line":34,"column":4},"end":{"line":34,"column":45}},"6":{"start":{"line":35,"column":4},"end":{"line":35,"column":23}},"7":{"start":{"line":36,"column":4},"end":{"line":36,"column":29}},"8":{"start":{"line":37,"column":4},"end":{"line":37,"column":28}},"9":{"start":{"line":38,"column":4},"end":{"line":38,"column":14}},"10":{"start":{"line":50,"column":4},"end":{"line":50,"column":74}},"11":{"start":{"line":52,"column":4},"end":{"line":52,"column":36}},"12":{"start":{"line":55,"column":4},"end":{"line":55,"column":63}},"13":{"start":{"line":56,"column":4},"end":{"line":56,"column":85}},"14":{"start":{"line":57,"column":4},"end":{"line":57,"column":55}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":67}},"16":{"start":{"line":59,"column":4},"end":{"line":59,"column":71}},"17":{"start":{"line":60,"column":4},"end":{"line":60,"column":59}},"18":{"start":{"line":63,"column":4},"end":{"line":63,"column":63}},"19":{"start":{"line":65,"column":4},"end":{"line":65,"column":40}},"20":{"start":{"line":66,"column":4},"end":{"line":66,"column":20}},"21":{"start":{"line":91,"column":4},"end":{"line":91,"column":60}},"22":{"start":{"line":92,"column":4},"end":{"line":92,"column":21}},"23":{"start":{"line":93,"column":4},"end":{"line":93,"column":31}},"24":{"start":{"line":94,"column":4},"end":{"line":94,"column":33}},"25":{"start":{"line":95,"column":4},"end":{"line":95,"column":15}},"26":{"start":{"line":96,"column":4},"end":{"line":96,"column":19}},"27":{"start":{"line":97,"column":4},"end":{"line":97,"column":32}},"28":{"start":{"line":98,"column":4},"end":{"line":98,"column":47}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":21}},"30":{"start":{"line":100,"column":4},"end":{"line":100,"column":25}},"31":{"start":{"line":101,"column":4},"end":{"line":101,"column":97}},"32":{"start":{"line":103,"column":4},"end":{"line":103,"column":49}},"33":{"start":{"line":104,"column":4},"end":{"line":104,"column":68}},"34":{"start":{"line":105,"column":4},"end":{"line":105,"column":32}},"35":{"start":{"line":107,"column":4},"end":{"line":107,"column":16}}},"branchMap":{}},"src/tokens/ElasticGovernanceToken.sol":{"l":{"29":0,"30":0,"34":0,"35":0,"39":0,"40":0,"44":0,"45":0,"46":0,"47":0,"60":0,"79":0,"80":0,"89":0,"90":0,"91":0,"93":0,"102":0,"103":0,"107":0,"108":0,"109":0,"110":0,"112":0,"113":0,"115":0,"131":0,"132":0,"147":0,"148":0,"156":0,"166":0,"168":0,"170":0,"171":0,"181":0,"182":0,"192":0,"194":0,"209":0,"210":0,"218":0,"222":0,"226":0,"230":0,"239":0,"252":0,"253":0,"257":0,"258":0,"270":0,"271":0,"289":0,"291":0,"293":0,"294":0,"296":0,"299":0,"309":0,"310":0,"312":0,"314":0,"322":0,"323":0,"324":0,"325":0,"327":0,"331":0,"332":0,"333":0,"337":0,"338":0,"339":0,"340":0,"341":0,"343":0,"345":0,"346":0,"348":0,"349":0,"350":0,"354":0,"355":0,"356":0,"360":0,"361":0,"362":0,"363":0,"364":0,"366":0,"368":0,"370":0,"371":0,"373":0,"374":0,"375":0,"377":0,"385":0,"386":0,"387":0,"389":0,"390":0,"391":0,"392":0,"394":0,"395":0,"397":0,"398":0,"400":0,"401":0,"402":0,"403":0,"404":0,"406":0,"415":0,"416":0,"417":0,"418":0,"419":0,"420":0,"421":0,"422":0,"423":0,"424":0,"425":0,"427":0,"428":0,"430":0,"433":0,"435":0,"436":0,"438":0,"447":0,"448":0,"451":0,"452":0,"459":0,"463":0,"464":0,"473":0,"474":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/tokens/ElasticGovernanceToken.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0,"134":0,"135":0,"136":0,"137":0,"138":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0},"fnMap":{"1":{"name":"onlyDAO","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":31,"column":2}}},"2":{"name":"onlyDAOorBurner","line":33,"loc":{"start":{"line":33,"column":2},"end":{"line":36,"column":2}}},"3":{"name":"onlyDAOorMinter","line":38,"loc":{"start":{"line":38,"column":2},"end":{"line":41,"column":2}}},"4":{"name":"constructor","line":43,"loc":{"start":{"line":43,"column":2},"end":{"line":48,"column":2}}},"5":{"name":"allowance","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":61,"column":2}}},"6":{"name":"approve","line":78,"loc":{"start":{"line":78,"column":2},"end":{"line":81,"column":2}}},"7":{"name":"balanceOf","line":88,"loc":{"start":{"line":88,"column":2},"end":{"line":94,"column":2}}},"8":{"name":"balanceOfInShares","line":101,"loc":{"start":{"line":101,"column":2},"end":{"line":104,"column":2}}},"9":{"name":"balanceOfVoting","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":117,"column":2}}},"10":{"name":"burn","line":128,"loc":{"start":{"line":125,"column":2},"end":{"line":133,"column":2}}},"11":{"name":"burnShares","line":144,"loc":{"start":{"line":141,"column":2},"end":{"line":149,"column":2}}},"12":{"name":"decimals","line":155,"loc":{"start":{"line":155,"column":2},"end":{"line":157,"column":2}}},"13":{"name":"decreaseAllowance","line":165,"loc":{"start":{"line":165,"column":2},"end":{"line":172,"column":2}}},"14":{"name":"increaseAllowance","line":180,"loc":{"start":{"line":180,"column":2},"end":{"line":183,"column":2}}},"15":{"name":"mint","line":191,"loc":{"start":{"line":191,"column":2},"end":{"line":195,"column":2}}},"16":{"name":"mintShares","line":206,"loc":{"start":{"line":203,"column":2},"end":{"line":211,"column":2}}},"17":{"name":"name","line":217,"loc":{"start":{"line":217,"column":2},"end":{"line":219,"column":2}}},"18":{"name":"numberOfTokenHolders","line":221,"loc":{"start":{"line":221,"column":2},"end":{"line":223,"column":2}}},"19":{"name":"setBurner","line":225,"loc":{"start":{"line":225,"column":2},"end":{"line":227,"column":2}}},"20":{"name":"setMinter","line":229,"loc":{"start":{"line":229,"column":2},"end":{"line":231,"column":2}}},"21":{"name":"symbol","line":238,"loc":{"start":{"line":238,"column":2},"end":{"line":240,"column":2}}},"22":{"name":"totalSupply","line":251,"loc":{"start":{"line":251,"column":2},"end":{"line":254,"column":2}}},"23":{"name":"totalSupplyInShares","line":256,"loc":{"start":{"line":256,"column":2},"end":{"line":259,"column":2}}},"24":{"name":"transfer","line":269,"loc":{"start":{"line":269,"column":2},"end":{"line":272,"column":2}}},"25":{"name":"transferFrom","line":284,"loc":{"start":{"line":284,"column":2},"end":{"line":300,"column":2}}},"26":{"name":"_approve","line":304,"loc":{"start":{"line":304,"column":2},"end":{"line":315,"column":2}}},"27":{"name":"_balanceAt","line":317,"loc":{"start":{"line":317,"column":2},"end":{"line":328,"column":2}}},"28":{"name":"_burn","line":330,"loc":{"start":{"line":330,"column":2},"end":{"line":334,"column":2}}},"29":{"name":"_burnShares","line":336,"loc":{"start":{"line":336,"column":2},"end":{"line":351,"column":2}}},"30":{"name":"_mint","line":353,"loc":{"start":{"line":353,"column":2},"end":{"line":357,"column":2}}},"31":{"name":"_mintShares","line":359,"loc":{"start":{"line":359,"column":2},"end":{"line":378,"column":2}}},"32":{"name":"_transfer","line":380,"loc":{"start":{"line":380,"column":2},"end":{"line":407,"column":2}}},"33":{"name":"_updateBalance","line":409,"loc":{"start":{"line":409,"column":2},"end":{"line":439,"column":2}}},"34":{"name":"_updateNumberOfTokenHolders","line":441,"loc":{"start":{"line":441,"column":2},"end":{"line":454,"column":2}}},"35":{"name":"_getEcosystem","line":458,"loc":{"start":{"line":458,"column":2},"end":{"line":460,"column":2}}},"36":{"name":"_getTokenHolder","line":462,"loc":{"start":{"line":462,"column":2},"end":{"line":470,"column":2}}},"37":{"name":"_getToken","line":472,"loc":{"start":{"line":472,"column":2},"end":{"line":475,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":90}},"2":{"start":{"line":34,"column":4},"end":{"line":34,"column":90}},"3":{"start":{"line":39,"column":4},"end":{"line":39,"column":90}},"4":{"start":{"line":44,"column":4},"end":{"line":44,"column":23}},"5":{"start":{"line":45,"column":4},"end":{"line":45,"column":27}},"6":{"start":{"line":46,"column":4},"end":{"line":46,"column":49}},"7":{"start":{"line":47,"column":4},"end":{"line":47,"column":23}},"8":{"start":{"line":60,"column":4},"end":{"line":60,"column":40}},"9":{"start":{"line":79,"column":4},"end":{"line":79,"column":42}},"10":{"start":{"line":80,"column":4},"end":{"line":80,"column":15}},"11":{"start":{"line":89,"column":4},"end":{"line":89,"column":45}},"12":{"start":{"line":90,"column":4},"end":{"line":90,"column":71}},"13":{"start":{"line":91,"column":4},"end":{"line":91,"column":67}},"14":{"start":{"line":93,"column":4},"end":{"line":93,"column":12}},"15":{"start":{"line":102,"column":4},"end":{"line":102,"column":71}},"16":{"start":{"line":103,"column":4},"end":{"line":103,"column":29}},"17":{"start":{"line":107,"column":4},"end":{"line":107,"column":45}},"18":{"start":{"line":108,"column":4},"end":{"line":108,"column":71}},"19":{"start":{"line":109,"column":4},"end":{"line":109,"column":59}},"20":{"start":{"line":110,"column":4},"end":{"line":110,"column":58}},"21":{"start":{"line":112,"column":4},"end":{"line":112,"column":3845}},"22":{"start":{"line":113,"column":6},"end":{"line":113,"column":61}},"23":{"start":{"line":115,"column":6},"end":{"line":115,"column":64}},"24":{"start":{"line":131,"column":4},"end":{"line":131,"column":27}},"25":{"start":{"line":132,"column":4},"end":{"line":132,"column":15}},"26":{"start":{"line":147,"column":4},"end":{"line":147,"column":33}},"27":{"start":{"line":148,"column":4},"end":{"line":148,"column":15}},"28":{"start":{"line":156,"column":4},"end":{"line":156,"column":13}},"29":{"start":{"line":166,"column":4},"end":{"line":166,"column":92}},"30":{"start":{"line":168,"column":4},"end":{"line":168,"column":74}},"31":{"start":{"line":170,"column":4},"end":{"line":170,"column":47}},"32":{"start":{"line":171,"column":4},"end":{"line":171,"column":15}},"33":{"start":{"line":181,"column":4},"end":{"line":181,"column":95}},"34":{"start":{"line":182,"column":4},"end":{"line":182,"column":15}},"35":{"start":{"line":192,"column":4},"end":{"line":192,"column":27}},"36":{"start":{"line":194,"column":4},"end":{"line":194,"column":15}},"37":{"start":{"line":209,"column":4},"end":{"line":209,"column":33}},"38":{"start":{"line":210,"column":4},"end":{"line":210,"column":15}},"39":{"start":{"line":218,"column":4},"end":{"line":218,"column":27}},"40":{"start":{"line":222,"column":4},"end":{"line":222,"column":43}},"41":{"start":{"line":226,"column":4},"end":{"line":226,"column":19}},"42":{"start":{"line":230,"column":4},"end":{"line":230,"column":19}},"43":{"start":{"line":239,"column":4},"end":{"line":239,"column":29}},"44":{"start":{"line":252,"column":4},"end":{"line":252,"column":45}},"45":{"start":{"line":253,"column":4},"end":{"line":253,"column":56}},"46":{"start":{"line":257,"column":4},"end":{"line":257,"column":45}},"47":{"start":{"line":258,"column":4},"end":{"line":258,"column":23}},"48":{"start":{"line":270,"column":4},"end":{"line":270,"column":38}},"49":{"start":{"line":271,"column":4},"end":{"line":271,"column":15}},"50":{"start":{"line":289,"column":4},"end":{"line":289,"column":97}},"51":{"start":{"line":291,"column":4},"end":{"line":291,"column":33}},"52":{"start":{"line":293,"column":4},"end":{"line":293,"column":9096}},"53":{"start":{"line":294,"column":6},"end":{"line":294,"column":91}},"54":{"start":{"line":296,"column":6},"end":{"line":296,"column":68}},"55":{"start":{"line":299,"column":4},"end":{"line":299,"column":15}},"56":{"start":{"line":309,"column":4},"end":{"line":309,"column":72}},"57":{"start":{"line":310,"column":4},"end":{"line":310,"column":72}},"58":{"start":{"line":312,"column":4},"end":{"line":312,"column":42}},"59":{"start":{"line":314,"column":4},"end":{"line":314,"column":44}},"60":{"start":{"line":322,"column":4},"end":{"line":322,"column":45}},"61":{"start":{"line":323,"column":4},"end":{"line":323,"column":71}},"62":{"start":{"line":324,"column":4},"end":{"line":324,"column":57}},"63":{"start":{"line":325,"column":4},"end":{"line":325,"column":67}},"64":{"start":{"line":327,"column":4},"end":{"line":327,"column":82}},"65":{"start":{"line":331,"column":4},"end":{"line":331,"column":45}},"66":{"start":{"line":332,"column":4},"end":{"line":332,"column":76}},"67":{"start":{"line":333,"column":4},"end":{"line":333,"column":37}},"68":{"start":{"line":337,"column":4},"end":{"line":337,"column":57}},"69":{"start":{"line":338,"column":4},"end":{"line":338,"column":59}},"70":{"start":{"line":339,"column":4},"end":{"line":339,"column":84}},"71":{"start":{"line":340,"column":4},"end":{"line":340,"column":71}},"72":{"start":{"line":341,"column":4},"end":{"line":341,"column":52}},"73":{"start":{"line":343,"column":4},"end":{"line":343,"column":72}},"74":{"start":{"line":345,"column":4},"end":{"line":345,"column":58}},"75":{"start":{"line":346,"column":4},"end":{"line":346,"column":32}},"76":{"start":{"line":348,"column":4},"end":{"line":348,"column":83}},"77":{"start":{"line":349,"column":4},"end":{"line":349,"column":44}},"78":{"start":{"line":350,"column":4},"end":{"line":350,"column":84}},"79":{"start":{"line":354,"column":4},"end":{"line":354,"column":45}},"80":{"start":{"line":355,"column":4},"end":{"line":355,"column":76}},"81":{"start":{"line":356,"column":4},"end":{"line":356,"column":37}},"82":{"start":{"line":360,"column":4},"end":{"line":360,"column":57}},"83":{"start":{"line":361,"column":4},"end":{"line":361,"column":59}},"84":{"start":{"line":362,"column":4},"end":{"line":362,"column":84}},"85":{"start":{"line":363,"column":4},"end":{"line":363,"column":71}},"86":{"start":{"line":364,"column":4},"end":{"line":364,"column":52}},"87":{"start":{"line":366,"column":4},"end":{"line":366,"column":66}},"88":{"start":{"line":368,"column":4},"end":{"line":368,"column":71}},"89":{"start":{"line":370,"column":4},"end":{"line":370,"column":58}},"90":{"start":{"line":371,"column":4},"end":{"line":371,"column":32}},"91":{"start":{"line":373,"column":4},"end":{"line":373,"column":83}},"92":{"start":{"line":374,"column":4},"end":{"line":374,"column":44}},"93":{"start":{"line":375,"column":4},"end":{"line":375,"column":84}},"94":{"start":{"line":377,"column":4},"end":{"line":377,"column":47}},"95":{"start":{"line":385,"column":4},"end":{"line":385,"column":57}},"96":{"start":{"line":386,"column":4},"end":{"line":386,"column":59}},"97":{"start":{"line":387,"column":4},"end":{"line":387,"column":84}},"98":{"start":{"line":389,"column":4},"end":{"line":389,"column":72}},"99":{"start":{"line":390,"column":4},"end":{"line":390,"column":68}},"100":{"start":{"line":391,"column":4},"end":{"line":391,"column":60}},"101":{"start":{"line":392,"column":4},"end":{"line":392,"column":56}},"102":{"start":{"line":394,"column":4},"end":{"line":394,"column":76}},"103":{"start":{"line":395,"column":4},"end":{"line":395,"column":65}},"104":{"start":{"line":397,"column":4},"end":{"line":397,"column":79}},"105":{"start":{"line":398,"column":4},"end":{"line":398,"column":74}},"106":{"start":{"line":400,"column":4},"end":{"line":400,"column":83}},"107":{"start":{"line":401,"column":4},"end":{"line":401,"column":48}},"108":{"start":{"line":402,"column":4},"end":{"line":402,"column":46}},"109":{"start":{"line":403,"column":4},"end":{"line":403,"column":92}},"110":{"start":{"line":404,"column":4},"end":{"line":404,"column":88}},"111":{"start":{"line":406,"column":4},"end":{"line":406,"column":37}},"112":{"start":{"line":415,"column":4},"end":{"line":415,"column":57}},"113":{"start":{"line":416,"column":4},"end":{"line":416,"column":35}},"114":{"start":{"line":417,"column":4},"end":{"line":417,"column":37}},"115":{"start":{"line":418,"column":4},"end":{"line":418,"column":32}},"116":{"start":{"line":419,"column":4},"end":{"line":419,"column":39}},"117":{"start":{"line":420,"column":4},"end":{"line":420,"column":23}},"118":{"start":{"line":421,"column":4},"end":{"line":421,"column":23}},"119":{"start":{"line":422,"column":4},"end":{"line":422,"column":25}},"120":{"start":{"line":423,"column":4},"end":{"line":423,"column":37}},"121":{"start":{"line":424,"column":4},"end":{"line":424,"column":51}},"122":{"start":{"line":425,"column":4},"end":{"line":425,"column":63}},"123":{"start":{"line":427,"column":4},"end":{"line":427,"column":14338}},"124":{"start":{"line":428,"column":6},"end":{"line":428,"column":74}},"125":{"start":{"line":430,"column":6},"end":{"line":430,"column":74}},"126":{"start":{"line":433,"column":4},"end":{"line":433,"column":39}},"127":{"start":{"line":435,"column":4},"end":{"line":435,"column":60}},"128":{"start":{"line":436,"column":4},"end":{"line":436,"column":62}},"129":{"start":{"line":438,"column":4},"end":{"line":438,"column":23}},"130":{"start":{"line":447,"column":4},"end":{"line":447,"column":14924}},"131":{"start":{"line":448,"column":6},"end":{"line":448,"column":96}},"132":{"start":{"line":451,"column":4},"end":{"line":451,"column":15095}},"133":{"start":{"line":452,"column":6},"end":{"line":452,"column":96}},"134":{"start":{"line":459,"column":4},"end":{"line":459,"column":67}},"135":{"start":{"line":463,"column":4},"end":{"line":463,"column":57}},"136":{"start":{"line":464,"column":4},"end":{"line":464,"column":15598}},"137":{"start":{"line":473,"column":4},"end":{"line":473,"column":57}},"138":{"start":{"line":474,"column":4},"end":{"line":474,"column":83}}},"branchMap":{"1":{"line":29,"type":"if","locations":[{"start":{"line":29,"column":4},"end":{"line":29,"column":4}},{"start":{"line":29,"column":4},"end":{"line":29,"column":4}}]},"2":{"line":34,"type":"if","locations":[{"start":{"line":34,"column":4},"end":{"line":34,"column":4}},{"start":{"line":34,"column":4},"end":{"line":34,"column":4}}]},"3":{"line":39,"type":"if","locations":[{"start":{"line":39,"column":4},"end":{"line":39,"column":4}},{"start":{"line":39,"column":4},"end":{"line":39,"column":4}}]},"4":{"line":112,"type":"if","locations":[{"start":{"line":112,"column":4},"end":{"line":112,"column":4}},{"start":{"line":112,"column":4},"end":{"line":112,"column":4}}]},"5":{"line":168,"type":"if","locations":[{"start":{"line":168,"column":4},"end":{"line":168,"column":4}},{"start":{"line":168,"column":4},"end":{"line":168,"column":4}}]},"6":{"line":289,"type":"if","locations":[{"start":{"line":289,"column":4},"end":{"line":289,"column":4}},{"start":{"line":289,"column":4},"end":{"line":289,"column":4}}]},"7":{"line":293,"type":"if","locations":[{"start":{"line":293,"column":4},"end":{"line":293,"column":4}},{"start":{"line":293,"column":4},"end":{"line":293,"column":4}}]},"8":{"line":309,"type":"if","locations":[{"start":{"line":309,"column":4},"end":{"line":309,"column":4}},{"start":{"line":309,"column":4},"end":{"line":309,"column":4}}]},"9":{"line":310,"type":"if","locations":[{"start":{"line":310,"column":4},"end":{"line":310,"column":4}},{"start":{"line":310,"column":4},"end":{"line":310,"column":4}}]},"10":{"line":427,"type":"if","locations":[{"start":{"line":427,"column":4},"end":{"line":427,"column":4}},{"start":{"line":427,"column":4},"end":{"line":427,"column":4}}]},"11":{"line":447,"type":"if","locations":[{"start":{"line":447,"column":4},"end":{"line":447,"column":4}},{"start":{"line":447,"column":4},"end":{"line":447,"column":4}}]},"12":{"line":451,"type":"if","locations":[{"start":{"line":451,"column":4},"end":{"line":451,"column":4}},{"start":{"line":451,"column":4},"end":{"line":451,"column":4}}]}}}} \ No newline at end of file +{"src/core/ElasticDAO.sol":{"l":{"24":7,"25":7,"26":7,"29":22,"30":22,"32":22,"33":21,"36":75,"37":75,"38":74,"41":0,"42":0,"45":34,"46":33,"49":40,"50":40,"51":40,"52":40,"54":40,"55":38,"58":4,"59":4,"69":42,"70":42,"71":42,"72":42,"73":42,"74":42,"76":42,"77":42,"78":42,"83":3,"84":3,"85":3,"88":3,"89":3,"91":3,"102":33,"103":33,"105":33,"116":33,"117":33,"118":33,"120":33,"124":4,"126":4,"131":4,"132":4,"141":4,"151":4,"154":3,"155":3,"158":3,"159":3,"160":3,"161":3,"164":3,"168":0,"169":0,"170":0,"171":0,"175":0,"187":21,"189":21,"190":21,"191":21,"195":16,"197":15,"198":15,"199":15,"200":15,"202":15,"204":15,"205":45,"207":15,"208":15,"214":0,"218":0,"224":82,"225":82,"229":245,"233":28,"234":28},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAO.sol","s":{"1":7,"2":7,"3":22,"4":22,"5":22,"6":75,"7":75,"8":0,"9":34,"10":40,"11":40,"12":40,"13":40,"14":40,"15":4,"16":42,"17":42,"18":42,"19":42,"20":42,"21":42,"22":42,"23":42,"24":42,"25":3,"26":3,"27":3,"28":3,"29":3,"30":3,"31":33,"32":33,"33":33,"34":33,"35":33,"36":33,"37":33,"38":4,"39":4,"40":4,"41":4,"42":4,"43":4,"44":3,"45":3,"46":3,"47":3,"48":3,"49":3,"50":3,"51":0,"52":0,"53":0,"54":0,"55":0,"56":21,"57":21,"58":21,"59":21,"60":16,"61":15,"62":15,"63":15,"64":15,"65":15,"66":15,"67":45,"68":15,"69":15,"70":0,"71":0,"72":82,"73":82,"74":245,"75":28,"76":28},"b":{"1":[7,0],"2":[21,1],"3":[74,1],"4":[0,0],"5":[33,1],"6":[38,2],"7":[4,0],"8":[33,0],"9":[4,0],"10":[3,1],"11":[15,1]},"f":{"1":7,"2":22,"3":75,"4":0,"5":34,"6":40,"7":4,"8":42,"9":3,"10":33,"11":4,"12":0,"13":0,"14":21,"15":16,"16":0,"17":0,"18":82,"19":245,"20":28,"21":0},"fnMap":{"1":{"name":"onlyAfterSummoning","line":23,"loc":{"start":{"line":23,"column":2},"end":{"line":27,"column":2}}},"2":{"name":"onlyAfterTokenInitialized","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":34,"column":2}}},"3":{"name":"onlyBeforeSummoning","line":35,"loc":{"start":{"line":35,"column":2},"end":{"line":39,"column":2}}},"4":{"name":"onlyController","line":40,"loc":{"start":{"line":40,"column":2},"end":{"line":43,"column":2}}},"5":{"name":"onlyDeployer","line":44,"loc":{"start":{"line":44,"column":2},"end":{"line":47,"column":2}}},"6":{"name":"onlySummoners","line":48,"loc":{"start":{"line":48,"column":2},"end":{"line":56,"column":2}}},"7":{"name":"onlyWhenOpen","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":60,"column":2}}},"8":{"name":"constructor","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":79,"column":2}}},"9":{"name":"exit","line":81,"loc":{"start":{"line":81,"column":2},"end":{"line":92,"column":2}}},"10":{"name":"initializeToken","line":101,"loc":{"start":{"line":94,"column":2},"end":{"line":121,"column":2}}},"11":{"name":"join","line":123,"loc":{"start":{"line":123,"column":2},"end":{"line":165,"column":2}}},"12":{"name":"setController","line":167,"loc":{"start":{"line":167,"column":2},"end":{"line":172,"column":2}}},"13":{"name":"setMaxVotingLambda","line":174,"loc":{"start":{"line":174,"column":2},"end":{"line":176,"column":2}}},"14":{"name":"seedSummoning","line":185,"loc":{"start":{"line":180,"column":2},"end":{"line":192,"column":2}}},"15":{"name":"summon","line":194,"loc":{"start":{"line":194,"column":2},"end":{"line":209,"column":2}}},"16":{"name":"getDAO","line":213,"loc":{"start":{"line":213,"column":2},"end":{"line":215,"column":2}}},"17":{"name":"getEcosystem","line":217,"loc":{"start":{"line":217,"column":2},"end":{"line":219,"column":2}}},"18":{"name":"_getDAO","line":223,"loc":{"start":{"line":223,"column":2},"end":{"line":226,"column":2}}},"19":{"name":"_getEcosystem","line":228,"loc":{"start":{"line":228,"column":2},"end":{"line":230,"column":2}}},"20":{"name":"_getToken","line":232,"loc":{"start":{"line":232,"column":2},"end":{"line":236,"column":2}}},"21":{"name":null,"line":240,"loc":{"start":{"line":240,"column":2},"end":{"line":240,"column":31}}}},"statementMap":{"1":{"start":{"line":24,"column":4},"end":{"line":24,"column":39}},"2":{"start":{"line":25,"column":4},"end":{"line":25,"column":60}},"3":{"start":{"line":29,"column":4},"end":{"line":29,"column":57}},"4":{"start":{"line":30,"column":4},"end":{"line":30,"column":913}},"5":{"start":{"line":32,"column":4},"end":{"line":32,"column":77}},"6":{"start":{"line":36,"column":4},"end":{"line":36,"column":39}},"7":{"start":{"line":37,"column":4},"end":{"line":37,"column":73}},"8":{"start":{"line":41,"column":4},"end":{"line":41,"column":67}},"9":{"start":{"line":45,"column":4},"end":{"line":45,"column":63}},"10":{"start":{"line":49,"column":4},"end":{"line":49,"column":57}},"11":{"start":{"line":50,"column":4},"end":{"line":50,"column":52}},"12":{"start":{"line":51,"column":4},"end":{"line":51,"column":79}},"13":{"start":{"line":52,"column":4},"end":{"line":52,"column":64}},"14":{"start":{"line":54,"column":4},"end":{"line":54,"column":55}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":71}},"16":{"start":{"line":69,"column":4},"end":{"line":69,"column":49}},"17":{"start":{"line":70,"column":4},"end":{"line":70,"column":27}},"18":{"start":{"line":71,"column":4},"end":{"line":71,"column":24}},"19":{"start":{"line":72,"column":4},"end":{"line":72,"column":98}},"20":{"start":{"line":73,"column":4},"end":{"line":73,"column":40}},"21":{"start":{"line":74,"column":4},"end":{"line":74,"column":25}},"22":{"start":{"line":76,"column":4},"end":{"line":76,"column":74}},"23":{"start":{"line":77,"column":4},"end":{"line":77,"column":79}},"24":{"start":{"line":78,"column":4},"end":{"line":78,"column":74}},"25":{"start":{"line":83,"column":4},"end":{"line":83,"column":45}},"26":{"start":{"line":84,"column":4},"end":{"line":84,"column":77}},"27":{"start":{"line":85,"column":4},"end":{"line":85,"column":53}},"28":{"start":{"line":88,"column":4},"end":{"line":88,"column":72}},"29":{"start":{"line":89,"column":4},"end":{"line":89,"column":86}},"30":{"start":{"line":91,"column":4},"end":{"line":91,"column":41}},"31":{"start":{"line":102,"column":4},"end":{"line":102,"column":88}},"32":{"start":{"line":103,"column":4},"end":{"line":103,"column":57}},"33":{"start":{"line":105,"column":4},"end":{"line":105,"column":3533}},"34":{"start":{"line":116,"column":4},"end":{"line":116,"column":77}},"35":{"start":{"line":117,"column":4},"end":{"line":117,"column":38}},"36":{"start":{"line":118,"column":4},"end":{"line":118,"column":38}},"37":{"start":{"line":120,"column":4},"end":{"line":120,"column":51}},"38":{"start":{"line":124,"column":4},"end":{"line":124,"column":45}},"39":{"start":{"line":126,"column":4},"end":{"line":126,"column":4117}},"40":{"start":{"line":131,"column":4},"end":{"line":131,"column":77}},"41":{"start":{"line":132,"column":4},"end":{"line":132,"column":4328}},"42":{"start":{"line":141,"column":4},"end":{"line":141,"column":4774}},"43":{"start":{"line":151,"column":4},"end":{"line":151,"column":67}},"44":{"start":{"line":154,"column":4},"end":{"line":154,"column":65}},"45":{"start":{"line":155,"column":4},"end":{"line":155,"column":72}},"46":{"start":{"line":158,"column":4},"end":{"line":158,"column":57}},"47":{"start":{"line":159,"column":4},"end":{"line":159,"column":59}},"48":{"start":{"line":160,"column":4},"end":{"line":160,"column":18}},"49":{"start":{"line":161,"column":4},"end":{"line":161,"column":32}},"50":{"start":{"line":164,"column":4},"end":{"line":164,"column":53}},"51":{"start":{"line":168,"column":4},"end":{"line":168,"column":27}},"52":{"start":{"line":169,"column":4},"end":{"line":169,"column":83}},"53":{"start":{"line":170,"column":4},"end":{"line":170,"column":38}},"54":{"start":{"line":171,"column":4},"end":{"line":171,"column":38}},"55":{"start":{"line":175,"column":4},"end":{"line":175,"column":37}},"56":{"start":{"line":187,"column":4},"end":{"line":187,"column":45}},"57":{"start":{"line":189,"column":4},"end":{"line":189,"column":30}},"58":{"start":{"line":190,"column":4},"end":{"line":190,"column":62}},"59":{"start":{"line":191,"column":4},"end":{"line":191,"column":73}},"60":{"start":{"line":195,"column":4},"end":{"line":195,"column":98}},"61":{"start":{"line":197,"column":4},"end":{"line":197,"column":57}},"62":{"start":{"line":198,"column":4},"end":{"line":198,"column":52}},"63":{"start":{"line":199,"column":4},"end":{"line":199,"column":79}},"64":{"start":{"line":200,"column":4},"end":{"line":200,"column":6717}},"65":{"start":{"line":202,"column":4},"end":{"line":202,"column":77}},"66":{"start":{"line":204,"column":4},"end":{"line":204,"column":6837}},"67":{"start":{"line":205,"column":6},"end":{"line":205,"column":76}},"68":{"start":{"line":207,"column":4},"end":{"line":207,"column":22}},"69":{"start":{"line":208,"column":4},"end":{"line":208,"column":29}},"70":{"start":{"line":214,"column":4},"end":{"line":214,"column":20}},"71":{"start":{"line":218,"column":4},"end":{"line":218,"column":26}},"72":{"start":{"line":224,"column":4},"end":{"line":224,"column":57}},"73":{"start":{"line":225,"column":4},"end":{"line":225,"column":79}},"74":{"start":{"line":229,"column":4},"end":{"line":229,"column":70}},"75":{"start":{"line":233,"column":4},"end":{"line":233,"column":57}},"76":{"start":{"line":234,"column":4},"end":{"line":234,"column":7880}}},"branchMap":{"1":{"line":25,"type":"if","locations":[{"start":{"line":25,"column":4},"end":{"line":25,"column":4}},{"start":{"line":25,"column":4},"end":{"line":25,"column":4}}]},"2":{"line":32,"type":"if","locations":[{"start":{"line":32,"column":4},"end":{"line":32,"column":4}},{"start":{"line":32,"column":4},"end":{"line":32,"column":4}}]},"3":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":37,"column":4}},{"start":{"line":37,"column":4},"end":{"line":37,"column":4}}]},"4":{"line":41,"type":"if","locations":[{"start":{"line":41,"column":4},"end":{"line":41,"column":4}},{"start":{"line":41,"column":4},"end":{"line":41,"column":4}}]},"5":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":45,"column":4}},{"start":{"line":45,"column":4},"end":{"line":45,"column":4}}]},"6":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":54,"column":4}},{"start":{"line":54,"column":4},"end":{"line":54,"column":4}}]},"7":{"line":58,"type":"if","locations":[{"start":{"line":58,"column":4},"end":{"line":58,"column":4}},{"start":{"line":58,"column":4},"end":{"line":58,"column":4}}]},"8":{"line":102,"type":"if","locations":[{"start":{"line":102,"column":4},"end":{"line":102,"column":4}},{"start":{"line":102,"column":4},"end":{"line":102,"column":4}}]},"9":{"line":126,"type":"if","locations":[{"start":{"line":126,"column":4},"end":{"line":126,"column":4}},{"start":{"line":126,"column":4},"end":{"line":126,"column":4}}]},"10":{"line":151,"type":"if","locations":[{"start":{"line":151,"column":4},"end":{"line":151,"column":4}},{"start":{"line":151,"column":4},"end":{"line":151,"column":4}}]},"11":{"line":195,"type":"if","locations":[{"start":{"line":195,"column":4},"end":{"line":195,"column":4}},{"start":{"line":195,"column":4},"end":{"line":195,"column":4}}]}}},"src/core/ElasticDAOFactory.sol":{"l":{"21":0,"22":0,"26":3,"27":3,"46":15,"50":15,"52":15,"53":15,"54":15,"58":0,"59":0,"63":0,"65":0,"66":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAOFactory.sol","s":{"1":0,"2":3,"3":3,"4":15,"5":15,"6":15,"7":15,"8":15,"9":0,"10":0,"11":0,"12":0,"13":0},"b":{"1":[0,0]},"f":{"1":0,"2":3,"3":15,"4":0,"5":0,"6":0},"fnMap":{"1":{"name":"onlyDeployer","line":20,"loc":{"start":{"line":20,"column":2},"end":{"line":23,"column":2}}},"2":{"name":"constructor","line":25,"loc":{"start":{"line":25,"column":2},"end":{"line":28,"column":2}}},"3":{"name":"deployDAOAndToken","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":55,"column":2}}},"4":{"name":"updateFeeAddress","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":60,"column":2}}},"5":{"name":"collectFees","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":67,"column":2}}},"6":{"name":null,"line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":71,"column":31}}}},"statementMap":{"1":{"start":{"line":21,"column":4},"end":{"line":21,"column":63}},"2":{"start":{"line":26,"column":4},"end":{"line":26,"column":24}},"3":{"start":{"line":27,"column":4},"end":{"line":27,"column":49}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":1354}},"5":{"start":{"line":50,"column":4},"end":{"line":50,"column":96}},"6":{"start":{"line":52,"column":4},"end":{"line":52,"column":49}},"7":{"start":{"line":53,"column":4},"end":{"line":53,"column":55}},"8":{"start":{"line":54,"column":4},"end":{"line":54,"column":41}},"9":{"start":{"line":58,"column":4},"end":{"line":58,"column":37}},"10":{"start":{"line":59,"column":4},"end":{"line":59,"column":40}},"11":{"start":{"line":63,"column":4},"end":{"line":63,"column":42}},"12":{"start":{"line":65,"column":4},"end":{"line":65,"column":30}},"13":{"start":{"line":66,"column":4},"end":{"line":66,"column":51}}},"branchMap":{"1":{"line":21,"type":"if","locations":[{"start":{"line":21,"column":4},"end":{"line":21,"column":4}},{"start":{"line":21,"column":4},"end":{"line":21,"column":4}}]}}},"src/interfaces/IElasticToken.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IElasticToken.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/interfaces/IERC20.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IERC20.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/libraries/ElasticMath.sol":{"l":{"18":4,"42":4,"44":4,"47":4,"50":4,"53":4,"56":4,"59":4,"62":4,"65":4,"68":4,"76":0,"94":7,"107":4,"124":82,"134":194,"144":35},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/ElasticMath.sol","s":{"1":4,"2":4,"3":4,"4":4,"5":4,"6":4,"7":4,"8":4,"9":4,"10":4,"11":4,"12":0,"13":7,"14":4,"15":82,"16":194,"17":35},"b":{},"f":{"1":4,"2":4,"3":0,"4":7,"5":4,"6":82,"7":194,"8":35},"fnMap":{"1":{"name":"capitalDelta","line":13,"loc":{"start":{"line":13,"column":2},"end":{"line":19,"column":2}}},"2":{"name":"deltaE","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":69,"column":2}}},"3":{"name":"lambdaFromT","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":77,"column":2}}},"4":{"name":"mDash","line":89,"loc":{"start":{"line":89,"column":2},"end":{"line":95,"column":2}}},"5":{"name":"revamp","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":108,"column":2}}},"6":{"name":"t","line":119,"loc":{"start":{"line":119,"column":2},"end":{"line":125,"column":2}}},"7":{"name":"wmul","line":133,"loc":{"start":{"line":133,"column":2},"end":{"line":135,"column":2}}},"8":{"name":"wdiv","line":143,"loc":{"start":{"line":143,"column":2},"end":{"line":145,"column":2}}}},"statementMap":{"1":{"start":{"line":18,"column":4},"end":{"line":18,"column":53}},"2":{"start":{"line":42,"column":4},"end":{"line":42,"column":58}},"3":{"start":{"line":44,"column":4},"end":{"line":44,"column":42}},"4":{"start":{"line":47,"column":4},"end":{"line":47,"column":34}},"5":{"start":{"line":50,"column":4},"end":{"line":50,"column":31}},"6":{"start":{"line":53,"column":4},"end":{"line":53,"column":44}},"7":{"start":{"line":56,"column":4},"end":{"line":56,"column":26}},"8":{"start":{"line":59,"column":4},"end":{"line":59,"column":35}},"9":{"start":{"line":62,"column":4},"end":{"line":62,"column":34}},"10":{"start":{"line":65,"column":4},"end":{"line":65,"column":27}},"11":{"start":{"line":68,"column":4},"end":{"line":68,"column":22}},"12":{"start":{"line":76,"column":4},"end":{"line":76,"column":30}},"13":{"start":{"line":94,"column":4},"end":{"line":94,"column":44}},"14":{"start":{"line":107,"column":4},"end":{"line":107,"column":57}},"15":{"start":{"line":124,"column":4},"end":{"line":124,"column":35}},"16":{"start":{"line":134,"column":4},"end":{"line":134,"column":90}},"17":{"start":{"line":144,"column":4},"end":{"line":144,"column":72}}},"branchMap":{}},"src/libraries/SafeMath.sol":{"l":{"29":899,"30":899,"32":899,"46":10,"64":10,"65":10,"67":10,"84":297,"85":0,"88":297,"89":297,"91":297,"107":0,"127":0,"128":0,"131":0,"147":0,"167":0,"168":0,"172":4,"173":0,"175":0,"177":0,"179":4,"180":4,"181":4,"189":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/SafeMath.sol","s":{"1":899,"2":899,"3":899,"4":10,"5":10,"6":10,"7":10,"8":297,"9":0,"10":297,"11":297,"12":297,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":4,"21":0,"22":4,"23":0,"24":4,"25":0,"26":4,"27":4,"28":68,"29":4,"30":0},"b":{"1":[899,0],"2":[10,0],"3":[0,297],"4":[297,0],"5":[0,0],"6":[0,0],"7":[0,4],"8":[0,4],"9":[0,4]},"f":{"1":899,"2":10,"3":10,"4":297,"5":0,"6":0,"7":0,"8":0,"9":4,"10":0},"fnMap":{"1":{"name":"add","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":33,"column":2}}},"2":{"name":"sub","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":2}}},"3":{"name":"sub","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":68,"column":2}}},"4":{"name":"mul","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":92,"column":2}}},"5":{"name":"div","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":108,"column":2}}},"6":{"name":"div","line":122,"loc":{"start":{"line":122,"column":2},"end":{"line":132,"column":2}}},"7":{"name":"mod","line":146,"loc":{"start":{"line":146,"column":2},"end":{"line":148,"column":2}}},"8":{"name":"mod","line":162,"loc":{"start":{"line":162,"column":2},"end":{"line":169,"column":2}}},"9":{"name":"pow","line":171,"loc":{"start":{"line":171,"column":2},"end":{"line":183,"column":2}}},"10":{"name":"max","line":188,"loc":{"start":{"line":188,"column":2},"end":{"line":190,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":21}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":49}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":12}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":54}},"5":{"start":{"line":64,"column":4},"end":{"line":64,"column":32}},"6":{"start":{"line":65,"column":4},"end":{"line":65,"column":21}},"7":{"start":{"line":67,"column":4},"end":{"line":67,"column":12}},"8":{"start":{"line":84,"column":4},"end":{"line":84,"column":2356}},"9":{"start":{"line":85,"column":6},"end":{"line":85,"column":14}},"10":{"start":{"line":88,"column":4},"end":{"line":88,"column":21}},"11":{"start":{"line":89,"column":4},"end":{"line":89,"column":59}},"12":{"start":{"line":91,"column":4},"end":{"line":91,"column":12}},"13":{"start":{"line":107,"column":4},"end":{"line":107,"column":50}},"14":{"start":{"line":127,"column":4},"end":{"line":127,"column":31}},"15":{"start":{"line":128,"column":4},"end":{"line":128,"column":21}},"16":{"start":{"line":131,"column":4},"end":{"line":131,"column":12}},"17":{"start":{"line":147,"column":4},"end":{"line":147,"column":48}},"18":{"start":{"line":167,"column":4},"end":{"line":167,"column":32}},"19":{"start":{"line":168,"column":4},"end":{"line":168,"column":16}},"20":{"start":{"line":172,"column":4},"end":{"line":172,"column":5030}},"21":{"start":{"line":173,"column":6},"end":{"line":173,"column":14}},"22":{"start":{"line":174,"column":11},"end":{"line":174,"column":5078}},"23":{"start":{"line":175,"column":6},"end":{"line":175,"column":17}},"24":{"start":{"line":176,"column":11},"end":{"line":176,"column":5129}},"25":{"start":{"line":177,"column":6},"end":{"line":177,"column":14}},"26":{"start":{"line":179,"column":6},"end":{"line":179,"column":22}},"27":{"start":{"line":180,"column":6},"end":{"line":180,"column":71}},"28":{"start":{"line":180,"column":55},"end":{"line":180,"column":70}},"29":{"start":{"line":181,"column":6},"end":{"line":181,"column":14}},"30":{"start":{"line":189,"column":4},"end":{"line":189,"column":25}}},"branchMap":{"1":{"line":30,"type":"if","locations":[{"start":{"line":30,"column":4},"end":{"line":30,"column":4}},{"start":{"line":30,"column":4},"end":{"line":30,"column":4}}]},"2":{"line":64,"type":"if","locations":[{"start":{"line":64,"column":4},"end":{"line":64,"column":4}},{"start":{"line":64,"column":4},"end":{"line":64,"column":4}}]},"3":{"line":84,"type":"if","locations":[{"start":{"line":84,"column":4},"end":{"line":84,"column":4}},{"start":{"line":84,"column":4},"end":{"line":84,"column":4}}]},"4":{"line":89,"type":"if","locations":[{"start":{"line":89,"column":4},"end":{"line":89,"column":4}},{"start":{"line":89,"column":4},"end":{"line":89,"column":4}}]},"5":{"line":127,"type":"if","locations":[{"start":{"line":127,"column":4},"end":{"line":127,"column":4}},{"start":{"line":127,"column":4},"end":{"line":127,"column":4}}]},"6":{"line":167,"type":"if","locations":[{"start":{"line":167,"column":4},"end":{"line":167,"column":4}},{"start":{"line":167,"column":4},"end":{"line":167,"column":4}}]},"7":{"line":172,"type":"if","locations":[{"start":{"line":172,"column":4},"end":{"line":172,"column":4}},{"start":{"line":172,"column":4},"end":{"line":172,"column":4}}]},"8":{"line":174,"type":"if","locations":[{"start":{"line":174,"column":11},"end":{"line":174,"column":11}},{"start":{"line":174,"column":11},"end":{"line":174,"column":11}}]},"9":{"line":176,"type":"if","locations":[{"start":{"line":176,"column":11},"end":{"line":176,"column":11}},{"start":{"line":176,"column":11},"end":{"line":176,"column":11}}]}}},"src/models/Balance.sol":{"l":{"35":0,"36":0,"37":0,"38":0,"41":0,"42":0,"44":0,"51":0,"52":0,"53":0,"55":0,"64":0,"72":72,"74":72,"80":72,"85":72,"86":72,"87":72,"88":72,"89":72,"90":72,"91":72,"92":72},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Balance.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":72,"14":72,"15":72,"16":72,"17":72,"18":72,"19":72,"20":72,"21":72,"22":72,"23":72},"b":{"1":[72,0]},"f":{"1":0,"2":0,"3":72},"fnMap":{"1":{"name":"deserialize","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":56,"column":2}}},"2":{"name":"exists","line":58,"loc":{"start":{"line":58,"column":2},"end":{"line":65,"column":2}}},"3":{"name":"serialize","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":95,"column":2}}}},"statementMap":{"1":{"start":{"line":35,"column":4},"end":{"line":35,"column":36}},"2":{"start":{"line":36,"column":4},"end":{"line":36,"column":32}},"3":{"start":{"line":37,"column":4},"end":{"line":37,"column":38}},"4":{"start":{"line":38,"column":4},"end":{"line":38,"column":1214}},"5":{"start":{"line":41,"column":4},"end":{"line":41,"column":24}},"6":{"start":{"line":42,"column":4},"end":{"line":42,"column":36}},"7":{"start":{"line":44,"column":4},"end":{"line":44,"column":1419}},"8":{"start":{"line":51,"column":4},"end":{"line":51,"column":36}},"9":{"start":{"line":52,"column":4},"end":{"line":52,"column":34}},"10":{"start":{"line":53,"column":4},"end":{"line":53,"column":34}},"11":{"start":{"line":55,"column":4},"end":{"line":55,"column":17}},"12":{"start":{"line":64,"column":4},"end":{"line":64,"column":15}},"13":{"start":{"line":72,"column":4},"end":{"line":72,"column":71}},"14":{"start":{"line":74,"column":4},"end":{"line":74,"column":2167}},"15":{"start":{"line":80,"column":4},"end":{"line":80,"column":2333}},"16":{"start":{"line":85,"column":4},"end":{"line":85,"column":57}},"17":{"start":{"line":86,"column":4},"end":{"line":86,"column":54}},"18":{"start":{"line":87,"column":4},"end":{"line":87,"column":50}},"19":{"start":{"line":88,"column":4},"end":{"line":88,"column":34}},"20":{"start":{"line":89,"column":4},"end":{"line":89,"column":34}},"21":{"start":{"line":90,"column":4},"end":{"line":90,"column":50}},"22":{"start":{"line":91,"column":4},"end":{"line":91,"column":42}},"23":{"start":{"line":92,"column":4},"end":{"line":92,"column":2815}}},"branchMap":{"1":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":72,"column":4}},{"start":{"line":72,"column":4},"end":{"line":72,"column":4}}]}}},"src/models/BalanceMultipliers.sol":{"l":{"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"45":0,"53":72,"55":72,"59":72,"60":72},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/BalanceMultipliers.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":72,"10":72,"11":72,"12":72},"b":{"1":[72,0]},"f":{"1":0,"2":0,"3":72},"fnMap":{"1":{"name":"deserialize","line":26,"loc":{"start":{"line":26,"column":2},"end":{"line":38,"column":2}}},"2":{"name":"exists","line":40,"loc":{"start":{"line":40,"column":2},"end":{"line":46,"column":2}}},"3":{"name":"serialize","line":52,"loc":{"start":{"line":52,"column":2},"end":{"line":61,"column":2}}}},"statementMap":{"1":{"start":{"line":31,"column":4},"end":{"line":31,"column":36}},"2":{"start":{"line":32,"column":4},"end":{"line":32,"column":32}},"3":{"start":{"line":33,"column":4},"end":{"line":33,"column":32}},"4":{"start":{"line":34,"column":4},"end":{"line":34,"column":76}},"5":{"start":{"line":35,"column":4},"end":{"line":35,"column":76}},"6":{"start":{"line":36,"column":4},"end":{"line":36,"column":24}},"7":{"start":{"line":37,"column":4},"end":{"line":37,"column":17}},"8":{"start":{"line":45,"column":4},"end":{"line":45,"column":15}},"9":{"start":{"line":53,"column":4},"end":{"line":53,"column":90}},"10":{"start":{"line":55,"column":4},"end":{"line":55,"column":1650}},"11":{"start":{"line":59,"column":4},"end":{"line":59,"column":81}},"12":{"start":{"line":60,"column":4},"end":{"line":60,"column":81}}},"branchMap":{"1":{"line":53,"type":"if","locations":[{"start":{"line":53,"column":4},"end":{"line":53,"column":4}},{"start":{"line":53,"column":4},"end":{"line":53,"column":4}}]}}},"src/models/DAO.sol":{"l":{"32":166,"33":166,"35":166,"36":166,"37":166,"38":166,"41":166,"50":0,"54":45,"64":40,"72":57,"77":57,"78":57,"79":57,"81":57,"82":42,"83":126,"84":126,"88":57,"92":166},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/DAO.sol","s":{"1":166,"2":166,"3":166,"4":166,"5":166,"6":166,"7":166,"8":0,"9":45,"10":40,"11":57,"12":57,"13":57,"14":57,"15":57,"16":42,"17":126,"18":126,"19":57,"20":166},"b":{"1":[166,0],"2":[57,0],"3":[42,15]},"f":{"1":166,"2":0,"3":45,"4":40,"5":57,"6":166},"fnMap":{"1":{"name":"deserialize","line":27,"loc":{"start":{"line":27,"column":2},"end":{"line":42,"column":2}}},"2":{"name":"exists","line":49,"loc":{"start":{"line":49,"column":2},"end":{"line":51,"column":2}}},"3":{"name":"getSummoner","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":55,"column":2}}},"4":{"name":"isSummoner","line":63,"loc":{"start":{"line":63,"column":2},"end":{"line":65,"column":2}}},"5":{"name":"serialize","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":89,"column":2}}},"6":{"name":"_exists","line":91,"loc":{"start":{"line":91,"column":2},"end":{"line":93,"column":2}}}},"statementMap":{"1":{"start":{"line":32,"column":4},"end":{"line":32,"column":22}},"2":{"start":{"line":33,"column":4},"end":{"line":33,"column":32}},"3":{"start":{"line":35,"column":4},"end":{"line":35,"column":903}},"4":{"start":{"line":36,"column":6},"end":{"line":36,"column":66}},"5":{"start":{"line":37,"column":6},"end":{"line":37,"column":90}},"6":{"start":{"line":38,"column":6},"end":{"line":38,"column":72}},"7":{"start":{"line":41,"column":4},"end":{"line":41,"column":17}},"8":{"start":{"line":50,"column":4},"end":{"line":50,"column":25}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":76}},"10":{"start":{"line":64,"column":4},"end":{"line":64,"column":82}},"11":{"start":{"line":72,"column":4},"end":{"line":72,"column":2142}},"12":{"start":{"line":77,"column":4},"end":{"line":77,"column":69}},"13":{"start":{"line":78,"column":4},"end":{"line":78,"column":93}},"14":{"start":{"line":79,"column":4},"end":{"line":79,"column":75}},"15":{"start":{"line":81,"column":4},"end":{"line":81,"column":2530}},"16":{"start":{"line":82,"column":6},"end":{"line":82,"column":2597}},"17":{"start":{"line":83,"column":8},"end":{"line":83,"column":89}},"18":{"start":{"line":84,"column":8},"end":{"line":84,"column":90}},"19":{"start":{"line":88,"column":4},"end":{"line":88,"column":62}},"20":{"start":{"line":92,"column":4},"end":{"line":92,"column":58}}},"branchMap":{"1":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":35,"column":4}},{"start":{"line":35,"column":4},"end":{"line":35,"column":4}}]},"2":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":72,"column":4}},{"start":{"line":72,"column":4},"end":{"line":72,"column":4}}]},"3":{"line":81,"type":"if","locations":[{"start":{"line":81,"column":4},"end":{"line":81,"column":4}},{"start":{"line":81,"column":4},"end":{"line":81,"column":4}}]}}},"src/models/Ecosystem.sol":{"l":{"35":556,"36":556,"37":556,"40":556,"43":556,"46":556,"49":556,"50":556,"53":556,"56":556,"61":556,"70":1,"78":78,"80":78,"87":78,"91":78,"95":78,"99":78,"100":78,"104":78,"108":78,"113":78,"117":635},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Ecosystem.sol","s":{"1":556,"2":556,"3":556,"4":556,"5":556,"6":556,"7":556,"8":556,"9":556,"10":556,"11":556,"12":1,"13":78,"14":78,"15":78,"16":78,"17":78,"18":78,"19":78,"20":78,"21":78,"22":78,"23":635},"b":{"1":[556,0],"2":[78,0]},"f":{"1":556,"2":1,"3":78,"4":635},"fnMap":{"1":{"name":"deserialize","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":62,"column":2}}},"2":{"name":"exists","line":69,"loc":{"start":{"line":69,"column":2},"end":{"line":71,"column":2}}},"3":{"name":"serialize","line":77,"loc":{"start":{"line":77,"column":2},"end":{"line":114,"column":2}}},"4":{"name":"_exists","line":116,"loc":{"start":{"line":116,"column":2},"end":{"line":118,"column":2}}}},"statementMap":{"1":{"start":{"line":35,"column":4},"end":{"line":35,"column":1142}},"2":{"start":{"line":36,"column":6},"end":{"line":36,"column":36}},"3":{"start":{"line":37,"column":6},"end":{"line":37,"column":1217}},"4":{"start":{"line":40,"column":6},"end":{"line":40,"column":1345}},"5":{"start":{"line":43,"column":6},"end":{"line":43,"column":1495}},"6":{"start":{"line":46,"column":6},"end":{"line":46,"column":1623}},"7":{"start":{"line":49,"column":6},"end":{"line":49,"column":49}},"8":{"start":{"line":50,"column":6},"end":{"line":50,"column":1795}},"9":{"start":{"line":53,"column":6},"end":{"line":53,"column":1929}},"10":{"start":{"line":56,"column":6},"end":{"line":56,"column":2065}},"11":{"start":{"line":61,"column":4},"end":{"line":61,"column":17}},"12":{"start":{"line":70,"column":4},"end":{"line":70,"column":31}},"13":{"start":{"line":78,"column":4},"end":{"line":78,"column":50}},"14":{"start":{"line":80,"column":4},"end":{"line":80,"column":2684}},"15":{"start":{"line":87,"column":4},"end":{"line":87,"column":2891}},"16":{"start":{"line":91,"column":4},"end":{"line":91,"column":3018}},"17":{"start":{"line":95,"column":4},"end":{"line":95,"column":3167}},"18":{"start":{"line":99,"column":4},"end":{"line":99,"column":98}},"19":{"start":{"line":100,"column":4},"end":{"line":100,"column":3395}},"20":{"start":{"line":104,"column":4},"end":{"line":104,"column":3528}},"21":{"start":{"line":108,"column":4},"end":{"line":108,"column":3663}},"22":{"start":{"line":113,"column":4},"end":{"line":113,"column":68}},"23":{"start":{"line":117,"column":4},"end":{"line":117,"column":64}}},"branchMap":{"1":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":35,"column":4}},{"start":{"line":35,"column":4},"end":{"line":35,"column":4}}]},"2":{"line":80,"type":"if","locations":[{"start":{"line":80,"column":4},"end":{"line":80,"column":4}},{"start":{"line":80,"column":4},"end":{"line":80,"column":4}}]}}},"src/models/EternalModel.sol":{"l":{"30":2080,"37":612,"39":612,"46":3937,"53":1369,"60":0,"67":0,"69":0,"81":1332,"89":273,"97":672,"105":498,"113":0,"121":0,"132":0,"139":0,"141":0,"148":0,"155":0,"162":0,"169":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/EternalModel.sol","s":{"1":2080,"2":612,"3":612,"4":3937,"5":1369,"6":0,"7":0,"8":0,"9":1332,"10":273,"11":672,"12":498,"13":0,"14":0,"15":0},"b":{"1":[612,0],"2":[0,0],"3":[0,0]},"f":{"1":2080,"2":612,"3":3937,"4":1369,"5":0,"6":0,"7":1332,"8":273,"9":672,"10":498,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0},"fnMap":{"1":{"name":"getUint","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":31,"column":2}}},"2":{"name":"getString","line":36,"loc":{"start":{"line":36,"column":2},"end":{"line":40,"column":2}}},"3":{"name":"getAddress","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":2}}},"4":{"name":"getBool","line":52,"loc":{"start":{"line":52,"column":2},"end":{"line":54,"column":2}}},"5":{"name":"getInt","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":61,"column":2}}},"6":{"name":"getBytes","line":66,"loc":{"start":{"line":66,"column":2},"end":{"line":70,"column":2}}},"7":{"name":"setUint","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":82,"column":2}}},"8":{"name":"setString","line":88,"loc":{"start":{"line":88,"column":2},"end":{"line":90,"column":2}}},"9":{"name":"setAddress","line":96,"loc":{"start":{"line":96,"column":2},"end":{"line":98,"column":2}}},"10":{"name":"setBool","line":104,"loc":{"start":{"line":104,"column":2},"end":{"line":106,"column":2}}},"11":{"name":"setInt","line":112,"loc":{"start":{"line":112,"column":2},"end":{"line":114,"column":2}}},"12":{"name":"setBytes","line":120,"loc":{"start":{"line":120,"column":2},"end":{"line":122,"column":2}}},"13":{"name":"deleteUint","line":131,"loc":{"start":{"line":131,"column":2},"end":{"line":133,"column":2}}},"14":{"name":"deleteString","line":138,"loc":{"start":{"line":138,"column":2},"end":{"line":142,"column":2}}},"15":{"name":"deleteAddress","line":147,"loc":{"start":{"line":147,"column":2},"end":{"line":149,"column":2}}},"16":{"name":"deleteBool","line":154,"loc":{"start":{"line":154,"column":2},"end":{"line":156,"column":2}}},"17":{"name":"deleteInt","line":161,"loc":{"start":{"line":161,"column":2},"end":{"line":163,"column":2}}},"18":{"name":"deleteBytes","line":168,"loc":{"start":{"line":168,"column":2},"end":{"line":170,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":30}},"2":{"start":{"line":37,"column":4},"end":{"line":37,"column":52}},"3":{"start":{"line":39,"column":4},"end":{"line":39,"column":32}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":33}},"5":{"start":{"line":53,"column":4},"end":{"line":53,"column":30}},"6":{"start":{"line":60,"column":4},"end":{"line":60,"column":29}},"7":{"start":{"line":67,"column":4},"end":{"line":67,"column":52}},"8":{"start":{"line":69,"column":4},"end":{"line":69,"column":31}},"9":{"start":{"line":81,"column":4},"end":{"line":81,"column":31}},"10":{"start":{"line":89,"column":4},"end":{"line":89,"column":33}},"11":{"start":{"line":97,"column":4},"end":{"line":97,"column":34}},"12":{"start":{"line":105,"column":4},"end":{"line":105,"column":31}},"13":{"start":{"line":113,"column":4},"end":{"line":113,"column":30}},"14":{"start":{"line":121,"column":4},"end":{"line":121,"column":32}},"15":{"start":{"line":139,"column":4},"end":{"line":139,"column":52}}},"branchMap":{"1":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":37,"column":4}},{"start":{"line":37,"column":4},"end":{"line":37,"column":4}}]},"2":{"line":67,"type":"if","locations":[{"start":{"line":67,"column":4},"end":{"line":67,"column":4}},{"start":{"line":67,"column":4},"end":{"line":67,"column":4}}]},"3":{"line":139,"type":"if","locations":[{"start":{"line":139,"column":4},"end":{"line":139,"column":4}},{"start":{"line":139,"column":4},"end":{"line":139,"column":4}}]}}},"src/models/Token.sol":{"l":{"42":227,"43":227,"45":227,"46":223,"47":223,"48":223,"49":223,"50":223,"51":223,"52":223,"53":223,"54":223,"55":223,"58":227,"62":22,"66":72,"68":72,"69":72,"77":108,"84":108,"85":108,"86":108,"87":108,"88":108,"89":108,"90":108,"91":108,"93":108,"99":51,"103":282},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Token.sol","s":{"1":227,"2":227,"3":227,"4":223,"5":223,"6":223,"7":223,"8":223,"9":223,"10":223,"11":223,"12":223,"13":223,"14":227,"15":22,"16":72,"17":72,"18":72,"19":108,"20":108,"21":108,"22":108,"23":108,"24":108,"25":108,"26":108,"27":108,"28":108,"29":51,"30":282},"b":{"1":[223,4],"2":[72,0],"3":[108,0]},"f":{"1":227,"2":22,"3":72,"4":108,"5":51,"6":282},"fnMap":{"1":{"name":"deserialize","line":37,"loc":{"start":{"line":37,"column":2},"end":{"line":59,"column":2}}},"2":{"name":"exists","line":61,"loc":{"start":{"line":61,"column":2},"end":{"line":63,"column":2}}},"3":{"name":"incrementCounter","line":65,"loc":{"start":{"line":65,"column":2},"end":{"line":70,"column":2}}},"4":{"name":"serialize","line":76,"loc":{"start":{"line":76,"column":2},"end":{"line":94,"column":2}}},"5":{"name":"updateNumberOfTokenHolders","line":96,"loc":{"start":{"line":96,"column":2},"end":{"line":100,"column":2}}},"6":{"name":"_exists","line":102,"loc":{"start":{"line":102,"column":2},"end":{"line":104,"column":2}}}},"statementMap":{"1":{"start":{"line":42,"column":4},"end":{"line":42,"column":22}},"2":{"start":{"line":43,"column":4},"end":{"line":43,"column":32}},"3":{"start":{"line":45,"column":4},"end":{"line":45,"column":1269}},"4":{"start":{"line":46,"column":6},"end":{"line":46,"column":70}},"5":{"start":{"line":47,"column":6},"end":{"line":47,"column":64}},"6":{"start":{"line":48,"column":6},"end":{"line":48,"column":76}},"7":{"start":{"line":49,"column":6},"end":{"line":49,"column":58}},"8":{"start":{"line":50,"column":6},"end":{"line":50,"column":68}},"9":{"start":{"line":51,"column":6},"end":{"line":51,"column":58}},"10":{"start":{"line":52,"column":6},"end":{"line":52,"column":90}},"11":{"start":{"line":53,"column":6},"end":{"line":53,"column":66}},"12":{"start":{"line":54,"column":6},"end":{"line":54,"column":96}},"13":{"start":{"line":55,"column":6},"end":{"line":55,"column":70}},"14":{"start":{"line":58,"column":4},"end":{"line":58,"column":17}},"15":{"start":{"line":62,"column":4},"end":{"line":62,"column":25}},"16":{"start":{"line":66,"column":4},"end":{"line":66,"column":65}},"17":{"start":{"line":68,"column":4},"end":{"line":68,"column":76}},"18":{"start":{"line":69,"column":4},"end":{"line":69,"column":83}},"19":{"start":{"line":77,"column":4},"end":{"line":77,"column":2629}},"20":{"start":{"line":84,"column":4},"end":{"line":84,"column":69}},"21":{"start":{"line":85,"column":4},"end":{"line":85,"column":73}},"22":{"start":{"line":86,"column":4},"end":{"line":86,"column":67}},"23":{"start":{"line":87,"column":4},"end":{"line":87,"column":79}},"24":{"start":{"line":88,"column":4},"end":{"line":88,"column":61}},"25":{"start":{"line":89,"column":4},"end":{"line":89,"column":71}},"26":{"start":{"line":90,"column":4},"end":{"line":90,"column":61}},"27":{"start":{"line":91,"column":4},"end":{"line":91,"column":93}},"28":{"start":{"line":93,"column":4},"end":{"line":93,"column":62}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":92}},"30":{"start":{"line":103,"column":4},"end":{"line":103,"column":58}}},"branchMap":{"1":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":45,"column":4}},{"start":{"line":45,"column":4},"end":{"line":45,"column":4}}]},"2":{"line":66,"type":"if","locations":[{"start":{"line":66,"column":4},"end":{"line":66,"column":4}},{"start":{"line":66,"column":4},"end":{"line":66,"column":4}}]},"3":{"line":77,"type":"if","locations":[{"start":{"line":77,"column":4},"end":{"line":77,"column":4}},{"start":{"line":77,"column":4},"end":{"line":77,"column":4}}]}}},"src/models/TokenHolder.sol":{"l":{"29":80,"30":80,"31":80,"33":80,"34":29,"35":29,"38":80,"46":0,"54":72,"56":72,"57":72,"59":72,"67":80},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/TokenHolder.sol","s":{"1":80,"2":80,"3":80,"4":80,"5":29,"6":29,"7":80,"8":0,"9":72,"10":72,"11":72,"12":72,"13":80},"b":{"1":[29,51],"2":[72,0]},"f":{"1":80,"2":0,"3":72,"4":80},"fnMap":{"1":{"name":"deserialize","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":39,"column":2}}},"2":{"name":"exists","line":41,"loc":{"start":{"line":41,"column":2},"end":{"line":47,"column":2}}},"3":{"name":"serialize","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":60,"column":2}}},"4":{"name":"_exists","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":68,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":28}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":32}},"3":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":1003}},"5":{"start":{"line":34,"column":6},"end":{"line":34,"column":98}},"6":{"start":{"line":35,"column":6},"end":{"line":35,"column":96}},"7":{"start":{"line":38,"column":4},"end":{"line":38,"column":17}},"8":{"start":{"line":46,"column":4},"end":{"line":46,"column":48}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":71}},"10":{"start":{"line":56,"column":4},"end":{"line":56,"column":95}},"11":{"start":{"line":57,"column":4},"end":{"line":57,"column":93}},"12":{"start":{"line":59,"column":4},"end":{"line":59,"column":84}},"13":{"start":{"line":67,"column":4},"end":{"line":67,"column":74}}},"branchMap":{"1":{"line":33,"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":33,"column":4}},{"start":{"line":33,"column":4},"end":{"line":33,"column":4}}]},"2":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":54,"column":4}},{"start":{"line":54,"column":4},"end":{"line":54,"column":4}}]}}},"src/services/Configurator.sol":{"l":{"30":42,"31":42,"32":42,"33":42,"34":42,"35":42,"36":42,"37":42,"38":42,"50":42,"52":42,"55":42,"56":42,"57":42,"58":42,"59":42,"60":42,"63":42,"65":42,"66":42,"91":33,"92":33,"93":33,"94":33,"95":33,"96":33,"97":33,"98":33,"99":33,"100":33,"101":33,"103":33,"104":33,"105":33,"107":33},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/services/Configurator.sol","s":{"1":42,"2":42,"3":42,"4":42,"5":42,"6":42,"7":42,"8":42,"9":42,"10":42,"11":42,"12":42,"13":42,"14":42,"15":42,"16":42,"17":42,"18":42,"19":42,"20":42,"21":33,"22":33,"23":33,"24":33,"25":33,"26":33,"27":33,"28":33,"29":33,"30":33,"31":33,"32":33,"33":33,"34":33,"35":33},"b":{},"f":{"1":42,"2":42,"3":33},"fnMap":{"1":{"name":"buildDAO","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":39,"column":2}}},"2":{"name":"buildEcosystem","line":46,"loc":{"start":{"line":46,"column":2},"end":{"line":67,"column":2}}},"3":{"name":"buildToken","line":82,"loc":{"start":{"line":82,"column":2},"end":{"line":108,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":52}},"2":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":29}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":19}},"5":{"start":{"line":34,"column":4},"end":{"line":34,"column":45}},"6":{"start":{"line":35,"column":4},"end":{"line":35,"column":23}},"7":{"start":{"line":36,"column":4},"end":{"line":36,"column":29}},"8":{"start":{"line":37,"column":4},"end":{"line":37,"column":28}},"9":{"start":{"line":38,"column":4},"end":{"line":38,"column":14}},"10":{"start":{"line":50,"column":4},"end":{"line":50,"column":74}},"11":{"start":{"line":52,"column":4},"end":{"line":52,"column":36}},"12":{"start":{"line":55,"column":4},"end":{"line":55,"column":63}},"13":{"start":{"line":56,"column":4},"end":{"line":56,"column":85}},"14":{"start":{"line":57,"column":4},"end":{"line":57,"column":55}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":67}},"16":{"start":{"line":59,"column":4},"end":{"line":59,"column":71}},"17":{"start":{"line":60,"column":4},"end":{"line":60,"column":59}},"18":{"start":{"line":63,"column":4},"end":{"line":63,"column":63}},"19":{"start":{"line":65,"column":4},"end":{"line":65,"column":40}},"20":{"start":{"line":66,"column":4},"end":{"line":66,"column":20}},"21":{"start":{"line":91,"column":4},"end":{"line":91,"column":60}},"22":{"start":{"line":92,"column":4},"end":{"line":92,"column":21}},"23":{"start":{"line":93,"column":4},"end":{"line":93,"column":31}},"24":{"start":{"line":94,"column":4},"end":{"line":94,"column":33}},"25":{"start":{"line":95,"column":4},"end":{"line":95,"column":15}},"26":{"start":{"line":96,"column":4},"end":{"line":96,"column":19}},"27":{"start":{"line":97,"column":4},"end":{"line":97,"column":32}},"28":{"start":{"line":98,"column":4},"end":{"line":98,"column":47}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":21}},"30":{"start":{"line":100,"column":4},"end":{"line":100,"column":25}},"31":{"start":{"line":101,"column":4},"end":{"line":101,"column":97}},"32":{"start":{"line":103,"column":4},"end":{"line":103,"column":49}},"33":{"start":{"line":104,"column":4},"end":{"line":104,"column":68}},"34":{"start":{"line":105,"column":4},"end":{"line":105,"column":32}},"35":{"start":{"line":107,"column":4},"end":{"line":107,"column":16}}},"branchMap":{}},"src/tokens/ElasticGovernanceToken.sol":{"l":{"29":66,"30":66,"34":3,"35":3,"39":69,"40":69,"44":33,"45":33,"46":33,"47":33,"60":0,"79":0,"80":0,"89":7,"90":7,"91":7,"93":7,"102":1,"103":1,"107":0,"108":0,"109":0,"110":0,"112":0,"113":0,"115":0,"131":0,"132":0,"147":3,"148":3,"156":0,"166":0,"168":0,"170":0,"171":0,"181":0,"182":0,"192":0,"194":0,"209":69,"210":69,"218":0,"222":0,"226":33,"230":33,"239":0,"252":6,"253":6,"257":0,"258":0,"270":0,"271":0,"289":0,"291":0,"293":0,"294":0,"296":0,"299":0,"309":0,"310":0,"312":0,"314":0,"322":0,"323":0,"324":0,"325":0,"327":0,"331":0,"332":0,"333":0,"337":3,"338":3,"339":3,"340":3,"341":3,"343":3,"345":3,"346":3,"348":3,"349":3,"350":3,"354":0,"355":0,"356":0,"360":69,"361":69,"362":69,"363":69,"364":69,"366":69,"368":69,"370":69,"371":69,"373":69,"374":69,"375":69,"377":69,"385":0,"386":0,"387":0,"389":0,"390":0,"391":0,"392":0,"394":0,"395":0,"397":0,"398":0,"400":0,"401":0,"402":0,"403":0,"404":0,"406":0,"415":72,"416":72,"417":72,"418":72,"419":72,"420":72,"421":72,"422":72,"423":72,"424":72,"425":72,"427":72,"428":69,"430":3,"433":72,"435":72,"436":72,"438":72,"447":72,"448":51,"451":72,"452":0,"459":237,"463":80,"464":80,"473":13,"474":13},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/tokens/ElasticGovernanceToken.sol","s":{"1":66,"2":3,"3":69,"4":33,"5":33,"6":33,"7":33,"8":0,"9":0,"10":0,"11":7,"12":7,"13":7,"14":7,"15":1,"16":1,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":3,"27":3,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":69,"38":69,"39":0,"40":0,"41":33,"42":33,"43":0,"44":6,"45":6,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":3,"69":3,"70":3,"71":3,"72":3,"73":3,"74":3,"75":3,"76":3,"77":3,"78":3,"79":0,"80":0,"81":0,"82":69,"83":69,"84":69,"85":69,"86":69,"87":69,"88":69,"89":69,"90":69,"91":69,"92":69,"93":69,"94":69,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":72,"113":72,"114":72,"115":72,"116":72,"117":72,"118":72,"119":72,"120":72,"121":72,"122":72,"123":72,"124":69,"125":3,"126":72,"127":72,"128":72,"129":72,"130":72,"131":51,"132":72,"133":0,"134":237,"135":80,"136":80,"137":13,"138":13},"b":{"1":[66,0],"2":[3,0],"3":[69,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[69,3],"11":[51,21],"12":[0,72]},"f":{"1":66,"2":3,"3":69,"4":33,"5":0,"6":0,"7":7,"8":1,"9":0,"10":0,"11":3,"12":0,"13":0,"14":0,"15":0,"16":69,"17":0,"18":0,"19":33,"20":33,"21":0,"22":6,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":3,"30":0,"31":69,"32":0,"33":72,"34":72,"35":237,"36":80,"37":13},"fnMap":{"1":{"name":"onlyDAO","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":31,"column":2}}},"2":{"name":"onlyDAOorBurner","line":33,"loc":{"start":{"line":33,"column":2},"end":{"line":36,"column":2}}},"3":{"name":"onlyDAOorMinter","line":38,"loc":{"start":{"line":38,"column":2},"end":{"line":41,"column":2}}},"4":{"name":"constructor","line":43,"loc":{"start":{"line":43,"column":2},"end":{"line":48,"column":2}}},"5":{"name":"allowance","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":61,"column":2}}},"6":{"name":"approve","line":78,"loc":{"start":{"line":78,"column":2},"end":{"line":81,"column":2}}},"7":{"name":"balanceOf","line":88,"loc":{"start":{"line":88,"column":2},"end":{"line":94,"column":2}}},"8":{"name":"balanceOfInShares","line":101,"loc":{"start":{"line":101,"column":2},"end":{"line":104,"column":2}}},"9":{"name":"balanceOfVoting","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":117,"column":2}}},"10":{"name":"burn","line":128,"loc":{"start":{"line":125,"column":2},"end":{"line":133,"column":2}}},"11":{"name":"burnShares","line":144,"loc":{"start":{"line":141,"column":2},"end":{"line":149,"column":2}}},"12":{"name":"decimals","line":155,"loc":{"start":{"line":155,"column":2},"end":{"line":157,"column":2}}},"13":{"name":"decreaseAllowance","line":165,"loc":{"start":{"line":165,"column":2},"end":{"line":172,"column":2}}},"14":{"name":"increaseAllowance","line":180,"loc":{"start":{"line":180,"column":2},"end":{"line":183,"column":2}}},"15":{"name":"mint","line":191,"loc":{"start":{"line":191,"column":2},"end":{"line":195,"column":2}}},"16":{"name":"mintShares","line":206,"loc":{"start":{"line":203,"column":2},"end":{"line":211,"column":2}}},"17":{"name":"name","line":217,"loc":{"start":{"line":217,"column":2},"end":{"line":219,"column":2}}},"18":{"name":"numberOfTokenHolders","line":221,"loc":{"start":{"line":221,"column":2},"end":{"line":223,"column":2}}},"19":{"name":"setBurner","line":225,"loc":{"start":{"line":225,"column":2},"end":{"line":227,"column":2}}},"20":{"name":"setMinter","line":229,"loc":{"start":{"line":229,"column":2},"end":{"line":231,"column":2}}},"21":{"name":"symbol","line":238,"loc":{"start":{"line":238,"column":2},"end":{"line":240,"column":2}}},"22":{"name":"totalSupply","line":251,"loc":{"start":{"line":251,"column":2},"end":{"line":254,"column":2}}},"23":{"name":"totalSupplyInShares","line":256,"loc":{"start":{"line":256,"column":2},"end":{"line":259,"column":2}}},"24":{"name":"transfer","line":269,"loc":{"start":{"line":269,"column":2},"end":{"line":272,"column":2}}},"25":{"name":"transferFrom","line":284,"loc":{"start":{"line":284,"column":2},"end":{"line":300,"column":2}}},"26":{"name":"_approve","line":304,"loc":{"start":{"line":304,"column":2},"end":{"line":315,"column":2}}},"27":{"name":"_balanceAt","line":317,"loc":{"start":{"line":317,"column":2},"end":{"line":328,"column":2}}},"28":{"name":"_burn","line":330,"loc":{"start":{"line":330,"column":2},"end":{"line":334,"column":2}}},"29":{"name":"_burnShares","line":336,"loc":{"start":{"line":336,"column":2},"end":{"line":351,"column":2}}},"30":{"name":"_mint","line":353,"loc":{"start":{"line":353,"column":2},"end":{"line":357,"column":2}}},"31":{"name":"_mintShares","line":359,"loc":{"start":{"line":359,"column":2},"end":{"line":378,"column":2}}},"32":{"name":"_transfer","line":380,"loc":{"start":{"line":380,"column":2},"end":{"line":407,"column":2}}},"33":{"name":"_updateBalance","line":409,"loc":{"start":{"line":409,"column":2},"end":{"line":439,"column":2}}},"34":{"name":"_updateNumberOfTokenHolders","line":441,"loc":{"start":{"line":441,"column":2},"end":{"line":454,"column":2}}},"35":{"name":"_getEcosystem","line":458,"loc":{"start":{"line":458,"column":2},"end":{"line":460,"column":2}}},"36":{"name":"_getTokenHolder","line":462,"loc":{"start":{"line":462,"column":2},"end":{"line":470,"column":2}}},"37":{"name":"_getToken","line":472,"loc":{"start":{"line":472,"column":2},"end":{"line":475,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":90}},"2":{"start":{"line":34,"column":4},"end":{"line":34,"column":90}},"3":{"start":{"line":39,"column":4},"end":{"line":39,"column":90}},"4":{"start":{"line":44,"column":4},"end":{"line":44,"column":23}},"5":{"start":{"line":45,"column":4},"end":{"line":45,"column":27}},"6":{"start":{"line":46,"column":4},"end":{"line":46,"column":49}},"7":{"start":{"line":47,"column":4},"end":{"line":47,"column":23}},"8":{"start":{"line":60,"column":4},"end":{"line":60,"column":40}},"9":{"start":{"line":79,"column":4},"end":{"line":79,"column":42}},"10":{"start":{"line":80,"column":4},"end":{"line":80,"column":15}},"11":{"start":{"line":89,"column":4},"end":{"line":89,"column":45}},"12":{"start":{"line":90,"column":4},"end":{"line":90,"column":71}},"13":{"start":{"line":91,"column":4},"end":{"line":91,"column":67}},"14":{"start":{"line":93,"column":4},"end":{"line":93,"column":12}},"15":{"start":{"line":102,"column":4},"end":{"line":102,"column":71}},"16":{"start":{"line":103,"column":4},"end":{"line":103,"column":29}},"17":{"start":{"line":107,"column":4},"end":{"line":107,"column":45}},"18":{"start":{"line":108,"column":4},"end":{"line":108,"column":71}},"19":{"start":{"line":109,"column":4},"end":{"line":109,"column":59}},"20":{"start":{"line":110,"column":4},"end":{"line":110,"column":58}},"21":{"start":{"line":112,"column":4},"end":{"line":112,"column":3845}},"22":{"start":{"line":113,"column":6},"end":{"line":113,"column":61}},"23":{"start":{"line":115,"column":6},"end":{"line":115,"column":64}},"24":{"start":{"line":131,"column":4},"end":{"line":131,"column":27}},"25":{"start":{"line":132,"column":4},"end":{"line":132,"column":15}},"26":{"start":{"line":147,"column":4},"end":{"line":147,"column":33}},"27":{"start":{"line":148,"column":4},"end":{"line":148,"column":15}},"28":{"start":{"line":156,"column":4},"end":{"line":156,"column":13}},"29":{"start":{"line":166,"column":4},"end":{"line":166,"column":92}},"30":{"start":{"line":168,"column":4},"end":{"line":168,"column":74}},"31":{"start":{"line":170,"column":4},"end":{"line":170,"column":47}},"32":{"start":{"line":171,"column":4},"end":{"line":171,"column":15}},"33":{"start":{"line":181,"column":4},"end":{"line":181,"column":95}},"34":{"start":{"line":182,"column":4},"end":{"line":182,"column":15}},"35":{"start":{"line":192,"column":4},"end":{"line":192,"column":27}},"36":{"start":{"line":194,"column":4},"end":{"line":194,"column":15}},"37":{"start":{"line":209,"column":4},"end":{"line":209,"column":33}},"38":{"start":{"line":210,"column":4},"end":{"line":210,"column":15}},"39":{"start":{"line":218,"column":4},"end":{"line":218,"column":27}},"40":{"start":{"line":222,"column":4},"end":{"line":222,"column":43}},"41":{"start":{"line":226,"column":4},"end":{"line":226,"column":19}},"42":{"start":{"line":230,"column":4},"end":{"line":230,"column":19}},"43":{"start":{"line":239,"column":4},"end":{"line":239,"column":29}},"44":{"start":{"line":252,"column":4},"end":{"line":252,"column":45}},"45":{"start":{"line":253,"column":4},"end":{"line":253,"column":56}},"46":{"start":{"line":257,"column":4},"end":{"line":257,"column":45}},"47":{"start":{"line":258,"column":4},"end":{"line":258,"column":23}},"48":{"start":{"line":270,"column":4},"end":{"line":270,"column":38}},"49":{"start":{"line":271,"column":4},"end":{"line":271,"column":15}},"50":{"start":{"line":289,"column":4},"end":{"line":289,"column":97}},"51":{"start":{"line":291,"column":4},"end":{"line":291,"column":33}},"52":{"start":{"line":293,"column":4},"end":{"line":293,"column":9096}},"53":{"start":{"line":294,"column":6},"end":{"line":294,"column":91}},"54":{"start":{"line":296,"column":6},"end":{"line":296,"column":68}},"55":{"start":{"line":299,"column":4},"end":{"line":299,"column":15}},"56":{"start":{"line":309,"column":4},"end":{"line":309,"column":72}},"57":{"start":{"line":310,"column":4},"end":{"line":310,"column":72}},"58":{"start":{"line":312,"column":4},"end":{"line":312,"column":42}},"59":{"start":{"line":314,"column":4},"end":{"line":314,"column":44}},"60":{"start":{"line":322,"column":4},"end":{"line":322,"column":45}},"61":{"start":{"line":323,"column":4},"end":{"line":323,"column":71}},"62":{"start":{"line":324,"column":4},"end":{"line":324,"column":57}},"63":{"start":{"line":325,"column":4},"end":{"line":325,"column":67}},"64":{"start":{"line":327,"column":4},"end":{"line":327,"column":82}},"65":{"start":{"line":331,"column":4},"end":{"line":331,"column":45}},"66":{"start":{"line":332,"column":4},"end":{"line":332,"column":76}},"67":{"start":{"line":333,"column":4},"end":{"line":333,"column":37}},"68":{"start":{"line":337,"column":4},"end":{"line":337,"column":57}},"69":{"start":{"line":338,"column":4},"end":{"line":338,"column":59}},"70":{"start":{"line":339,"column":4},"end":{"line":339,"column":84}},"71":{"start":{"line":340,"column":4},"end":{"line":340,"column":71}},"72":{"start":{"line":341,"column":4},"end":{"line":341,"column":52}},"73":{"start":{"line":343,"column":4},"end":{"line":343,"column":72}},"74":{"start":{"line":345,"column":4},"end":{"line":345,"column":58}},"75":{"start":{"line":346,"column":4},"end":{"line":346,"column":32}},"76":{"start":{"line":348,"column":4},"end":{"line":348,"column":83}},"77":{"start":{"line":349,"column":4},"end":{"line":349,"column":44}},"78":{"start":{"line":350,"column":4},"end":{"line":350,"column":84}},"79":{"start":{"line":354,"column":4},"end":{"line":354,"column":45}},"80":{"start":{"line":355,"column":4},"end":{"line":355,"column":76}},"81":{"start":{"line":356,"column":4},"end":{"line":356,"column":37}},"82":{"start":{"line":360,"column":4},"end":{"line":360,"column":57}},"83":{"start":{"line":361,"column":4},"end":{"line":361,"column":59}},"84":{"start":{"line":362,"column":4},"end":{"line":362,"column":84}},"85":{"start":{"line":363,"column":4},"end":{"line":363,"column":71}},"86":{"start":{"line":364,"column":4},"end":{"line":364,"column":52}},"87":{"start":{"line":366,"column":4},"end":{"line":366,"column":66}},"88":{"start":{"line":368,"column":4},"end":{"line":368,"column":71}},"89":{"start":{"line":370,"column":4},"end":{"line":370,"column":58}},"90":{"start":{"line":371,"column":4},"end":{"line":371,"column":32}},"91":{"start":{"line":373,"column":4},"end":{"line":373,"column":83}},"92":{"start":{"line":374,"column":4},"end":{"line":374,"column":44}},"93":{"start":{"line":375,"column":4},"end":{"line":375,"column":84}},"94":{"start":{"line":377,"column":4},"end":{"line":377,"column":47}},"95":{"start":{"line":385,"column":4},"end":{"line":385,"column":57}},"96":{"start":{"line":386,"column":4},"end":{"line":386,"column":59}},"97":{"start":{"line":387,"column":4},"end":{"line":387,"column":84}},"98":{"start":{"line":389,"column":4},"end":{"line":389,"column":72}},"99":{"start":{"line":390,"column":4},"end":{"line":390,"column":68}},"100":{"start":{"line":391,"column":4},"end":{"line":391,"column":60}},"101":{"start":{"line":392,"column":4},"end":{"line":392,"column":56}},"102":{"start":{"line":394,"column":4},"end":{"line":394,"column":76}},"103":{"start":{"line":395,"column":4},"end":{"line":395,"column":65}},"104":{"start":{"line":397,"column":4},"end":{"line":397,"column":79}},"105":{"start":{"line":398,"column":4},"end":{"line":398,"column":74}},"106":{"start":{"line":400,"column":4},"end":{"line":400,"column":83}},"107":{"start":{"line":401,"column":4},"end":{"line":401,"column":48}},"108":{"start":{"line":402,"column":4},"end":{"line":402,"column":46}},"109":{"start":{"line":403,"column":4},"end":{"line":403,"column":92}},"110":{"start":{"line":404,"column":4},"end":{"line":404,"column":88}},"111":{"start":{"line":406,"column":4},"end":{"line":406,"column":37}},"112":{"start":{"line":415,"column":4},"end":{"line":415,"column":57}},"113":{"start":{"line":416,"column":4},"end":{"line":416,"column":35}},"114":{"start":{"line":417,"column":4},"end":{"line":417,"column":37}},"115":{"start":{"line":418,"column":4},"end":{"line":418,"column":32}},"116":{"start":{"line":419,"column":4},"end":{"line":419,"column":39}},"117":{"start":{"line":420,"column":4},"end":{"line":420,"column":23}},"118":{"start":{"line":421,"column":4},"end":{"line":421,"column":23}},"119":{"start":{"line":422,"column":4},"end":{"line":422,"column":25}},"120":{"start":{"line":423,"column":4},"end":{"line":423,"column":37}},"121":{"start":{"line":424,"column":4},"end":{"line":424,"column":51}},"122":{"start":{"line":425,"column":4},"end":{"line":425,"column":63}},"123":{"start":{"line":427,"column":4},"end":{"line":427,"column":14338}},"124":{"start":{"line":428,"column":6},"end":{"line":428,"column":74}},"125":{"start":{"line":430,"column":6},"end":{"line":430,"column":74}},"126":{"start":{"line":433,"column":4},"end":{"line":433,"column":39}},"127":{"start":{"line":435,"column":4},"end":{"line":435,"column":60}},"128":{"start":{"line":436,"column":4},"end":{"line":436,"column":62}},"129":{"start":{"line":438,"column":4},"end":{"line":438,"column":23}},"130":{"start":{"line":447,"column":4},"end":{"line":447,"column":14924}},"131":{"start":{"line":448,"column":6},"end":{"line":448,"column":96}},"132":{"start":{"line":451,"column":4},"end":{"line":451,"column":15095}},"133":{"start":{"line":452,"column":6},"end":{"line":452,"column":96}},"134":{"start":{"line":459,"column":4},"end":{"line":459,"column":67}},"135":{"start":{"line":463,"column":4},"end":{"line":463,"column":57}},"136":{"start":{"line":464,"column":4},"end":{"line":464,"column":15598}},"137":{"start":{"line":473,"column":4},"end":{"line":473,"column":57}},"138":{"start":{"line":474,"column":4},"end":{"line":474,"column":83}}},"branchMap":{"1":{"line":29,"type":"if","locations":[{"start":{"line":29,"column":4},"end":{"line":29,"column":4}},{"start":{"line":29,"column":4},"end":{"line":29,"column":4}}]},"2":{"line":34,"type":"if","locations":[{"start":{"line":34,"column":4},"end":{"line":34,"column":4}},{"start":{"line":34,"column":4},"end":{"line":34,"column":4}}]},"3":{"line":39,"type":"if","locations":[{"start":{"line":39,"column":4},"end":{"line":39,"column":4}},{"start":{"line":39,"column":4},"end":{"line":39,"column":4}}]},"4":{"line":112,"type":"if","locations":[{"start":{"line":112,"column":4},"end":{"line":112,"column":4}},{"start":{"line":112,"column":4},"end":{"line":112,"column":4}}]},"5":{"line":168,"type":"if","locations":[{"start":{"line":168,"column":4},"end":{"line":168,"column":4}},{"start":{"line":168,"column":4},"end":{"line":168,"column":4}}]},"6":{"line":289,"type":"if","locations":[{"start":{"line":289,"column":4},"end":{"line":289,"column":4}},{"start":{"line":289,"column":4},"end":{"line":289,"column":4}}]},"7":{"line":293,"type":"if","locations":[{"start":{"line":293,"column":4},"end":{"line":293,"column":4}},{"start":{"line":293,"column":4},"end":{"line":293,"column":4}}]},"8":{"line":309,"type":"if","locations":[{"start":{"line":309,"column":4},"end":{"line":309,"column":4}},{"start":{"line":309,"column":4},"end":{"line":309,"column":4}}]},"9":{"line":310,"type":"if","locations":[{"start":{"line":310,"column":4},"end":{"line":310,"column":4}},{"start":{"line":310,"column":4},"end":{"line":310,"column":4}}]},"10":{"line":427,"type":"if","locations":[{"start":{"line":427,"column":4},"end":{"line":427,"column":4}},{"start":{"line":427,"column":4},"end":{"line":427,"column":4}}]},"11":{"line":447,"type":"if","locations":[{"start":{"line":447,"column":4},"end":{"line":447,"column":4}},{"start":{"line":447,"column":4},"end":{"line":447,"column":4}}]},"12":{"line":451,"type":"if","locations":[{"start":{"line":451,"column":4},"end":{"line":451,"column":4}},{"start":{"line":451,"column":4},"end":{"line":451,"column":4}}]}}}} \ No newline at end of file diff --git a/hardhat.config.js b/hardhat.config.js index 3813253..44cd782 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -44,6 +44,7 @@ module.exports = { hardhat: { gasPrice: 0, blockGasLimit: 100000000, + allowUnlimitedContractSize: true, }, coverage: { url: 'http://127.0.0.1:8555', diff --git a/package.json b/package.json index 291da6c..9c41142 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "scripts": { "compile": "npx hardhat compile", "console": "npx hardhat console", - "coverage": "npx hardhat coverage --network coverage --solcoverjs ./.solcover.js", + "coverage": "npx hardhat coverage --network localhost", "deploy": "npx hardhat deploy", "ethereum": "yarn lint && npx hardhat node", "lint": "yarn run prettier && yarn run lint:es6 && yarn run lint:solidity && yarn run lint:tests", @@ -25,7 +25,7 @@ "test": "yarn run prettier:tests && yarn run lint:tests && npx hardhat test --deploy-fixture" }, "dependencies": { - "@elastic-dao/sdk": "0.9.0-beta4", + "@elastic-dao/sdk": "0.9.0-beta6", "@nomiclabs/hardhat-ethers": "2.0.1", "@nomiclabs/hardhat-etherscan": "2.1.0", "@nomiclabs/hardhat-waffle": "2.0.1", @@ -39,7 +39,7 @@ "hardhat-gas-reporter": "1.0.4", "scrypt": "6.0.3", "solc": "0.7.2", - "solidity-coverage": "git://github.com/elasticdao/solidity-coverage.git#e0cdfce1478898a8440471768f304d9786db03e8" + "solidity-coverage": "^0.7.14" }, "devDependencies": { "chai": "4.2.0", diff --git a/src/libraries/ElasticMath.sol b/src/libraries/ElasticMath.sol index 8f07f80..9fe5db2 100644 --- a/src/libraries/ElasticMath.sol +++ b/src/libraries/ElasticMath.sol @@ -2,7 +2,8 @@ pragma solidity 0.7.2; import './SafeMath.sol'; -import 'hardhat/console.sol'; + +// import 'hardhat/console.sol'; /** * This library does the Elastic math @@ -38,39 +39,31 @@ library ElasticMath { uint256 lambda, uint256 m ) internal view returns (uint256 deltaEValue) { - console.log('contract: deltaLambda: ', deltaLambda); - console.log('contract: capitalDeltaValue: ', capitalDeltaValue); - console.log('contract: k: ', k); - console.log('contract: elasticity: ', elasticity); - console.log('contract: lambda: ', lambda); - console.log('contract: m: ', m); - uint256 lambdaDash = SafeMath.add(deltaLambda, lambda); - console.log('contract: lambdadash: ', lambdaDash); uint256 a = wmul(capitalDeltaValue, k); - console.log('contract: a:', a); + // console.log('contract: a:', a); uint256 b = revamp(elasticity); - console.log('contract: b: ', b); + // console.log('contract: b: ', b); uint256 c = wmul(lambda, m); - console.log('contract: c: ', c); + // console.log('contract: c: ', c); uint256 d = mDash(lambdaDash, lambda, m); - console.log('contract: d: ', d); + // console.log('contract: d: ', d); uint256 e = wmul(d, b); - console.log('contract: e: ', e); + // console.log('contract: e: ', e); uint256 f = wmul(lambdaDash, e); - console.log('contract: f: ', f); + // console.log('contract: f: ', f); uint256 g = SafeMath.sub(f, c); - console.log('contract: g: ', g); + // console.log('contract: g: ', g); deltaEValue = wmul(a, g); - console.log('contract: deltaEValue: ', deltaEValue); + // console.log('contract: deltaEValue: ', deltaEValue); return deltaEValue; } diff --git a/test/capitalDeltaTest.js b/test/capitalDeltaTest.js index b7d75a5..1f4b1a9 100644 --- a/test/capitalDeltaTest.js +++ b/test/capitalDeltaTest.js @@ -1,4 +1,6 @@ const { expect } = require('chai'); +const { deployments } = require('hardhat'); + const { capitalDelta, deltaE, mDash } = require('@elastic-dao/sdk'); const BigNumber = require('bignumber.js'); const { ONE } = require('./constants'); @@ -9,12 +11,11 @@ describe('ElasticDAO: CapitalDelta value of a token', () => { let dao; let token; - beforeEach(async () => { + it('Should return a mismatch in the values of capital delta', async () => { + await deployments.fixture(); dao = await summonedDAO(); token = await dao.token(); - }); - it('Should return a mismatch in the values of capital delta', async () => { const { agent } = await signers(); // get the eth balance of elasticDAO @@ -41,6 +42,8 @@ describe('ElasticDAO: CapitalDelta value of a token', () => { }); it('Should return a match in the values of capital delta', async () => { + dao = await summonedDAO(); + token = await dao.token(); // get the eth balance of elasticDAO const ethBalanceElasticDAOBeforeJoin = await ethBalance(dao.uuid); diff --git a/test/elasticDAOFactoryTest.js b/test/elasticDAOFactoryTest.js index 8e58e31..acf0a9d 100644 --- a/test/elasticDAOFactoryTest.js +++ b/test/elasticDAOFactoryTest.js @@ -1,5 +1,6 @@ const { ethers } = require('ethers'); const { expect } = require('chai'); + const { newDAO } = require('./helpers'); describe('ElasticDAO: Factory', () => { diff --git a/yarn.lock b/yarn.lock index dffd3b6..1a4976c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,14 +23,15 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@elastic-dao/sdk@0.9.0-beta4": - version "0.9.0-beta4" - resolved "https://registry.yarnpkg.com/@elastic-dao/sdk/-/sdk-0.9.0-beta4.tgz#38b6087891dbc23a485b206bd3f090f6e2bd5518" - integrity sha512-72TKT664l8YKw4PeNm6aIJvL3N64DQoyQlhv9BQXXVVwAewUPVlihKCK7+ZM3xrnSIq3etK3TeNIu5t0rBDoOw== +"@elastic-dao/sdk@0.9.0-beta6": + version "0.9.0-beta6" + resolved "https://registry.yarnpkg.com/@elastic-dao/sdk/-/sdk-0.9.0-beta6.tgz#74263df08ed9b4c11abb2113541a94431fc9718d" + integrity sha512-qi3P9drU6nGENCt+b1HyC5t9qZqmaPT6pojGjG6y2Ser0WnXOG3xzW8X8ofrUYlrdsrIaP1Fh5BRYvYOG58Wsw== dependencies: "@pie-dao/utils" "^1.0.0" bignumber.js "^9.0.0" ethers "^5.0.9" + rxjs "^6.6.3" "@ensdomains/ens@^0.4.4": version "0.4.5" @@ -3027,16 +3028,16 @@ es-array-method-boxes-properly@^1.0.0: integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA== es-get-iterator@^1.0.2: - version "1.1.1" - resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.1.tgz#b93ddd867af16d5118e00881396533c1c6647ad9" - integrity sha512-qorBw8Y7B15DVLaJWy6WdEV/ZkieBcu6QCq/xzWzGOKJqgG1j754vXRfZ3NY7HSShneqU43mPB4OkQBTkvHhFw== + version "1.1.2" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.2.tgz#9234c54aba713486d7ebde0220864af5e2b283f7" + integrity sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ== dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.1" + call-bind "^1.0.2" + get-intrinsic "^1.1.0" has-symbols "^1.0.1" - is-arguments "^1.0.4" - is-map "^2.0.1" - is-set "^2.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" @@ -4433,6 +4434,15 @@ get-intrinsic@^1.0.1, get-intrinsic@^1.0.2: has "^1.0.3" has-symbols "^1.0.1" +get-intrinsic@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.0.tgz#892e62931e6938c8a23ea5aaebcfb67bd97da97e" + integrity sha512-M11rgtQp5GZMZzDL7jLTNxbDfurpzuau5uqRWDPvlHjfvg3TdScAZo96GLvhMjImrmR8uAt0FS2RLoMrfWGKlg== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + get-port@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" @@ -5105,7 +5115,7 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" -is-arguments@^1.0.4: +is-arguments@^1.0.4, is-arguments@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== @@ -5256,7 +5266,7 @@ is-hex-prefixed@1.0.0: resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" integrity sha1-fY035q135dEnFIkTxXPggtd39VQ= -is-map@^2.0.1: +is-map@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== @@ -5324,7 +5334,7 @@ is-retry-allowed@^1.0.0: resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== -is-set@^2.0.1: +is-set@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.2.tgz#90755fa4c2562dc1c5d4024760d6119b94ca18ec" integrity sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g== @@ -7674,7 +7684,7 @@ rustbn.js@~0.2.0: resolved "https://registry.yarnpkg.com/rustbn.js/-/rustbn.js-0.2.0.tgz#8082cb886e707155fd1cb6f23bd591ab8d55d0ca" integrity sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA== -rxjs@^6.4.0: +rxjs@^6.4.0, rxjs@^6.6.3: version "6.6.3" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== @@ -8104,9 +8114,10 @@ solidity-comments-extractor@^0.0.4: resolved "https://registry.yarnpkg.com/solidity-comments-extractor/-/solidity-comments-extractor-0.0.4.tgz#ce420aef23641ffd0131c7d80ba85b6e1e42147e" integrity sha512-58glBODwXIKMaQ7rfcJOrWtFQMMOK28tJ0/LcB5Xhu7WtAxk4UX2fpgKPuaL41XjMp/y0gAa1MTLqk018wuSzA== -"solidity-coverage@git://github.com/elasticdao/solidity-coverage.git#e0cdfce1478898a8440471768f304d9786db03e8": +solidity-coverage@^0.7.14: version "0.7.14" - resolved "git://github.com/elasticdao/solidity-coverage.git#e0cdfce1478898a8440471768f304d9786db03e8" + resolved "https://registry.yarnpkg.com/solidity-coverage/-/solidity-coverage-0.7.14.tgz#88aa9d663dc82e9927275835703542a5e7931a03" + integrity sha512-2X9oNtu4yBbtDXtVe2tc9vYHtwON6QRqNvVylKdkhcJgAdCzP/OkJy9fWcWH/g3fnNCIOFssHoe0LPGZ2ppMZg== dependencies: "@solidity-parser/parser" "^0.11.0" "@truffle/provider" "^0.2.24" From 3c884c793b7a356c499833012bedc2000413641c Mon Sep 17 00:00:00 2001 From: alleycatdev Date: Mon, 1 Feb 2021 11:20:43 -0500 Subject: [PATCH 014/118] creates a init test to await fixtures --- package.json | 2 +- test/0_init.js | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 test/0_init.js diff --git a/package.json b/package.json index 9c41142..b3117e2 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "scripts": { "compile": "npx hardhat compile", "console": "npx hardhat console", - "coverage": "npx hardhat coverage --network localhost", + "coverage": "npx hardhat coverage --network coverage --temp artifacts", "deploy": "npx hardhat deploy", "ethereum": "yarn lint && npx hardhat node", "lint": "yarn run prettier && yarn run lint:es6 && yarn run lint:solidity && yarn run lint:tests", diff --git a/test/0_init.js b/test/0_init.js new file mode 100644 index 0000000..6b37642 --- /dev/null +++ b/test/0_init.js @@ -0,0 +1,8 @@ +const { deployments } = require('hardhat'); + +describe('0_init_contracts_for_testing', () => { + // this is required to make solidity-coverage work + it('Should await fixtures to enable coverage tests', async () => { + await deployments.fixture(); + }); +}); From c1656b49500f8ce7fb37a7bf4d50ea2c0f11ae84 Mon Sep 17 00:00:00 2001 From: alleycatdev Date: Mon, 1 Feb 2021 16:06:55 -0500 Subject: [PATCH 015/118] adds 94% EGT tests --- coverage.json | 2 +- test/0_init.js | 16 ++-- test/elasticGovernanceTokenTest.js | 120 +++++++++++++++++++++++++++++ test/exitDaoTest.js | 4 +- 4 files changed, 131 insertions(+), 11 deletions(-) create mode 100644 test/elasticGovernanceTokenTest.js diff --git a/coverage.json b/coverage.json index e643c64..ef75fc0 100644 --- a/coverage.json +++ b/coverage.json @@ -1 +1 @@ -{"src/core/ElasticDAO.sol":{"l":{"24":7,"25":7,"26":7,"29":22,"30":22,"32":22,"33":21,"36":75,"37":75,"38":74,"41":0,"42":0,"45":34,"46":33,"49":40,"50":40,"51":40,"52":40,"54":40,"55":38,"58":4,"59":4,"69":42,"70":42,"71":42,"72":42,"73":42,"74":42,"76":42,"77":42,"78":42,"83":3,"84":3,"85":3,"88":3,"89":3,"91":3,"102":33,"103":33,"105":33,"116":33,"117":33,"118":33,"120":33,"124":4,"126":4,"131":4,"132":4,"141":4,"151":4,"154":3,"155":3,"158":3,"159":3,"160":3,"161":3,"164":3,"168":0,"169":0,"170":0,"171":0,"175":0,"187":21,"189":21,"190":21,"191":21,"195":16,"197":15,"198":15,"199":15,"200":15,"202":15,"204":15,"205":45,"207":15,"208":15,"214":0,"218":0,"224":82,"225":82,"229":245,"233":28,"234":28},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAO.sol","s":{"1":7,"2":7,"3":22,"4":22,"5":22,"6":75,"7":75,"8":0,"9":34,"10":40,"11":40,"12":40,"13":40,"14":40,"15":4,"16":42,"17":42,"18":42,"19":42,"20":42,"21":42,"22":42,"23":42,"24":42,"25":3,"26":3,"27":3,"28":3,"29":3,"30":3,"31":33,"32":33,"33":33,"34":33,"35":33,"36":33,"37":33,"38":4,"39":4,"40":4,"41":4,"42":4,"43":4,"44":3,"45":3,"46":3,"47":3,"48":3,"49":3,"50":3,"51":0,"52":0,"53":0,"54":0,"55":0,"56":21,"57":21,"58":21,"59":21,"60":16,"61":15,"62":15,"63":15,"64":15,"65":15,"66":15,"67":45,"68":15,"69":15,"70":0,"71":0,"72":82,"73":82,"74":245,"75":28,"76":28},"b":{"1":[7,0],"2":[21,1],"3":[74,1],"4":[0,0],"5":[33,1],"6":[38,2],"7":[4,0],"8":[33,0],"9":[4,0],"10":[3,1],"11":[15,1]},"f":{"1":7,"2":22,"3":75,"4":0,"5":34,"6":40,"7":4,"8":42,"9":3,"10":33,"11":4,"12":0,"13":0,"14":21,"15":16,"16":0,"17":0,"18":82,"19":245,"20":28,"21":0},"fnMap":{"1":{"name":"onlyAfterSummoning","line":23,"loc":{"start":{"line":23,"column":2},"end":{"line":27,"column":2}}},"2":{"name":"onlyAfterTokenInitialized","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":34,"column":2}}},"3":{"name":"onlyBeforeSummoning","line":35,"loc":{"start":{"line":35,"column":2},"end":{"line":39,"column":2}}},"4":{"name":"onlyController","line":40,"loc":{"start":{"line":40,"column":2},"end":{"line":43,"column":2}}},"5":{"name":"onlyDeployer","line":44,"loc":{"start":{"line":44,"column":2},"end":{"line":47,"column":2}}},"6":{"name":"onlySummoners","line":48,"loc":{"start":{"line":48,"column":2},"end":{"line":56,"column":2}}},"7":{"name":"onlyWhenOpen","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":60,"column":2}}},"8":{"name":"constructor","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":79,"column":2}}},"9":{"name":"exit","line":81,"loc":{"start":{"line":81,"column":2},"end":{"line":92,"column":2}}},"10":{"name":"initializeToken","line":101,"loc":{"start":{"line":94,"column":2},"end":{"line":121,"column":2}}},"11":{"name":"join","line":123,"loc":{"start":{"line":123,"column":2},"end":{"line":165,"column":2}}},"12":{"name":"setController","line":167,"loc":{"start":{"line":167,"column":2},"end":{"line":172,"column":2}}},"13":{"name":"setMaxVotingLambda","line":174,"loc":{"start":{"line":174,"column":2},"end":{"line":176,"column":2}}},"14":{"name":"seedSummoning","line":185,"loc":{"start":{"line":180,"column":2},"end":{"line":192,"column":2}}},"15":{"name":"summon","line":194,"loc":{"start":{"line":194,"column":2},"end":{"line":209,"column":2}}},"16":{"name":"getDAO","line":213,"loc":{"start":{"line":213,"column":2},"end":{"line":215,"column":2}}},"17":{"name":"getEcosystem","line":217,"loc":{"start":{"line":217,"column":2},"end":{"line":219,"column":2}}},"18":{"name":"_getDAO","line":223,"loc":{"start":{"line":223,"column":2},"end":{"line":226,"column":2}}},"19":{"name":"_getEcosystem","line":228,"loc":{"start":{"line":228,"column":2},"end":{"line":230,"column":2}}},"20":{"name":"_getToken","line":232,"loc":{"start":{"line":232,"column":2},"end":{"line":236,"column":2}}},"21":{"name":null,"line":240,"loc":{"start":{"line":240,"column":2},"end":{"line":240,"column":31}}}},"statementMap":{"1":{"start":{"line":24,"column":4},"end":{"line":24,"column":39}},"2":{"start":{"line":25,"column":4},"end":{"line":25,"column":60}},"3":{"start":{"line":29,"column":4},"end":{"line":29,"column":57}},"4":{"start":{"line":30,"column":4},"end":{"line":30,"column":913}},"5":{"start":{"line":32,"column":4},"end":{"line":32,"column":77}},"6":{"start":{"line":36,"column":4},"end":{"line":36,"column":39}},"7":{"start":{"line":37,"column":4},"end":{"line":37,"column":73}},"8":{"start":{"line":41,"column":4},"end":{"line":41,"column":67}},"9":{"start":{"line":45,"column":4},"end":{"line":45,"column":63}},"10":{"start":{"line":49,"column":4},"end":{"line":49,"column":57}},"11":{"start":{"line":50,"column":4},"end":{"line":50,"column":52}},"12":{"start":{"line":51,"column":4},"end":{"line":51,"column":79}},"13":{"start":{"line":52,"column":4},"end":{"line":52,"column":64}},"14":{"start":{"line":54,"column":4},"end":{"line":54,"column":55}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":71}},"16":{"start":{"line":69,"column":4},"end":{"line":69,"column":49}},"17":{"start":{"line":70,"column":4},"end":{"line":70,"column":27}},"18":{"start":{"line":71,"column":4},"end":{"line":71,"column":24}},"19":{"start":{"line":72,"column":4},"end":{"line":72,"column":98}},"20":{"start":{"line":73,"column":4},"end":{"line":73,"column":40}},"21":{"start":{"line":74,"column":4},"end":{"line":74,"column":25}},"22":{"start":{"line":76,"column":4},"end":{"line":76,"column":74}},"23":{"start":{"line":77,"column":4},"end":{"line":77,"column":79}},"24":{"start":{"line":78,"column":4},"end":{"line":78,"column":74}},"25":{"start":{"line":83,"column":4},"end":{"line":83,"column":45}},"26":{"start":{"line":84,"column":4},"end":{"line":84,"column":77}},"27":{"start":{"line":85,"column":4},"end":{"line":85,"column":53}},"28":{"start":{"line":88,"column":4},"end":{"line":88,"column":72}},"29":{"start":{"line":89,"column":4},"end":{"line":89,"column":86}},"30":{"start":{"line":91,"column":4},"end":{"line":91,"column":41}},"31":{"start":{"line":102,"column":4},"end":{"line":102,"column":88}},"32":{"start":{"line":103,"column":4},"end":{"line":103,"column":57}},"33":{"start":{"line":105,"column":4},"end":{"line":105,"column":3533}},"34":{"start":{"line":116,"column":4},"end":{"line":116,"column":77}},"35":{"start":{"line":117,"column":4},"end":{"line":117,"column":38}},"36":{"start":{"line":118,"column":4},"end":{"line":118,"column":38}},"37":{"start":{"line":120,"column":4},"end":{"line":120,"column":51}},"38":{"start":{"line":124,"column":4},"end":{"line":124,"column":45}},"39":{"start":{"line":126,"column":4},"end":{"line":126,"column":4117}},"40":{"start":{"line":131,"column":4},"end":{"line":131,"column":77}},"41":{"start":{"line":132,"column":4},"end":{"line":132,"column":4328}},"42":{"start":{"line":141,"column":4},"end":{"line":141,"column":4774}},"43":{"start":{"line":151,"column":4},"end":{"line":151,"column":67}},"44":{"start":{"line":154,"column":4},"end":{"line":154,"column":65}},"45":{"start":{"line":155,"column":4},"end":{"line":155,"column":72}},"46":{"start":{"line":158,"column":4},"end":{"line":158,"column":57}},"47":{"start":{"line":159,"column":4},"end":{"line":159,"column":59}},"48":{"start":{"line":160,"column":4},"end":{"line":160,"column":18}},"49":{"start":{"line":161,"column":4},"end":{"line":161,"column":32}},"50":{"start":{"line":164,"column":4},"end":{"line":164,"column":53}},"51":{"start":{"line":168,"column":4},"end":{"line":168,"column":27}},"52":{"start":{"line":169,"column":4},"end":{"line":169,"column":83}},"53":{"start":{"line":170,"column":4},"end":{"line":170,"column":38}},"54":{"start":{"line":171,"column":4},"end":{"line":171,"column":38}},"55":{"start":{"line":175,"column":4},"end":{"line":175,"column":37}},"56":{"start":{"line":187,"column":4},"end":{"line":187,"column":45}},"57":{"start":{"line":189,"column":4},"end":{"line":189,"column":30}},"58":{"start":{"line":190,"column":4},"end":{"line":190,"column":62}},"59":{"start":{"line":191,"column":4},"end":{"line":191,"column":73}},"60":{"start":{"line":195,"column":4},"end":{"line":195,"column":98}},"61":{"start":{"line":197,"column":4},"end":{"line":197,"column":57}},"62":{"start":{"line":198,"column":4},"end":{"line":198,"column":52}},"63":{"start":{"line":199,"column":4},"end":{"line":199,"column":79}},"64":{"start":{"line":200,"column":4},"end":{"line":200,"column":6717}},"65":{"start":{"line":202,"column":4},"end":{"line":202,"column":77}},"66":{"start":{"line":204,"column":4},"end":{"line":204,"column":6837}},"67":{"start":{"line":205,"column":6},"end":{"line":205,"column":76}},"68":{"start":{"line":207,"column":4},"end":{"line":207,"column":22}},"69":{"start":{"line":208,"column":4},"end":{"line":208,"column":29}},"70":{"start":{"line":214,"column":4},"end":{"line":214,"column":20}},"71":{"start":{"line":218,"column":4},"end":{"line":218,"column":26}},"72":{"start":{"line":224,"column":4},"end":{"line":224,"column":57}},"73":{"start":{"line":225,"column":4},"end":{"line":225,"column":79}},"74":{"start":{"line":229,"column":4},"end":{"line":229,"column":70}},"75":{"start":{"line":233,"column":4},"end":{"line":233,"column":57}},"76":{"start":{"line":234,"column":4},"end":{"line":234,"column":7880}}},"branchMap":{"1":{"line":25,"type":"if","locations":[{"start":{"line":25,"column":4},"end":{"line":25,"column":4}},{"start":{"line":25,"column":4},"end":{"line":25,"column":4}}]},"2":{"line":32,"type":"if","locations":[{"start":{"line":32,"column":4},"end":{"line":32,"column":4}},{"start":{"line":32,"column":4},"end":{"line":32,"column":4}}]},"3":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":37,"column":4}},{"start":{"line":37,"column":4},"end":{"line":37,"column":4}}]},"4":{"line":41,"type":"if","locations":[{"start":{"line":41,"column":4},"end":{"line":41,"column":4}},{"start":{"line":41,"column":4},"end":{"line":41,"column":4}}]},"5":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":45,"column":4}},{"start":{"line":45,"column":4},"end":{"line":45,"column":4}}]},"6":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":54,"column":4}},{"start":{"line":54,"column":4},"end":{"line":54,"column":4}}]},"7":{"line":58,"type":"if","locations":[{"start":{"line":58,"column":4},"end":{"line":58,"column":4}},{"start":{"line":58,"column":4},"end":{"line":58,"column":4}}]},"8":{"line":102,"type":"if","locations":[{"start":{"line":102,"column":4},"end":{"line":102,"column":4}},{"start":{"line":102,"column":4},"end":{"line":102,"column":4}}]},"9":{"line":126,"type":"if","locations":[{"start":{"line":126,"column":4},"end":{"line":126,"column":4}},{"start":{"line":126,"column":4},"end":{"line":126,"column":4}}]},"10":{"line":151,"type":"if","locations":[{"start":{"line":151,"column":4},"end":{"line":151,"column":4}},{"start":{"line":151,"column":4},"end":{"line":151,"column":4}}]},"11":{"line":195,"type":"if","locations":[{"start":{"line":195,"column":4},"end":{"line":195,"column":4}},{"start":{"line":195,"column":4},"end":{"line":195,"column":4}}]}}},"src/core/ElasticDAOFactory.sol":{"l":{"21":0,"22":0,"26":3,"27":3,"46":15,"50":15,"52":15,"53":15,"54":15,"58":0,"59":0,"63":0,"65":0,"66":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAOFactory.sol","s":{"1":0,"2":3,"3":3,"4":15,"5":15,"6":15,"7":15,"8":15,"9":0,"10":0,"11":0,"12":0,"13":0},"b":{"1":[0,0]},"f":{"1":0,"2":3,"3":15,"4":0,"5":0,"6":0},"fnMap":{"1":{"name":"onlyDeployer","line":20,"loc":{"start":{"line":20,"column":2},"end":{"line":23,"column":2}}},"2":{"name":"constructor","line":25,"loc":{"start":{"line":25,"column":2},"end":{"line":28,"column":2}}},"3":{"name":"deployDAOAndToken","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":55,"column":2}}},"4":{"name":"updateFeeAddress","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":60,"column":2}}},"5":{"name":"collectFees","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":67,"column":2}}},"6":{"name":null,"line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":71,"column":31}}}},"statementMap":{"1":{"start":{"line":21,"column":4},"end":{"line":21,"column":63}},"2":{"start":{"line":26,"column":4},"end":{"line":26,"column":24}},"3":{"start":{"line":27,"column":4},"end":{"line":27,"column":49}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":1354}},"5":{"start":{"line":50,"column":4},"end":{"line":50,"column":96}},"6":{"start":{"line":52,"column":4},"end":{"line":52,"column":49}},"7":{"start":{"line":53,"column":4},"end":{"line":53,"column":55}},"8":{"start":{"line":54,"column":4},"end":{"line":54,"column":41}},"9":{"start":{"line":58,"column":4},"end":{"line":58,"column":37}},"10":{"start":{"line":59,"column":4},"end":{"line":59,"column":40}},"11":{"start":{"line":63,"column":4},"end":{"line":63,"column":42}},"12":{"start":{"line":65,"column":4},"end":{"line":65,"column":30}},"13":{"start":{"line":66,"column":4},"end":{"line":66,"column":51}}},"branchMap":{"1":{"line":21,"type":"if","locations":[{"start":{"line":21,"column":4},"end":{"line":21,"column":4}},{"start":{"line":21,"column":4},"end":{"line":21,"column":4}}]}}},"src/interfaces/IElasticToken.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IElasticToken.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/interfaces/IERC20.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IERC20.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/libraries/ElasticMath.sol":{"l":{"18":4,"42":4,"44":4,"47":4,"50":4,"53":4,"56":4,"59":4,"62":4,"65":4,"68":4,"76":0,"94":7,"107":4,"124":82,"134":194,"144":35},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/ElasticMath.sol","s":{"1":4,"2":4,"3":4,"4":4,"5":4,"6":4,"7":4,"8":4,"9":4,"10":4,"11":4,"12":0,"13":7,"14":4,"15":82,"16":194,"17":35},"b":{},"f":{"1":4,"2":4,"3":0,"4":7,"5":4,"6":82,"7":194,"8":35},"fnMap":{"1":{"name":"capitalDelta","line":13,"loc":{"start":{"line":13,"column":2},"end":{"line":19,"column":2}}},"2":{"name":"deltaE","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":69,"column":2}}},"3":{"name":"lambdaFromT","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":77,"column":2}}},"4":{"name":"mDash","line":89,"loc":{"start":{"line":89,"column":2},"end":{"line":95,"column":2}}},"5":{"name":"revamp","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":108,"column":2}}},"6":{"name":"t","line":119,"loc":{"start":{"line":119,"column":2},"end":{"line":125,"column":2}}},"7":{"name":"wmul","line":133,"loc":{"start":{"line":133,"column":2},"end":{"line":135,"column":2}}},"8":{"name":"wdiv","line":143,"loc":{"start":{"line":143,"column":2},"end":{"line":145,"column":2}}}},"statementMap":{"1":{"start":{"line":18,"column":4},"end":{"line":18,"column":53}},"2":{"start":{"line":42,"column":4},"end":{"line":42,"column":58}},"3":{"start":{"line":44,"column":4},"end":{"line":44,"column":42}},"4":{"start":{"line":47,"column":4},"end":{"line":47,"column":34}},"5":{"start":{"line":50,"column":4},"end":{"line":50,"column":31}},"6":{"start":{"line":53,"column":4},"end":{"line":53,"column":44}},"7":{"start":{"line":56,"column":4},"end":{"line":56,"column":26}},"8":{"start":{"line":59,"column":4},"end":{"line":59,"column":35}},"9":{"start":{"line":62,"column":4},"end":{"line":62,"column":34}},"10":{"start":{"line":65,"column":4},"end":{"line":65,"column":27}},"11":{"start":{"line":68,"column":4},"end":{"line":68,"column":22}},"12":{"start":{"line":76,"column":4},"end":{"line":76,"column":30}},"13":{"start":{"line":94,"column":4},"end":{"line":94,"column":44}},"14":{"start":{"line":107,"column":4},"end":{"line":107,"column":57}},"15":{"start":{"line":124,"column":4},"end":{"line":124,"column":35}},"16":{"start":{"line":134,"column":4},"end":{"line":134,"column":90}},"17":{"start":{"line":144,"column":4},"end":{"line":144,"column":72}}},"branchMap":{}},"src/libraries/SafeMath.sol":{"l":{"29":899,"30":899,"32":899,"46":10,"64":10,"65":10,"67":10,"84":297,"85":0,"88":297,"89":297,"91":297,"107":0,"127":0,"128":0,"131":0,"147":0,"167":0,"168":0,"172":4,"173":0,"175":0,"177":0,"179":4,"180":4,"181":4,"189":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/SafeMath.sol","s":{"1":899,"2":899,"3":899,"4":10,"5":10,"6":10,"7":10,"8":297,"9":0,"10":297,"11":297,"12":297,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":4,"21":0,"22":4,"23":0,"24":4,"25":0,"26":4,"27":4,"28":68,"29":4,"30":0},"b":{"1":[899,0],"2":[10,0],"3":[0,297],"4":[297,0],"5":[0,0],"6":[0,0],"7":[0,4],"8":[0,4],"9":[0,4]},"f":{"1":899,"2":10,"3":10,"4":297,"5":0,"6":0,"7":0,"8":0,"9":4,"10":0},"fnMap":{"1":{"name":"add","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":33,"column":2}}},"2":{"name":"sub","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":2}}},"3":{"name":"sub","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":68,"column":2}}},"4":{"name":"mul","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":92,"column":2}}},"5":{"name":"div","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":108,"column":2}}},"6":{"name":"div","line":122,"loc":{"start":{"line":122,"column":2},"end":{"line":132,"column":2}}},"7":{"name":"mod","line":146,"loc":{"start":{"line":146,"column":2},"end":{"line":148,"column":2}}},"8":{"name":"mod","line":162,"loc":{"start":{"line":162,"column":2},"end":{"line":169,"column":2}}},"9":{"name":"pow","line":171,"loc":{"start":{"line":171,"column":2},"end":{"line":183,"column":2}}},"10":{"name":"max","line":188,"loc":{"start":{"line":188,"column":2},"end":{"line":190,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":21}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":49}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":12}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":54}},"5":{"start":{"line":64,"column":4},"end":{"line":64,"column":32}},"6":{"start":{"line":65,"column":4},"end":{"line":65,"column":21}},"7":{"start":{"line":67,"column":4},"end":{"line":67,"column":12}},"8":{"start":{"line":84,"column":4},"end":{"line":84,"column":2356}},"9":{"start":{"line":85,"column":6},"end":{"line":85,"column":14}},"10":{"start":{"line":88,"column":4},"end":{"line":88,"column":21}},"11":{"start":{"line":89,"column":4},"end":{"line":89,"column":59}},"12":{"start":{"line":91,"column":4},"end":{"line":91,"column":12}},"13":{"start":{"line":107,"column":4},"end":{"line":107,"column":50}},"14":{"start":{"line":127,"column":4},"end":{"line":127,"column":31}},"15":{"start":{"line":128,"column":4},"end":{"line":128,"column":21}},"16":{"start":{"line":131,"column":4},"end":{"line":131,"column":12}},"17":{"start":{"line":147,"column":4},"end":{"line":147,"column":48}},"18":{"start":{"line":167,"column":4},"end":{"line":167,"column":32}},"19":{"start":{"line":168,"column":4},"end":{"line":168,"column":16}},"20":{"start":{"line":172,"column":4},"end":{"line":172,"column":5030}},"21":{"start":{"line":173,"column":6},"end":{"line":173,"column":14}},"22":{"start":{"line":174,"column":11},"end":{"line":174,"column":5078}},"23":{"start":{"line":175,"column":6},"end":{"line":175,"column":17}},"24":{"start":{"line":176,"column":11},"end":{"line":176,"column":5129}},"25":{"start":{"line":177,"column":6},"end":{"line":177,"column":14}},"26":{"start":{"line":179,"column":6},"end":{"line":179,"column":22}},"27":{"start":{"line":180,"column":6},"end":{"line":180,"column":71}},"28":{"start":{"line":180,"column":55},"end":{"line":180,"column":70}},"29":{"start":{"line":181,"column":6},"end":{"line":181,"column":14}},"30":{"start":{"line":189,"column":4},"end":{"line":189,"column":25}}},"branchMap":{"1":{"line":30,"type":"if","locations":[{"start":{"line":30,"column":4},"end":{"line":30,"column":4}},{"start":{"line":30,"column":4},"end":{"line":30,"column":4}}]},"2":{"line":64,"type":"if","locations":[{"start":{"line":64,"column":4},"end":{"line":64,"column":4}},{"start":{"line":64,"column":4},"end":{"line":64,"column":4}}]},"3":{"line":84,"type":"if","locations":[{"start":{"line":84,"column":4},"end":{"line":84,"column":4}},{"start":{"line":84,"column":4},"end":{"line":84,"column":4}}]},"4":{"line":89,"type":"if","locations":[{"start":{"line":89,"column":4},"end":{"line":89,"column":4}},{"start":{"line":89,"column":4},"end":{"line":89,"column":4}}]},"5":{"line":127,"type":"if","locations":[{"start":{"line":127,"column":4},"end":{"line":127,"column":4}},{"start":{"line":127,"column":4},"end":{"line":127,"column":4}}]},"6":{"line":167,"type":"if","locations":[{"start":{"line":167,"column":4},"end":{"line":167,"column":4}},{"start":{"line":167,"column":4},"end":{"line":167,"column":4}}]},"7":{"line":172,"type":"if","locations":[{"start":{"line":172,"column":4},"end":{"line":172,"column":4}},{"start":{"line":172,"column":4},"end":{"line":172,"column":4}}]},"8":{"line":174,"type":"if","locations":[{"start":{"line":174,"column":11},"end":{"line":174,"column":11}},{"start":{"line":174,"column":11},"end":{"line":174,"column":11}}]},"9":{"line":176,"type":"if","locations":[{"start":{"line":176,"column":11},"end":{"line":176,"column":11}},{"start":{"line":176,"column":11},"end":{"line":176,"column":11}}]}}},"src/models/Balance.sol":{"l":{"35":0,"36":0,"37":0,"38":0,"41":0,"42":0,"44":0,"51":0,"52":0,"53":0,"55":0,"64":0,"72":72,"74":72,"80":72,"85":72,"86":72,"87":72,"88":72,"89":72,"90":72,"91":72,"92":72},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Balance.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":72,"14":72,"15":72,"16":72,"17":72,"18":72,"19":72,"20":72,"21":72,"22":72,"23":72},"b":{"1":[72,0]},"f":{"1":0,"2":0,"3":72},"fnMap":{"1":{"name":"deserialize","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":56,"column":2}}},"2":{"name":"exists","line":58,"loc":{"start":{"line":58,"column":2},"end":{"line":65,"column":2}}},"3":{"name":"serialize","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":95,"column":2}}}},"statementMap":{"1":{"start":{"line":35,"column":4},"end":{"line":35,"column":36}},"2":{"start":{"line":36,"column":4},"end":{"line":36,"column":32}},"3":{"start":{"line":37,"column":4},"end":{"line":37,"column":38}},"4":{"start":{"line":38,"column":4},"end":{"line":38,"column":1214}},"5":{"start":{"line":41,"column":4},"end":{"line":41,"column":24}},"6":{"start":{"line":42,"column":4},"end":{"line":42,"column":36}},"7":{"start":{"line":44,"column":4},"end":{"line":44,"column":1419}},"8":{"start":{"line":51,"column":4},"end":{"line":51,"column":36}},"9":{"start":{"line":52,"column":4},"end":{"line":52,"column":34}},"10":{"start":{"line":53,"column":4},"end":{"line":53,"column":34}},"11":{"start":{"line":55,"column":4},"end":{"line":55,"column":17}},"12":{"start":{"line":64,"column":4},"end":{"line":64,"column":15}},"13":{"start":{"line":72,"column":4},"end":{"line":72,"column":71}},"14":{"start":{"line":74,"column":4},"end":{"line":74,"column":2167}},"15":{"start":{"line":80,"column":4},"end":{"line":80,"column":2333}},"16":{"start":{"line":85,"column":4},"end":{"line":85,"column":57}},"17":{"start":{"line":86,"column":4},"end":{"line":86,"column":54}},"18":{"start":{"line":87,"column":4},"end":{"line":87,"column":50}},"19":{"start":{"line":88,"column":4},"end":{"line":88,"column":34}},"20":{"start":{"line":89,"column":4},"end":{"line":89,"column":34}},"21":{"start":{"line":90,"column":4},"end":{"line":90,"column":50}},"22":{"start":{"line":91,"column":4},"end":{"line":91,"column":42}},"23":{"start":{"line":92,"column":4},"end":{"line":92,"column":2815}}},"branchMap":{"1":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":72,"column":4}},{"start":{"line":72,"column":4},"end":{"line":72,"column":4}}]}}},"src/models/BalanceMultipliers.sol":{"l":{"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"45":0,"53":72,"55":72,"59":72,"60":72},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/BalanceMultipliers.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":72,"10":72,"11":72,"12":72},"b":{"1":[72,0]},"f":{"1":0,"2":0,"3":72},"fnMap":{"1":{"name":"deserialize","line":26,"loc":{"start":{"line":26,"column":2},"end":{"line":38,"column":2}}},"2":{"name":"exists","line":40,"loc":{"start":{"line":40,"column":2},"end":{"line":46,"column":2}}},"3":{"name":"serialize","line":52,"loc":{"start":{"line":52,"column":2},"end":{"line":61,"column":2}}}},"statementMap":{"1":{"start":{"line":31,"column":4},"end":{"line":31,"column":36}},"2":{"start":{"line":32,"column":4},"end":{"line":32,"column":32}},"3":{"start":{"line":33,"column":4},"end":{"line":33,"column":32}},"4":{"start":{"line":34,"column":4},"end":{"line":34,"column":76}},"5":{"start":{"line":35,"column":4},"end":{"line":35,"column":76}},"6":{"start":{"line":36,"column":4},"end":{"line":36,"column":24}},"7":{"start":{"line":37,"column":4},"end":{"line":37,"column":17}},"8":{"start":{"line":45,"column":4},"end":{"line":45,"column":15}},"9":{"start":{"line":53,"column":4},"end":{"line":53,"column":90}},"10":{"start":{"line":55,"column":4},"end":{"line":55,"column":1650}},"11":{"start":{"line":59,"column":4},"end":{"line":59,"column":81}},"12":{"start":{"line":60,"column":4},"end":{"line":60,"column":81}}},"branchMap":{"1":{"line":53,"type":"if","locations":[{"start":{"line":53,"column":4},"end":{"line":53,"column":4}},{"start":{"line":53,"column":4},"end":{"line":53,"column":4}}]}}},"src/models/DAO.sol":{"l":{"32":166,"33":166,"35":166,"36":166,"37":166,"38":166,"41":166,"50":0,"54":45,"64":40,"72":57,"77":57,"78":57,"79":57,"81":57,"82":42,"83":126,"84":126,"88":57,"92":166},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/DAO.sol","s":{"1":166,"2":166,"3":166,"4":166,"5":166,"6":166,"7":166,"8":0,"9":45,"10":40,"11":57,"12":57,"13":57,"14":57,"15":57,"16":42,"17":126,"18":126,"19":57,"20":166},"b":{"1":[166,0],"2":[57,0],"3":[42,15]},"f":{"1":166,"2":0,"3":45,"4":40,"5":57,"6":166},"fnMap":{"1":{"name":"deserialize","line":27,"loc":{"start":{"line":27,"column":2},"end":{"line":42,"column":2}}},"2":{"name":"exists","line":49,"loc":{"start":{"line":49,"column":2},"end":{"line":51,"column":2}}},"3":{"name":"getSummoner","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":55,"column":2}}},"4":{"name":"isSummoner","line":63,"loc":{"start":{"line":63,"column":2},"end":{"line":65,"column":2}}},"5":{"name":"serialize","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":89,"column":2}}},"6":{"name":"_exists","line":91,"loc":{"start":{"line":91,"column":2},"end":{"line":93,"column":2}}}},"statementMap":{"1":{"start":{"line":32,"column":4},"end":{"line":32,"column":22}},"2":{"start":{"line":33,"column":4},"end":{"line":33,"column":32}},"3":{"start":{"line":35,"column":4},"end":{"line":35,"column":903}},"4":{"start":{"line":36,"column":6},"end":{"line":36,"column":66}},"5":{"start":{"line":37,"column":6},"end":{"line":37,"column":90}},"6":{"start":{"line":38,"column":6},"end":{"line":38,"column":72}},"7":{"start":{"line":41,"column":4},"end":{"line":41,"column":17}},"8":{"start":{"line":50,"column":4},"end":{"line":50,"column":25}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":76}},"10":{"start":{"line":64,"column":4},"end":{"line":64,"column":82}},"11":{"start":{"line":72,"column":4},"end":{"line":72,"column":2142}},"12":{"start":{"line":77,"column":4},"end":{"line":77,"column":69}},"13":{"start":{"line":78,"column":4},"end":{"line":78,"column":93}},"14":{"start":{"line":79,"column":4},"end":{"line":79,"column":75}},"15":{"start":{"line":81,"column":4},"end":{"line":81,"column":2530}},"16":{"start":{"line":82,"column":6},"end":{"line":82,"column":2597}},"17":{"start":{"line":83,"column":8},"end":{"line":83,"column":89}},"18":{"start":{"line":84,"column":8},"end":{"line":84,"column":90}},"19":{"start":{"line":88,"column":4},"end":{"line":88,"column":62}},"20":{"start":{"line":92,"column":4},"end":{"line":92,"column":58}}},"branchMap":{"1":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":35,"column":4}},{"start":{"line":35,"column":4},"end":{"line":35,"column":4}}]},"2":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":72,"column":4}},{"start":{"line":72,"column":4},"end":{"line":72,"column":4}}]},"3":{"line":81,"type":"if","locations":[{"start":{"line":81,"column":4},"end":{"line":81,"column":4}},{"start":{"line":81,"column":4},"end":{"line":81,"column":4}}]}}},"src/models/Ecosystem.sol":{"l":{"35":556,"36":556,"37":556,"40":556,"43":556,"46":556,"49":556,"50":556,"53":556,"56":556,"61":556,"70":1,"78":78,"80":78,"87":78,"91":78,"95":78,"99":78,"100":78,"104":78,"108":78,"113":78,"117":635},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Ecosystem.sol","s":{"1":556,"2":556,"3":556,"4":556,"5":556,"6":556,"7":556,"8":556,"9":556,"10":556,"11":556,"12":1,"13":78,"14":78,"15":78,"16":78,"17":78,"18":78,"19":78,"20":78,"21":78,"22":78,"23":635},"b":{"1":[556,0],"2":[78,0]},"f":{"1":556,"2":1,"3":78,"4":635},"fnMap":{"1":{"name":"deserialize","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":62,"column":2}}},"2":{"name":"exists","line":69,"loc":{"start":{"line":69,"column":2},"end":{"line":71,"column":2}}},"3":{"name":"serialize","line":77,"loc":{"start":{"line":77,"column":2},"end":{"line":114,"column":2}}},"4":{"name":"_exists","line":116,"loc":{"start":{"line":116,"column":2},"end":{"line":118,"column":2}}}},"statementMap":{"1":{"start":{"line":35,"column":4},"end":{"line":35,"column":1142}},"2":{"start":{"line":36,"column":6},"end":{"line":36,"column":36}},"3":{"start":{"line":37,"column":6},"end":{"line":37,"column":1217}},"4":{"start":{"line":40,"column":6},"end":{"line":40,"column":1345}},"5":{"start":{"line":43,"column":6},"end":{"line":43,"column":1495}},"6":{"start":{"line":46,"column":6},"end":{"line":46,"column":1623}},"7":{"start":{"line":49,"column":6},"end":{"line":49,"column":49}},"8":{"start":{"line":50,"column":6},"end":{"line":50,"column":1795}},"9":{"start":{"line":53,"column":6},"end":{"line":53,"column":1929}},"10":{"start":{"line":56,"column":6},"end":{"line":56,"column":2065}},"11":{"start":{"line":61,"column":4},"end":{"line":61,"column":17}},"12":{"start":{"line":70,"column":4},"end":{"line":70,"column":31}},"13":{"start":{"line":78,"column":4},"end":{"line":78,"column":50}},"14":{"start":{"line":80,"column":4},"end":{"line":80,"column":2684}},"15":{"start":{"line":87,"column":4},"end":{"line":87,"column":2891}},"16":{"start":{"line":91,"column":4},"end":{"line":91,"column":3018}},"17":{"start":{"line":95,"column":4},"end":{"line":95,"column":3167}},"18":{"start":{"line":99,"column":4},"end":{"line":99,"column":98}},"19":{"start":{"line":100,"column":4},"end":{"line":100,"column":3395}},"20":{"start":{"line":104,"column":4},"end":{"line":104,"column":3528}},"21":{"start":{"line":108,"column":4},"end":{"line":108,"column":3663}},"22":{"start":{"line":113,"column":4},"end":{"line":113,"column":68}},"23":{"start":{"line":117,"column":4},"end":{"line":117,"column":64}}},"branchMap":{"1":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":35,"column":4}},{"start":{"line":35,"column":4},"end":{"line":35,"column":4}}]},"2":{"line":80,"type":"if","locations":[{"start":{"line":80,"column":4},"end":{"line":80,"column":4}},{"start":{"line":80,"column":4},"end":{"line":80,"column":4}}]}}},"src/models/EternalModel.sol":{"l":{"30":2080,"37":612,"39":612,"46":3937,"53":1369,"60":0,"67":0,"69":0,"81":1332,"89":273,"97":672,"105":498,"113":0,"121":0,"132":0,"139":0,"141":0,"148":0,"155":0,"162":0,"169":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/EternalModel.sol","s":{"1":2080,"2":612,"3":612,"4":3937,"5":1369,"6":0,"7":0,"8":0,"9":1332,"10":273,"11":672,"12":498,"13":0,"14":0,"15":0},"b":{"1":[612,0],"2":[0,0],"3":[0,0]},"f":{"1":2080,"2":612,"3":3937,"4":1369,"5":0,"6":0,"7":1332,"8":273,"9":672,"10":498,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0},"fnMap":{"1":{"name":"getUint","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":31,"column":2}}},"2":{"name":"getString","line":36,"loc":{"start":{"line":36,"column":2},"end":{"line":40,"column":2}}},"3":{"name":"getAddress","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":2}}},"4":{"name":"getBool","line":52,"loc":{"start":{"line":52,"column":2},"end":{"line":54,"column":2}}},"5":{"name":"getInt","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":61,"column":2}}},"6":{"name":"getBytes","line":66,"loc":{"start":{"line":66,"column":2},"end":{"line":70,"column":2}}},"7":{"name":"setUint","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":82,"column":2}}},"8":{"name":"setString","line":88,"loc":{"start":{"line":88,"column":2},"end":{"line":90,"column":2}}},"9":{"name":"setAddress","line":96,"loc":{"start":{"line":96,"column":2},"end":{"line":98,"column":2}}},"10":{"name":"setBool","line":104,"loc":{"start":{"line":104,"column":2},"end":{"line":106,"column":2}}},"11":{"name":"setInt","line":112,"loc":{"start":{"line":112,"column":2},"end":{"line":114,"column":2}}},"12":{"name":"setBytes","line":120,"loc":{"start":{"line":120,"column":2},"end":{"line":122,"column":2}}},"13":{"name":"deleteUint","line":131,"loc":{"start":{"line":131,"column":2},"end":{"line":133,"column":2}}},"14":{"name":"deleteString","line":138,"loc":{"start":{"line":138,"column":2},"end":{"line":142,"column":2}}},"15":{"name":"deleteAddress","line":147,"loc":{"start":{"line":147,"column":2},"end":{"line":149,"column":2}}},"16":{"name":"deleteBool","line":154,"loc":{"start":{"line":154,"column":2},"end":{"line":156,"column":2}}},"17":{"name":"deleteInt","line":161,"loc":{"start":{"line":161,"column":2},"end":{"line":163,"column":2}}},"18":{"name":"deleteBytes","line":168,"loc":{"start":{"line":168,"column":2},"end":{"line":170,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":30}},"2":{"start":{"line":37,"column":4},"end":{"line":37,"column":52}},"3":{"start":{"line":39,"column":4},"end":{"line":39,"column":32}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":33}},"5":{"start":{"line":53,"column":4},"end":{"line":53,"column":30}},"6":{"start":{"line":60,"column":4},"end":{"line":60,"column":29}},"7":{"start":{"line":67,"column":4},"end":{"line":67,"column":52}},"8":{"start":{"line":69,"column":4},"end":{"line":69,"column":31}},"9":{"start":{"line":81,"column":4},"end":{"line":81,"column":31}},"10":{"start":{"line":89,"column":4},"end":{"line":89,"column":33}},"11":{"start":{"line":97,"column":4},"end":{"line":97,"column":34}},"12":{"start":{"line":105,"column":4},"end":{"line":105,"column":31}},"13":{"start":{"line":113,"column":4},"end":{"line":113,"column":30}},"14":{"start":{"line":121,"column":4},"end":{"line":121,"column":32}},"15":{"start":{"line":139,"column":4},"end":{"line":139,"column":52}}},"branchMap":{"1":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":37,"column":4}},{"start":{"line":37,"column":4},"end":{"line":37,"column":4}}]},"2":{"line":67,"type":"if","locations":[{"start":{"line":67,"column":4},"end":{"line":67,"column":4}},{"start":{"line":67,"column":4},"end":{"line":67,"column":4}}]},"3":{"line":139,"type":"if","locations":[{"start":{"line":139,"column":4},"end":{"line":139,"column":4}},{"start":{"line":139,"column":4},"end":{"line":139,"column":4}}]}}},"src/models/Token.sol":{"l":{"42":227,"43":227,"45":227,"46":223,"47":223,"48":223,"49":223,"50":223,"51":223,"52":223,"53":223,"54":223,"55":223,"58":227,"62":22,"66":72,"68":72,"69":72,"77":108,"84":108,"85":108,"86":108,"87":108,"88":108,"89":108,"90":108,"91":108,"93":108,"99":51,"103":282},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Token.sol","s":{"1":227,"2":227,"3":227,"4":223,"5":223,"6":223,"7":223,"8":223,"9":223,"10":223,"11":223,"12":223,"13":223,"14":227,"15":22,"16":72,"17":72,"18":72,"19":108,"20":108,"21":108,"22":108,"23":108,"24":108,"25":108,"26":108,"27":108,"28":108,"29":51,"30":282},"b":{"1":[223,4],"2":[72,0],"3":[108,0]},"f":{"1":227,"2":22,"3":72,"4":108,"5":51,"6":282},"fnMap":{"1":{"name":"deserialize","line":37,"loc":{"start":{"line":37,"column":2},"end":{"line":59,"column":2}}},"2":{"name":"exists","line":61,"loc":{"start":{"line":61,"column":2},"end":{"line":63,"column":2}}},"3":{"name":"incrementCounter","line":65,"loc":{"start":{"line":65,"column":2},"end":{"line":70,"column":2}}},"4":{"name":"serialize","line":76,"loc":{"start":{"line":76,"column":2},"end":{"line":94,"column":2}}},"5":{"name":"updateNumberOfTokenHolders","line":96,"loc":{"start":{"line":96,"column":2},"end":{"line":100,"column":2}}},"6":{"name":"_exists","line":102,"loc":{"start":{"line":102,"column":2},"end":{"line":104,"column":2}}}},"statementMap":{"1":{"start":{"line":42,"column":4},"end":{"line":42,"column":22}},"2":{"start":{"line":43,"column":4},"end":{"line":43,"column":32}},"3":{"start":{"line":45,"column":4},"end":{"line":45,"column":1269}},"4":{"start":{"line":46,"column":6},"end":{"line":46,"column":70}},"5":{"start":{"line":47,"column":6},"end":{"line":47,"column":64}},"6":{"start":{"line":48,"column":6},"end":{"line":48,"column":76}},"7":{"start":{"line":49,"column":6},"end":{"line":49,"column":58}},"8":{"start":{"line":50,"column":6},"end":{"line":50,"column":68}},"9":{"start":{"line":51,"column":6},"end":{"line":51,"column":58}},"10":{"start":{"line":52,"column":6},"end":{"line":52,"column":90}},"11":{"start":{"line":53,"column":6},"end":{"line":53,"column":66}},"12":{"start":{"line":54,"column":6},"end":{"line":54,"column":96}},"13":{"start":{"line":55,"column":6},"end":{"line":55,"column":70}},"14":{"start":{"line":58,"column":4},"end":{"line":58,"column":17}},"15":{"start":{"line":62,"column":4},"end":{"line":62,"column":25}},"16":{"start":{"line":66,"column":4},"end":{"line":66,"column":65}},"17":{"start":{"line":68,"column":4},"end":{"line":68,"column":76}},"18":{"start":{"line":69,"column":4},"end":{"line":69,"column":83}},"19":{"start":{"line":77,"column":4},"end":{"line":77,"column":2629}},"20":{"start":{"line":84,"column":4},"end":{"line":84,"column":69}},"21":{"start":{"line":85,"column":4},"end":{"line":85,"column":73}},"22":{"start":{"line":86,"column":4},"end":{"line":86,"column":67}},"23":{"start":{"line":87,"column":4},"end":{"line":87,"column":79}},"24":{"start":{"line":88,"column":4},"end":{"line":88,"column":61}},"25":{"start":{"line":89,"column":4},"end":{"line":89,"column":71}},"26":{"start":{"line":90,"column":4},"end":{"line":90,"column":61}},"27":{"start":{"line":91,"column":4},"end":{"line":91,"column":93}},"28":{"start":{"line":93,"column":4},"end":{"line":93,"column":62}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":92}},"30":{"start":{"line":103,"column":4},"end":{"line":103,"column":58}}},"branchMap":{"1":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":45,"column":4}},{"start":{"line":45,"column":4},"end":{"line":45,"column":4}}]},"2":{"line":66,"type":"if","locations":[{"start":{"line":66,"column":4},"end":{"line":66,"column":4}},{"start":{"line":66,"column":4},"end":{"line":66,"column":4}}]},"3":{"line":77,"type":"if","locations":[{"start":{"line":77,"column":4},"end":{"line":77,"column":4}},{"start":{"line":77,"column":4},"end":{"line":77,"column":4}}]}}},"src/models/TokenHolder.sol":{"l":{"29":80,"30":80,"31":80,"33":80,"34":29,"35":29,"38":80,"46":0,"54":72,"56":72,"57":72,"59":72,"67":80},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/TokenHolder.sol","s":{"1":80,"2":80,"3":80,"4":80,"5":29,"6":29,"7":80,"8":0,"9":72,"10":72,"11":72,"12":72,"13":80},"b":{"1":[29,51],"2":[72,0]},"f":{"1":80,"2":0,"3":72,"4":80},"fnMap":{"1":{"name":"deserialize","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":39,"column":2}}},"2":{"name":"exists","line":41,"loc":{"start":{"line":41,"column":2},"end":{"line":47,"column":2}}},"3":{"name":"serialize","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":60,"column":2}}},"4":{"name":"_exists","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":68,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":28}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":32}},"3":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":1003}},"5":{"start":{"line":34,"column":6},"end":{"line":34,"column":98}},"6":{"start":{"line":35,"column":6},"end":{"line":35,"column":96}},"7":{"start":{"line":38,"column":4},"end":{"line":38,"column":17}},"8":{"start":{"line":46,"column":4},"end":{"line":46,"column":48}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":71}},"10":{"start":{"line":56,"column":4},"end":{"line":56,"column":95}},"11":{"start":{"line":57,"column":4},"end":{"line":57,"column":93}},"12":{"start":{"line":59,"column":4},"end":{"line":59,"column":84}},"13":{"start":{"line":67,"column":4},"end":{"line":67,"column":74}}},"branchMap":{"1":{"line":33,"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":33,"column":4}},{"start":{"line":33,"column":4},"end":{"line":33,"column":4}}]},"2":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":54,"column":4}},{"start":{"line":54,"column":4},"end":{"line":54,"column":4}}]}}},"src/services/Configurator.sol":{"l":{"30":42,"31":42,"32":42,"33":42,"34":42,"35":42,"36":42,"37":42,"38":42,"50":42,"52":42,"55":42,"56":42,"57":42,"58":42,"59":42,"60":42,"63":42,"65":42,"66":42,"91":33,"92":33,"93":33,"94":33,"95":33,"96":33,"97":33,"98":33,"99":33,"100":33,"101":33,"103":33,"104":33,"105":33,"107":33},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/services/Configurator.sol","s":{"1":42,"2":42,"3":42,"4":42,"5":42,"6":42,"7":42,"8":42,"9":42,"10":42,"11":42,"12":42,"13":42,"14":42,"15":42,"16":42,"17":42,"18":42,"19":42,"20":42,"21":33,"22":33,"23":33,"24":33,"25":33,"26":33,"27":33,"28":33,"29":33,"30":33,"31":33,"32":33,"33":33,"34":33,"35":33},"b":{},"f":{"1":42,"2":42,"3":33},"fnMap":{"1":{"name":"buildDAO","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":39,"column":2}}},"2":{"name":"buildEcosystem","line":46,"loc":{"start":{"line":46,"column":2},"end":{"line":67,"column":2}}},"3":{"name":"buildToken","line":82,"loc":{"start":{"line":82,"column":2},"end":{"line":108,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":52}},"2":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":29}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":19}},"5":{"start":{"line":34,"column":4},"end":{"line":34,"column":45}},"6":{"start":{"line":35,"column":4},"end":{"line":35,"column":23}},"7":{"start":{"line":36,"column":4},"end":{"line":36,"column":29}},"8":{"start":{"line":37,"column":4},"end":{"line":37,"column":28}},"9":{"start":{"line":38,"column":4},"end":{"line":38,"column":14}},"10":{"start":{"line":50,"column":4},"end":{"line":50,"column":74}},"11":{"start":{"line":52,"column":4},"end":{"line":52,"column":36}},"12":{"start":{"line":55,"column":4},"end":{"line":55,"column":63}},"13":{"start":{"line":56,"column":4},"end":{"line":56,"column":85}},"14":{"start":{"line":57,"column":4},"end":{"line":57,"column":55}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":67}},"16":{"start":{"line":59,"column":4},"end":{"line":59,"column":71}},"17":{"start":{"line":60,"column":4},"end":{"line":60,"column":59}},"18":{"start":{"line":63,"column":4},"end":{"line":63,"column":63}},"19":{"start":{"line":65,"column":4},"end":{"line":65,"column":40}},"20":{"start":{"line":66,"column":4},"end":{"line":66,"column":20}},"21":{"start":{"line":91,"column":4},"end":{"line":91,"column":60}},"22":{"start":{"line":92,"column":4},"end":{"line":92,"column":21}},"23":{"start":{"line":93,"column":4},"end":{"line":93,"column":31}},"24":{"start":{"line":94,"column":4},"end":{"line":94,"column":33}},"25":{"start":{"line":95,"column":4},"end":{"line":95,"column":15}},"26":{"start":{"line":96,"column":4},"end":{"line":96,"column":19}},"27":{"start":{"line":97,"column":4},"end":{"line":97,"column":32}},"28":{"start":{"line":98,"column":4},"end":{"line":98,"column":47}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":21}},"30":{"start":{"line":100,"column":4},"end":{"line":100,"column":25}},"31":{"start":{"line":101,"column":4},"end":{"line":101,"column":97}},"32":{"start":{"line":103,"column":4},"end":{"line":103,"column":49}},"33":{"start":{"line":104,"column":4},"end":{"line":104,"column":68}},"34":{"start":{"line":105,"column":4},"end":{"line":105,"column":32}},"35":{"start":{"line":107,"column":4},"end":{"line":107,"column":16}}},"branchMap":{}},"src/tokens/ElasticGovernanceToken.sol":{"l":{"29":66,"30":66,"34":3,"35":3,"39":69,"40":69,"44":33,"45":33,"46":33,"47":33,"60":0,"79":0,"80":0,"89":7,"90":7,"91":7,"93":7,"102":1,"103":1,"107":0,"108":0,"109":0,"110":0,"112":0,"113":0,"115":0,"131":0,"132":0,"147":3,"148":3,"156":0,"166":0,"168":0,"170":0,"171":0,"181":0,"182":0,"192":0,"194":0,"209":69,"210":69,"218":0,"222":0,"226":33,"230":33,"239":0,"252":6,"253":6,"257":0,"258":0,"270":0,"271":0,"289":0,"291":0,"293":0,"294":0,"296":0,"299":0,"309":0,"310":0,"312":0,"314":0,"322":0,"323":0,"324":0,"325":0,"327":0,"331":0,"332":0,"333":0,"337":3,"338":3,"339":3,"340":3,"341":3,"343":3,"345":3,"346":3,"348":3,"349":3,"350":3,"354":0,"355":0,"356":0,"360":69,"361":69,"362":69,"363":69,"364":69,"366":69,"368":69,"370":69,"371":69,"373":69,"374":69,"375":69,"377":69,"385":0,"386":0,"387":0,"389":0,"390":0,"391":0,"392":0,"394":0,"395":0,"397":0,"398":0,"400":0,"401":0,"402":0,"403":0,"404":0,"406":0,"415":72,"416":72,"417":72,"418":72,"419":72,"420":72,"421":72,"422":72,"423":72,"424":72,"425":72,"427":72,"428":69,"430":3,"433":72,"435":72,"436":72,"438":72,"447":72,"448":51,"451":72,"452":0,"459":237,"463":80,"464":80,"473":13,"474":13},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/tokens/ElasticGovernanceToken.sol","s":{"1":66,"2":3,"3":69,"4":33,"5":33,"6":33,"7":33,"8":0,"9":0,"10":0,"11":7,"12":7,"13":7,"14":7,"15":1,"16":1,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":3,"27":3,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":69,"38":69,"39":0,"40":0,"41":33,"42":33,"43":0,"44":6,"45":6,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":3,"69":3,"70":3,"71":3,"72":3,"73":3,"74":3,"75":3,"76":3,"77":3,"78":3,"79":0,"80":0,"81":0,"82":69,"83":69,"84":69,"85":69,"86":69,"87":69,"88":69,"89":69,"90":69,"91":69,"92":69,"93":69,"94":69,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":72,"113":72,"114":72,"115":72,"116":72,"117":72,"118":72,"119":72,"120":72,"121":72,"122":72,"123":72,"124":69,"125":3,"126":72,"127":72,"128":72,"129":72,"130":72,"131":51,"132":72,"133":0,"134":237,"135":80,"136":80,"137":13,"138":13},"b":{"1":[66,0],"2":[3,0],"3":[69,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[69,3],"11":[51,21],"12":[0,72]},"f":{"1":66,"2":3,"3":69,"4":33,"5":0,"6":0,"7":7,"8":1,"9":0,"10":0,"11":3,"12":0,"13":0,"14":0,"15":0,"16":69,"17":0,"18":0,"19":33,"20":33,"21":0,"22":6,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":3,"30":0,"31":69,"32":0,"33":72,"34":72,"35":237,"36":80,"37":13},"fnMap":{"1":{"name":"onlyDAO","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":31,"column":2}}},"2":{"name":"onlyDAOorBurner","line":33,"loc":{"start":{"line":33,"column":2},"end":{"line":36,"column":2}}},"3":{"name":"onlyDAOorMinter","line":38,"loc":{"start":{"line":38,"column":2},"end":{"line":41,"column":2}}},"4":{"name":"constructor","line":43,"loc":{"start":{"line":43,"column":2},"end":{"line":48,"column":2}}},"5":{"name":"allowance","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":61,"column":2}}},"6":{"name":"approve","line":78,"loc":{"start":{"line":78,"column":2},"end":{"line":81,"column":2}}},"7":{"name":"balanceOf","line":88,"loc":{"start":{"line":88,"column":2},"end":{"line":94,"column":2}}},"8":{"name":"balanceOfInShares","line":101,"loc":{"start":{"line":101,"column":2},"end":{"line":104,"column":2}}},"9":{"name":"balanceOfVoting","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":117,"column":2}}},"10":{"name":"burn","line":128,"loc":{"start":{"line":125,"column":2},"end":{"line":133,"column":2}}},"11":{"name":"burnShares","line":144,"loc":{"start":{"line":141,"column":2},"end":{"line":149,"column":2}}},"12":{"name":"decimals","line":155,"loc":{"start":{"line":155,"column":2},"end":{"line":157,"column":2}}},"13":{"name":"decreaseAllowance","line":165,"loc":{"start":{"line":165,"column":2},"end":{"line":172,"column":2}}},"14":{"name":"increaseAllowance","line":180,"loc":{"start":{"line":180,"column":2},"end":{"line":183,"column":2}}},"15":{"name":"mint","line":191,"loc":{"start":{"line":191,"column":2},"end":{"line":195,"column":2}}},"16":{"name":"mintShares","line":206,"loc":{"start":{"line":203,"column":2},"end":{"line":211,"column":2}}},"17":{"name":"name","line":217,"loc":{"start":{"line":217,"column":2},"end":{"line":219,"column":2}}},"18":{"name":"numberOfTokenHolders","line":221,"loc":{"start":{"line":221,"column":2},"end":{"line":223,"column":2}}},"19":{"name":"setBurner","line":225,"loc":{"start":{"line":225,"column":2},"end":{"line":227,"column":2}}},"20":{"name":"setMinter","line":229,"loc":{"start":{"line":229,"column":2},"end":{"line":231,"column":2}}},"21":{"name":"symbol","line":238,"loc":{"start":{"line":238,"column":2},"end":{"line":240,"column":2}}},"22":{"name":"totalSupply","line":251,"loc":{"start":{"line":251,"column":2},"end":{"line":254,"column":2}}},"23":{"name":"totalSupplyInShares","line":256,"loc":{"start":{"line":256,"column":2},"end":{"line":259,"column":2}}},"24":{"name":"transfer","line":269,"loc":{"start":{"line":269,"column":2},"end":{"line":272,"column":2}}},"25":{"name":"transferFrom","line":284,"loc":{"start":{"line":284,"column":2},"end":{"line":300,"column":2}}},"26":{"name":"_approve","line":304,"loc":{"start":{"line":304,"column":2},"end":{"line":315,"column":2}}},"27":{"name":"_balanceAt","line":317,"loc":{"start":{"line":317,"column":2},"end":{"line":328,"column":2}}},"28":{"name":"_burn","line":330,"loc":{"start":{"line":330,"column":2},"end":{"line":334,"column":2}}},"29":{"name":"_burnShares","line":336,"loc":{"start":{"line":336,"column":2},"end":{"line":351,"column":2}}},"30":{"name":"_mint","line":353,"loc":{"start":{"line":353,"column":2},"end":{"line":357,"column":2}}},"31":{"name":"_mintShares","line":359,"loc":{"start":{"line":359,"column":2},"end":{"line":378,"column":2}}},"32":{"name":"_transfer","line":380,"loc":{"start":{"line":380,"column":2},"end":{"line":407,"column":2}}},"33":{"name":"_updateBalance","line":409,"loc":{"start":{"line":409,"column":2},"end":{"line":439,"column":2}}},"34":{"name":"_updateNumberOfTokenHolders","line":441,"loc":{"start":{"line":441,"column":2},"end":{"line":454,"column":2}}},"35":{"name":"_getEcosystem","line":458,"loc":{"start":{"line":458,"column":2},"end":{"line":460,"column":2}}},"36":{"name":"_getTokenHolder","line":462,"loc":{"start":{"line":462,"column":2},"end":{"line":470,"column":2}}},"37":{"name":"_getToken","line":472,"loc":{"start":{"line":472,"column":2},"end":{"line":475,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":90}},"2":{"start":{"line":34,"column":4},"end":{"line":34,"column":90}},"3":{"start":{"line":39,"column":4},"end":{"line":39,"column":90}},"4":{"start":{"line":44,"column":4},"end":{"line":44,"column":23}},"5":{"start":{"line":45,"column":4},"end":{"line":45,"column":27}},"6":{"start":{"line":46,"column":4},"end":{"line":46,"column":49}},"7":{"start":{"line":47,"column":4},"end":{"line":47,"column":23}},"8":{"start":{"line":60,"column":4},"end":{"line":60,"column":40}},"9":{"start":{"line":79,"column":4},"end":{"line":79,"column":42}},"10":{"start":{"line":80,"column":4},"end":{"line":80,"column":15}},"11":{"start":{"line":89,"column":4},"end":{"line":89,"column":45}},"12":{"start":{"line":90,"column":4},"end":{"line":90,"column":71}},"13":{"start":{"line":91,"column":4},"end":{"line":91,"column":67}},"14":{"start":{"line":93,"column":4},"end":{"line":93,"column":12}},"15":{"start":{"line":102,"column":4},"end":{"line":102,"column":71}},"16":{"start":{"line":103,"column":4},"end":{"line":103,"column":29}},"17":{"start":{"line":107,"column":4},"end":{"line":107,"column":45}},"18":{"start":{"line":108,"column":4},"end":{"line":108,"column":71}},"19":{"start":{"line":109,"column":4},"end":{"line":109,"column":59}},"20":{"start":{"line":110,"column":4},"end":{"line":110,"column":58}},"21":{"start":{"line":112,"column":4},"end":{"line":112,"column":3845}},"22":{"start":{"line":113,"column":6},"end":{"line":113,"column":61}},"23":{"start":{"line":115,"column":6},"end":{"line":115,"column":64}},"24":{"start":{"line":131,"column":4},"end":{"line":131,"column":27}},"25":{"start":{"line":132,"column":4},"end":{"line":132,"column":15}},"26":{"start":{"line":147,"column":4},"end":{"line":147,"column":33}},"27":{"start":{"line":148,"column":4},"end":{"line":148,"column":15}},"28":{"start":{"line":156,"column":4},"end":{"line":156,"column":13}},"29":{"start":{"line":166,"column":4},"end":{"line":166,"column":92}},"30":{"start":{"line":168,"column":4},"end":{"line":168,"column":74}},"31":{"start":{"line":170,"column":4},"end":{"line":170,"column":47}},"32":{"start":{"line":171,"column":4},"end":{"line":171,"column":15}},"33":{"start":{"line":181,"column":4},"end":{"line":181,"column":95}},"34":{"start":{"line":182,"column":4},"end":{"line":182,"column":15}},"35":{"start":{"line":192,"column":4},"end":{"line":192,"column":27}},"36":{"start":{"line":194,"column":4},"end":{"line":194,"column":15}},"37":{"start":{"line":209,"column":4},"end":{"line":209,"column":33}},"38":{"start":{"line":210,"column":4},"end":{"line":210,"column":15}},"39":{"start":{"line":218,"column":4},"end":{"line":218,"column":27}},"40":{"start":{"line":222,"column":4},"end":{"line":222,"column":43}},"41":{"start":{"line":226,"column":4},"end":{"line":226,"column":19}},"42":{"start":{"line":230,"column":4},"end":{"line":230,"column":19}},"43":{"start":{"line":239,"column":4},"end":{"line":239,"column":29}},"44":{"start":{"line":252,"column":4},"end":{"line":252,"column":45}},"45":{"start":{"line":253,"column":4},"end":{"line":253,"column":56}},"46":{"start":{"line":257,"column":4},"end":{"line":257,"column":45}},"47":{"start":{"line":258,"column":4},"end":{"line":258,"column":23}},"48":{"start":{"line":270,"column":4},"end":{"line":270,"column":38}},"49":{"start":{"line":271,"column":4},"end":{"line":271,"column":15}},"50":{"start":{"line":289,"column":4},"end":{"line":289,"column":97}},"51":{"start":{"line":291,"column":4},"end":{"line":291,"column":33}},"52":{"start":{"line":293,"column":4},"end":{"line":293,"column":9096}},"53":{"start":{"line":294,"column":6},"end":{"line":294,"column":91}},"54":{"start":{"line":296,"column":6},"end":{"line":296,"column":68}},"55":{"start":{"line":299,"column":4},"end":{"line":299,"column":15}},"56":{"start":{"line":309,"column":4},"end":{"line":309,"column":72}},"57":{"start":{"line":310,"column":4},"end":{"line":310,"column":72}},"58":{"start":{"line":312,"column":4},"end":{"line":312,"column":42}},"59":{"start":{"line":314,"column":4},"end":{"line":314,"column":44}},"60":{"start":{"line":322,"column":4},"end":{"line":322,"column":45}},"61":{"start":{"line":323,"column":4},"end":{"line":323,"column":71}},"62":{"start":{"line":324,"column":4},"end":{"line":324,"column":57}},"63":{"start":{"line":325,"column":4},"end":{"line":325,"column":67}},"64":{"start":{"line":327,"column":4},"end":{"line":327,"column":82}},"65":{"start":{"line":331,"column":4},"end":{"line":331,"column":45}},"66":{"start":{"line":332,"column":4},"end":{"line":332,"column":76}},"67":{"start":{"line":333,"column":4},"end":{"line":333,"column":37}},"68":{"start":{"line":337,"column":4},"end":{"line":337,"column":57}},"69":{"start":{"line":338,"column":4},"end":{"line":338,"column":59}},"70":{"start":{"line":339,"column":4},"end":{"line":339,"column":84}},"71":{"start":{"line":340,"column":4},"end":{"line":340,"column":71}},"72":{"start":{"line":341,"column":4},"end":{"line":341,"column":52}},"73":{"start":{"line":343,"column":4},"end":{"line":343,"column":72}},"74":{"start":{"line":345,"column":4},"end":{"line":345,"column":58}},"75":{"start":{"line":346,"column":4},"end":{"line":346,"column":32}},"76":{"start":{"line":348,"column":4},"end":{"line":348,"column":83}},"77":{"start":{"line":349,"column":4},"end":{"line":349,"column":44}},"78":{"start":{"line":350,"column":4},"end":{"line":350,"column":84}},"79":{"start":{"line":354,"column":4},"end":{"line":354,"column":45}},"80":{"start":{"line":355,"column":4},"end":{"line":355,"column":76}},"81":{"start":{"line":356,"column":4},"end":{"line":356,"column":37}},"82":{"start":{"line":360,"column":4},"end":{"line":360,"column":57}},"83":{"start":{"line":361,"column":4},"end":{"line":361,"column":59}},"84":{"start":{"line":362,"column":4},"end":{"line":362,"column":84}},"85":{"start":{"line":363,"column":4},"end":{"line":363,"column":71}},"86":{"start":{"line":364,"column":4},"end":{"line":364,"column":52}},"87":{"start":{"line":366,"column":4},"end":{"line":366,"column":66}},"88":{"start":{"line":368,"column":4},"end":{"line":368,"column":71}},"89":{"start":{"line":370,"column":4},"end":{"line":370,"column":58}},"90":{"start":{"line":371,"column":4},"end":{"line":371,"column":32}},"91":{"start":{"line":373,"column":4},"end":{"line":373,"column":83}},"92":{"start":{"line":374,"column":4},"end":{"line":374,"column":44}},"93":{"start":{"line":375,"column":4},"end":{"line":375,"column":84}},"94":{"start":{"line":377,"column":4},"end":{"line":377,"column":47}},"95":{"start":{"line":385,"column":4},"end":{"line":385,"column":57}},"96":{"start":{"line":386,"column":4},"end":{"line":386,"column":59}},"97":{"start":{"line":387,"column":4},"end":{"line":387,"column":84}},"98":{"start":{"line":389,"column":4},"end":{"line":389,"column":72}},"99":{"start":{"line":390,"column":4},"end":{"line":390,"column":68}},"100":{"start":{"line":391,"column":4},"end":{"line":391,"column":60}},"101":{"start":{"line":392,"column":4},"end":{"line":392,"column":56}},"102":{"start":{"line":394,"column":4},"end":{"line":394,"column":76}},"103":{"start":{"line":395,"column":4},"end":{"line":395,"column":65}},"104":{"start":{"line":397,"column":4},"end":{"line":397,"column":79}},"105":{"start":{"line":398,"column":4},"end":{"line":398,"column":74}},"106":{"start":{"line":400,"column":4},"end":{"line":400,"column":83}},"107":{"start":{"line":401,"column":4},"end":{"line":401,"column":48}},"108":{"start":{"line":402,"column":4},"end":{"line":402,"column":46}},"109":{"start":{"line":403,"column":4},"end":{"line":403,"column":92}},"110":{"start":{"line":404,"column":4},"end":{"line":404,"column":88}},"111":{"start":{"line":406,"column":4},"end":{"line":406,"column":37}},"112":{"start":{"line":415,"column":4},"end":{"line":415,"column":57}},"113":{"start":{"line":416,"column":4},"end":{"line":416,"column":35}},"114":{"start":{"line":417,"column":4},"end":{"line":417,"column":37}},"115":{"start":{"line":418,"column":4},"end":{"line":418,"column":32}},"116":{"start":{"line":419,"column":4},"end":{"line":419,"column":39}},"117":{"start":{"line":420,"column":4},"end":{"line":420,"column":23}},"118":{"start":{"line":421,"column":4},"end":{"line":421,"column":23}},"119":{"start":{"line":422,"column":4},"end":{"line":422,"column":25}},"120":{"start":{"line":423,"column":4},"end":{"line":423,"column":37}},"121":{"start":{"line":424,"column":4},"end":{"line":424,"column":51}},"122":{"start":{"line":425,"column":4},"end":{"line":425,"column":63}},"123":{"start":{"line":427,"column":4},"end":{"line":427,"column":14338}},"124":{"start":{"line":428,"column":6},"end":{"line":428,"column":74}},"125":{"start":{"line":430,"column":6},"end":{"line":430,"column":74}},"126":{"start":{"line":433,"column":4},"end":{"line":433,"column":39}},"127":{"start":{"line":435,"column":4},"end":{"line":435,"column":60}},"128":{"start":{"line":436,"column":4},"end":{"line":436,"column":62}},"129":{"start":{"line":438,"column":4},"end":{"line":438,"column":23}},"130":{"start":{"line":447,"column":4},"end":{"line":447,"column":14924}},"131":{"start":{"line":448,"column":6},"end":{"line":448,"column":96}},"132":{"start":{"line":451,"column":4},"end":{"line":451,"column":15095}},"133":{"start":{"line":452,"column":6},"end":{"line":452,"column":96}},"134":{"start":{"line":459,"column":4},"end":{"line":459,"column":67}},"135":{"start":{"line":463,"column":4},"end":{"line":463,"column":57}},"136":{"start":{"line":464,"column":4},"end":{"line":464,"column":15598}},"137":{"start":{"line":473,"column":4},"end":{"line":473,"column":57}},"138":{"start":{"line":474,"column":4},"end":{"line":474,"column":83}}},"branchMap":{"1":{"line":29,"type":"if","locations":[{"start":{"line":29,"column":4},"end":{"line":29,"column":4}},{"start":{"line":29,"column":4},"end":{"line":29,"column":4}}]},"2":{"line":34,"type":"if","locations":[{"start":{"line":34,"column":4},"end":{"line":34,"column":4}},{"start":{"line":34,"column":4},"end":{"line":34,"column":4}}]},"3":{"line":39,"type":"if","locations":[{"start":{"line":39,"column":4},"end":{"line":39,"column":4}},{"start":{"line":39,"column":4},"end":{"line":39,"column":4}}]},"4":{"line":112,"type":"if","locations":[{"start":{"line":112,"column":4},"end":{"line":112,"column":4}},{"start":{"line":112,"column":4},"end":{"line":112,"column":4}}]},"5":{"line":168,"type":"if","locations":[{"start":{"line":168,"column":4},"end":{"line":168,"column":4}},{"start":{"line":168,"column":4},"end":{"line":168,"column":4}}]},"6":{"line":289,"type":"if","locations":[{"start":{"line":289,"column":4},"end":{"line":289,"column":4}},{"start":{"line":289,"column":4},"end":{"line":289,"column":4}}]},"7":{"line":293,"type":"if","locations":[{"start":{"line":293,"column":4},"end":{"line":293,"column":4}},{"start":{"line":293,"column":4},"end":{"line":293,"column":4}}]},"8":{"line":309,"type":"if","locations":[{"start":{"line":309,"column":4},"end":{"line":309,"column":4}},{"start":{"line":309,"column":4},"end":{"line":309,"column":4}}]},"9":{"line":310,"type":"if","locations":[{"start":{"line":310,"column":4},"end":{"line":310,"column":4}},{"start":{"line":310,"column":4},"end":{"line":310,"column":4}}]},"10":{"line":427,"type":"if","locations":[{"start":{"line":427,"column":4},"end":{"line":427,"column":4}},{"start":{"line":427,"column":4},"end":{"line":427,"column":4}}]},"11":{"line":447,"type":"if","locations":[{"start":{"line":447,"column":4},"end":{"line":447,"column":4}},{"start":{"line":447,"column":4},"end":{"line":447,"column":4}}]},"12":{"line":451,"type":"if","locations":[{"start":{"line":451,"column":4},"end":{"line":451,"column":4}},{"start":{"line":451,"column":4},"end":{"line":451,"column":4}}]}}}} \ No newline at end of file +{"src/core/ElasticDAO.sol":{"l":{"24":7,"25":7,"26":7,"29":61,"30":61,"32":61,"33":60,"36":192,"37":192,"38":191,"41":0,"42":0,"45":73,"46":72,"49":118,"50":118,"51":118,"52":118,"54":118,"55":116,"58":4,"59":4,"69":81,"70":81,"71":81,"72":81,"73":81,"74":81,"76":81,"77":81,"78":81,"83":3,"84":3,"85":3,"88":3,"89":3,"91":3,"102":72,"103":72,"105":72,"116":72,"117":72,"118":72,"120":72,"124":4,"126":4,"131":4,"132":4,"141":4,"151":4,"154":3,"155":3,"158":3,"159":3,"160":3,"161":3,"164":3,"168":0,"169":0,"170":0,"171":0,"175":0,"187":60,"189":60,"190":60,"191":60,"195":55,"197":54,"198":54,"199":54,"200":54,"202":54,"204":54,"205":162,"207":54,"208":54,"214":0,"218":0,"224":199,"225":199,"229":635,"233":67,"234":67},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAO.sol","s":{"1":7,"2":7,"3":61,"4":61,"5":61,"6":192,"7":192,"8":0,"9":73,"10":118,"11":118,"12":118,"13":118,"14":118,"15":4,"16":81,"17":81,"18":81,"19":81,"20":81,"21":81,"22":81,"23":81,"24":81,"25":3,"26":3,"27":3,"28":3,"29":3,"30":3,"31":72,"32":72,"33":72,"34":72,"35":72,"36":72,"37":72,"38":4,"39":4,"40":4,"41":4,"42":4,"43":4,"44":3,"45":3,"46":3,"47":3,"48":3,"49":3,"50":3,"51":0,"52":0,"53":0,"54":0,"55":0,"56":60,"57":60,"58":60,"59":60,"60":55,"61":54,"62":54,"63":54,"64":54,"65":54,"66":54,"67":162,"68":54,"69":54,"70":0,"71":0,"72":199,"73":199,"74":635,"75":67,"76":67},"b":{"1":[7,0],"2":[60,1],"3":[191,1],"4":[0,0],"5":[72,1],"6":[116,2],"7":[4,0],"8":[72,0],"9":[4,0],"10":[3,1],"11":[54,1]},"f":{"1":7,"2":61,"3":192,"4":0,"5":73,"6":118,"7":4,"8":81,"9":3,"10":72,"11":4,"12":0,"13":0,"14":60,"15":55,"16":0,"17":0,"18":199,"19":635,"20":67,"21":0},"fnMap":{"1":{"name":"onlyAfterSummoning","line":23,"loc":{"start":{"line":23,"column":2},"end":{"line":27,"column":2}}},"2":{"name":"onlyAfterTokenInitialized","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":34,"column":2}}},"3":{"name":"onlyBeforeSummoning","line":35,"loc":{"start":{"line":35,"column":2},"end":{"line":39,"column":2}}},"4":{"name":"onlyController","line":40,"loc":{"start":{"line":40,"column":2},"end":{"line":43,"column":2}}},"5":{"name":"onlyDeployer","line":44,"loc":{"start":{"line":44,"column":2},"end":{"line":47,"column":2}}},"6":{"name":"onlySummoners","line":48,"loc":{"start":{"line":48,"column":2},"end":{"line":56,"column":2}}},"7":{"name":"onlyWhenOpen","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":60,"column":2}}},"8":{"name":"constructor","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":79,"column":2}}},"9":{"name":"exit","line":81,"loc":{"start":{"line":81,"column":2},"end":{"line":92,"column":2}}},"10":{"name":"initializeToken","line":101,"loc":{"start":{"line":94,"column":2},"end":{"line":121,"column":2}}},"11":{"name":"join","line":123,"loc":{"start":{"line":123,"column":2},"end":{"line":165,"column":2}}},"12":{"name":"setController","line":167,"loc":{"start":{"line":167,"column":2},"end":{"line":172,"column":2}}},"13":{"name":"setMaxVotingLambda","line":174,"loc":{"start":{"line":174,"column":2},"end":{"line":176,"column":2}}},"14":{"name":"seedSummoning","line":185,"loc":{"start":{"line":180,"column":2},"end":{"line":192,"column":2}}},"15":{"name":"summon","line":194,"loc":{"start":{"line":194,"column":2},"end":{"line":209,"column":2}}},"16":{"name":"getDAO","line":213,"loc":{"start":{"line":213,"column":2},"end":{"line":215,"column":2}}},"17":{"name":"getEcosystem","line":217,"loc":{"start":{"line":217,"column":2},"end":{"line":219,"column":2}}},"18":{"name":"_getDAO","line":223,"loc":{"start":{"line":223,"column":2},"end":{"line":226,"column":2}}},"19":{"name":"_getEcosystem","line":228,"loc":{"start":{"line":228,"column":2},"end":{"line":230,"column":2}}},"20":{"name":"_getToken","line":232,"loc":{"start":{"line":232,"column":2},"end":{"line":236,"column":2}}},"21":{"name":null,"line":240,"loc":{"start":{"line":240,"column":2},"end":{"line":240,"column":31}}}},"statementMap":{"1":{"start":{"line":24,"column":4},"end":{"line":24,"column":39}},"2":{"start":{"line":25,"column":4},"end":{"line":25,"column":60}},"3":{"start":{"line":29,"column":4},"end":{"line":29,"column":57}},"4":{"start":{"line":30,"column":4},"end":{"line":30,"column":913}},"5":{"start":{"line":32,"column":4},"end":{"line":32,"column":77}},"6":{"start":{"line":36,"column":4},"end":{"line":36,"column":39}},"7":{"start":{"line":37,"column":4},"end":{"line":37,"column":73}},"8":{"start":{"line":41,"column":4},"end":{"line":41,"column":67}},"9":{"start":{"line":45,"column":4},"end":{"line":45,"column":63}},"10":{"start":{"line":49,"column":4},"end":{"line":49,"column":57}},"11":{"start":{"line":50,"column":4},"end":{"line":50,"column":52}},"12":{"start":{"line":51,"column":4},"end":{"line":51,"column":79}},"13":{"start":{"line":52,"column":4},"end":{"line":52,"column":64}},"14":{"start":{"line":54,"column":4},"end":{"line":54,"column":55}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":71}},"16":{"start":{"line":69,"column":4},"end":{"line":69,"column":49}},"17":{"start":{"line":70,"column":4},"end":{"line":70,"column":27}},"18":{"start":{"line":71,"column":4},"end":{"line":71,"column":24}},"19":{"start":{"line":72,"column":4},"end":{"line":72,"column":98}},"20":{"start":{"line":73,"column":4},"end":{"line":73,"column":40}},"21":{"start":{"line":74,"column":4},"end":{"line":74,"column":25}},"22":{"start":{"line":76,"column":4},"end":{"line":76,"column":74}},"23":{"start":{"line":77,"column":4},"end":{"line":77,"column":79}},"24":{"start":{"line":78,"column":4},"end":{"line":78,"column":74}},"25":{"start":{"line":83,"column":4},"end":{"line":83,"column":45}},"26":{"start":{"line":84,"column":4},"end":{"line":84,"column":77}},"27":{"start":{"line":85,"column":4},"end":{"line":85,"column":53}},"28":{"start":{"line":88,"column":4},"end":{"line":88,"column":72}},"29":{"start":{"line":89,"column":4},"end":{"line":89,"column":86}},"30":{"start":{"line":91,"column":4},"end":{"line":91,"column":41}},"31":{"start":{"line":102,"column":4},"end":{"line":102,"column":88}},"32":{"start":{"line":103,"column":4},"end":{"line":103,"column":57}},"33":{"start":{"line":105,"column":4},"end":{"line":105,"column":3533}},"34":{"start":{"line":116,"column":4},"end":{"line":116,"column":77}},"35":{"start":{"line":117,"column":4},"end":{"line":117,"column":38}},"36":{"start":{"line":118,"column":4},"end":{"line":118,"column":38}},"37":{"start":{"line":120,"column":4},"end":{"line":120,"column":51}},"38":{"start":{"line":124,"column":4},"end":{"line":124,"column":45}},"39":{"start":{"line":126,"column":4},"end":{"line":126,"column":4117}},"40":{"start":{"line":131,"column":4},"end":{"line":131,"column":77}},"41":{"start":{"line":132,"column":4},"end":{"line":132,"column":4328}},"42":{"start":{"line":141,"column":4},"end":{"line":141,"column":4774}},"43":{"start":{"line":151,"column":4},"end":{"line":151,"column":67}},"44":{"start":{"line":154,"column":4},"end":{"line":154,"column":65}},"45":{"start":{"line":155,"column":4},"end":{"line":155,"column":72}},"46":{"start":{"line":158,"column":4},"end":{"line":158,"column":57}},"47":{"start":{"line":159,"column":4},"end":{"line":159,"column":59}},"48":{"start":{"line":160,"column":4},"end":{"line":160,"column":18}},"49":{"start":{"line":161,"column":4},"end":{"line":161,"column":32}},"50":{"start":{"line":164,"column":4},"end":{"line":164,"column":53}},"51":{"start":{"line":168,"column":4},"end":{"line":168,"column":27}},"52":{"start":{"line":169,"column":4},"end":{"line":169,"column":83}},"53":{"start":{"line":170,"column":4},"end":{"line":170,"column":38}},"54":{"start":{"line":171,"column":4},"end":{"line":171,"column":38}},"55":{"start":{"line":175,"column":4},"end":{"line":175,"column":37}},"56":{"start":{"line":187,"column":4},"end":{"line":187,"column":45}},"57":{"start":{"line":189,"column":4},"end":{"line":189,"column":30}},"58":{"start":{"line":190,"column":4},"end":{"line":190,"column":62}},"59":{"start":{"line":191,"column":4},"end":{"line":191,"column":73}},"60":{"start":{"line":195,"column":4},"end":{"line":195,"column":98}},"61":{"start":{"line":197,"column":4},"end":{"line":197,"column":57}},"62":{"start":{"line":198,"column":4},"end":{"line":198,"column":52}},"63":{"start":{"line":199,"column":4},"end":{"line":199,"column":79}},"64":{"start":{"line":200,"column":4},"end":{"line":200,"column":6717}},"65":{"start":{"line":202,"column":4},"end":{"line":202,"column":77}},"66":{"start":{"line":204,"column":4},"end":{"line":204,"column":6837}},"67":{"start":{"line":205,"column":6},"end":{"line":205,"column":76}},"68":{"start":{"line":207,"column":4},"end":{"line":207,"column":22}},"69":{"start":{"line":208,"column":4},"end":{"line":208,"column":29}},"70":{"start":{"line":214,"column":4},"end":{"line":214,"column":20}},"71":{"start":{"line":218,"column":4},"end":{"line":218,"column":26}},"72":{"start":{"line":224,"column":4},"end":{"line":224,"column":57}},"73":{"start":{"line":225,"column":4},"end":{"line":225,"column":79}},"74":{"start":{"line":229,"column":4},"end":{"line":229,"column":70}},"75":{"start":{"line":233,"column":4},"end":{"line":233,"column":57}},"76":{"start":{"line":234,"column":4},"end":{"line":234,"column":7880}}},"branchMap":{"1":{"line":25,"type":"if","locations":[{"start":{"line":25,"column":4},"end":{"line":25,"column":4}},{"start":{"line":25,"column":4},"end":{"line":25,"column":4}}]},"2":{"line":32,"type":"if","locations":[{"start":{"line":32,"column":4},"end":{"line":32,"column":4}},{"start":{"line":32,"column":4},"end":{"line":32,"column":4}}]},"3":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":37,"column":4}},{"start":{"line":37,"column":4},"end":{"line":37,"column":4}}]},"4":{"line":41,"type":"if","locations":[{"start":{"line":41,"column":4},"end":{"line":41,"column":4}},{"start":{"line":41,"column":4},"end":{"line":41,"column":4}}]},"5":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":45,"column":4}},{"start":{"line":45,"column":4},"end":{"line":45,"column":4}}]},"6":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":54,"column":4}},{"start":{"line":54,"column":4},"end":{"line":54,"column":4}}]},"7":{"line":58,"type":"if","locations":[{"start":{"line":58,"column":4},"end":{"line":58,"column":4}},{"start":{"line":58,"column":4},"end":{"line":58,"column":4}}]},"8":{"line":102,"type":"if","locations":[{"start":{"line":102,"column":4},"end":{"line":102,"column":4}},{"start":{"line":102,"column":4},"end":{"line":102,"column":4}}]},"9":{"line":126,"type":"if","locations":[{"start":{"line":126,"column":4},"end":{"line":126,"column":4}},{"start":{"line":126,"column":4},"end":{"line":126,"column":4}}]},"10":{"line":151,"type":"if","locations":[{"start":{"line":151,"column":4},"end":{"line":151,"column":4}},{"start":{"line":151,"column":4},"end":{"line":151,"column":4}}]},"11":{"line":195,"type":"if","locations":[{"start":{"line":195,"column":4},"end":{"line":195,"column":4}},{"start":{"line":195,"column":4},"end":{"line":195,"column":4}}]}}},"src/core/ElasticDAOFactory.sol":{"l":{"21":0,"22":0,"26":3,"27":3,"46":54,"50":54,"52":54,"53":54,"54":54,"58":0,"59":0,"63":0,"65":0,"66":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAOFactory.sol","s":{"1":0,"2":3,"3":3,"4":54,"5":54,"6":54,"7":54,"8":54,"9":0,"10":0,"11":0,"12":0,"13":0},"b":{"1":[0,0]},"f":{"1":0,"2":3,"3":54,"4":0,"5":0,"6":0},"fnMap":{"1":{"name":"onlyDeployer","line":20,"loc":{"start":{"line":20,"column":2},"end":{"line":23,"column":2}}},"2":{"name":"constructor","line":25,"loc":{"start":{"line":25,"column":2},"end":{"line":28,"column":2}}},"3":{"name":"deployDAOAndToken","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":55,"column":2}}},"4":{"name":"updateFeeAddress","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":60,"column":2}}},"5":{"name":"collectFees","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":67,"column":2}}},"6":{"name":null,"line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":71,"column":31}}}},"statementMap":{"1":{"start":{"line":21,"column":4},"end":{"line":21,"column":63}},"2":{"start":{"line":26,"column":4},"end":{"line":26,"column":24}},"3":{"start":{"line":27,"column":4},"end":{"line":27,"column":49}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":1354}},"5":{"start":{"line":50,"column":4},"end":{"line":50,"column":96}},"6":{"start":{"line":52,"column":4},"end":{"line":52,"column":49}},"7":{"start":{"line":53,"column":4},"end":{"line":53,"column":55}},"8":{"start":{"line":54,"column":4},"end":{"line":54,"column":41}},"9":{"start":{"line":58,"column":4},"end":{"line":58,"column":37}},"10":{"start":{"line":59,"column":4},"end":{"line":59,"column":40}},"11":{"start":{"line":63,"column":4},"end":{"line":63,"column":42}},"12":{"start":{"line":65,"column":4},"end":{"line":65,"column":30}},"13":{"start":{"line":66,"column":4},"end":{"line":66,"column":51}}},"branchMap":{"1":{"line":21,"type":"if","locations":[{"start":{"line":21,"column":4},"end":{"line":21,"column":4}},{"start":{"line":21,"column":4},"end":{"line":21,"column":4}}]}}},"src/interfaces/IElasticToken.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IElasticToken.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/interfaces/IERC20.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IERC20.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/libraries/ElasticMath.sol":{"l":{"18":4,"42":4,"44":4,"47":4,"50":4,"53":4,"56":4,"59":4,"62":4,"65":4,"68":4,"76":12,"94":7,"107":4,"124":254,"134":550,"144":86},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/ElasticMath.sol","s":{"1":4,"2":4,"3":4,"4":4,"5":4,"6":4,"7":4,"8":4,"9":4,"10":4,"11":4,"12":12,"13":7,"14":4,"15":254,"16":550,"17":86},"b":{},"f":{"1":4,"2":4,"3":12,"4":7,"5":4,"6":254,"7":550,"8":86},"fnMap":{"1":{"name":"capitalDelta","line":13,"loc":{"start":{"line":13,"column":2},"end":{"line":19,"column":2}}},"2":{"name":"deltaE","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":69,"column":2}}},"3":{"name":"lambdaFromT","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":77,"column":2}}},"4":{"name":"mDash","line":89,"loc":{"start":{"line":89,"column":2},"end":{"line":95,"column":2}}},"5":{"name":"revamp","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":108,"column":2}}},"6":{"name":"t","line":119,"loc":{"start":{"line":119,"column":2},"end":{"line":125,"column":2}}},"7":{"name":"wmul","line":133,"loc":{"start":{"line":133,"column":2},"end":{"line":135,"column":2}}},"8":{"name":"wdiv","line":143,"loc":{"start":{"line":143,"column":2},"end":{"line":145,"column":2}}}},"statementMap":{"1":{"start":{"line":18,"column":4},"end":{"line":18,"column":53}},"2":{"start":{"line":42,"column":4},"end":{"line":42,"column":58}},"3":{"start":{"line":44,"column":4},"end":{"line":44,"column":42}},"4":{"start":{"line":47,"column":4},"end":{"line":47,"column":34}},"5":{"start":{"line":50,"column":4},"end":{"line":50,"column":31}},"6":{"start":{"line":53,"column":4},"end":{"line":53,"column":44}},"7":{"start":{"line":56,"column":4},"end":{"line":56,"column":26}},"8":{"start":{"line":59,"column":4},"end":{"line":59,"column":35}},"9":{"start":{"line":62,"column":4},"end":{"line":62,"column":34}},"10":{"start":{"line":65,"column":4},"end":{"line":65,"column":27}},"11":{"start":{"line":68,"column":4},"end":{"line":68,"column":22}},"12":{"start":{"line":76,"column":4},"end":{"line":76,"column":30}},"13":{"start":{"line":94,"column":4},"end":{"line":94,"column":44}},"14":{"start":{"line":107,"column":4},"end":{"line":107,"column":57}},"15":{"start":{"line":124,"column":4},"end":{"line":124,"column":35}},"16":{"start":{"line":134,"column":4},"end":{"line":134,"column":90}},"17":{"start":{"line":144,"column":4},"end":{"line":144,"column":72}}},"branchMap":{}},"src/libraries/SafeMath.sol":{"l":{"29":2548,"30":2548,"32":2548,"46":28,"64":28,"65":28,"67":28,"84":704,"85":0,"88":704,"89":704,"91":704,"107":0,"127":0,"128":0,"131":0,"147":0,"167":0,"168":0,"172":4,"173":0,"175":0,"177":0,"179":4,"180":4,"181":4,"189":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/SafeMath.sol","s":{"1":2548,"2":2548,"3":2548,"4":28,"5":28,"6":28,"7":28,"8":704,"9":0,"10":704,"11":704,"12":704,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":4,"21":0,"22":4,"23":0,"24":4,"25":0,"26":4,"27":4,"28":68,"29":4,"30":0},"b":{"1":[2548,0],"2":[28,0],"3":[0,704],"4":[704,0],"5":[0,0],"6":[0,0],"7":[0,4],"8":[0,4],"9":[0,4]},"f":{"1":2548,"2":28,"3":28,"4":704,"5":0,"6":0,"7":0,"8":0,"9":4,"10":0},"fnMap":{"1":{"name":"add","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":33,"column":2}}},"2":{"name":"sub","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":2}}},"3":{"name":"sub","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":68,"column":2}}},"4":{"name":"mul","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":92,"column":2}}},"5":{"name":"div","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":108,"column":2}}},"6":{"name":"div","line":122,"loc":{"start":{"line":122,"column":2},"end":{"line":132,"column":2}}},"7":{"name":"mod","line":146,"loc":{"start":{"line":146,"column":2},"end":{"line":148,"column":2}}},"8":{"name":"mod","line":162,"loc":{"start":{"line":162,"column":2},"end":{"line":169,"column":2}}},"9":{"name":"pow","line":171,"loc":{"start":{"line":171,"column":2},"end":{"line":183,"column":2}}},"10":{"name":"max","line":188,"loc":{"start":{"line":188,"column":2},"end":{"line":190,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":21}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":49}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":12}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":54}},"5":{"start":{"line":64,"column":4},"end":{"line":64,"column":32}},"6":{"start":{"line":65,"column":4},"end":{"line":65,"column":21}},"7":{"start":{"line":67,"column":4},"end":{"line":67,"column":12}},"8":{"start":{"line":84,"column":4},"end":{"line":84,"column":2356}},"9":{"start":{"line":85,"column":6},"end":{"line":85,"column":14}},"10":{"start":{"line":88,"column":4},"end":{"line":88,"column":21}},"11":{"start":{"line":89,"column":4},"end":{"line":89,"column":59}},"12":{"start":{"line":91,"column":4},"end":{"line":91,"column":12}},"13":{"start":{"line":107,"column":4},"end":{"line":107,"column":50}},"14":{"start":{"line":127,"column":4},"end":{"line":127,"column":31}},"15":{"start":{"line":128,"column":4},"end":{"line":128,"column":21}},"16":{"start":{"line":131,"column":4},"end":{"line":131,"column":12}},"17":{"start":{"line":147,"column":4},"end":{"line":147,"column":48}},"18":{"start":{"line":167,"column":4},"end":{"line":167,"column":32}},"19":{"start":{"line":168,"column":4},"end":{"line":168,"column":16}},"20":{"start":{"line":172,"column":4},"end":{"line":172,"column":5030}},"21":{"start":{"line":173,"column":6},"end":{"line":173,"column":14}},"22":{"start":{"line":174,"column":11},"end":{"line":174,"column":5078}},"23":{"start":{"line":175,"column":6},"end":{"line":175,"column":17}},"24":{"start":{"line":176,"column":11},"end":{"line":176,"column":5129}},"25":{"start":{"line":177,"column":6},"end":{"line":177,"column":14}},"26":{"start":{"line":179,"column":6},"end":{"line":179,"column":22}},"27":{"start":{"line":180,"column":6},"end":{"line":180,"column":71}},"28":{"start":{"line":180,"column":55},"end":{"line":180,"column":70}},"29":{"start":{"line":181,"column":6},"end":{"line":181,"column":14}},"30":{"start":{"line":189,"column":4},"end":{"line":189,"column":25}}},"branchMap":{"1":{"line":30,"type":"if","locations":[{"start":{"line":30,"column":4},"end":{"line":30,"column":4}},{"start":{"line":30,"column":4},"end":{"line":30,"column":4}}]},"2":{"line":64,"type":"if","locations":[{"start":{"line":64,"column":4},"end":{"line":64,"column":4}},{"start":{"line":64,"column":4},"end":{"line":64,"column":4}}]},"3":{"line":84,"type":"if","locations":[{"start":{"line":84,"column":4},"end":{"line":84,"column":4}},{"start":{"line":84,"column":4},"end":{"line":84,"column":4}}]},"4":{"line":89,"type":"if","locations":[{"start":{"line":89,"column":4},"end":{"line":89,"column":4}},{"start":{"line":89,"column":4},"end":{"line":89,"column":4}}]},"5":{"line":127,"type":"if","locations":[{"start":{"line":127,"column":4},"end":{"line":127,"column":4}},{"start":{"line":127,"column":4},"end":{"line":127,"column":4}}]},"6":{"line":167,"type":"if","locations":[{"start":{"line":167,"column":4},"end":{"line":167,"column":4}},{"start":{"line":167,"column":4},"end":{"line":167,"column":4}}]},"7":{"line":172,"type":"if","locations":[{"start":{"line":172,"column":4},"end":{"line":172,"column":4}},{"start":{"line":172,"column":4},"end":{"line":172,"column":4}}]},"8":{"line":174,"type":"if","locations":[{"start":{"line":174,"column":11},"end":{"line":174,"column":11}},{"start":{"line":174,"column":11},"end":{"line":174,"column":11}}]},"9":{"line":176,"type":"if","locations":[{"start":{"line":176,"column":11},"end":{"line":176,"column":11}},{"start":{"line":176,"column":11},"end":{"line":176,"column":11}}]}}},"src/models/Balance.sol":{"l":{"35":0,"36":0,"37":0,"38":0,"41":0,"42":0,"44":0,"51":0,"52":0,"53":0,"55":0,"64":0,"72":246,"74":246,"80":246,"85":246,"86":246,"87":246,"88":246,"89":246,"90":246,"91":246,"92":246},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Balance.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":246,"14":246,"15":246,"16":246,"17":246,"18":246,"19":246,"20":246,"21":246,"22":246,"23":246},"b":{"1":[246,0]},"f":{"1":0,"2":0,"3":246},"fnMap":{"1":{"name":"deserialize","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":56,"column":2}}},"2":{"name":"exists","line":58,"loc":{"start":{"line":58,"column":2},"end":{"line":65,"column":2}}},"3":{"name":"serialize","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":95,"column":2}}}},"statementMap":{"1":{"start":{"line":35,"column":4},"end":{"line":35,"column":36}},"2":{"start":{"line":36,"column":4},"end":{"line":36,"column":32}},"3":{"start":{"line":37,"column":4},"end":{"line":37,"column":38}},"4":{"start":{"line":38,"column":4},"end":{"line":38,"column":1214}},"5":{"start":{"line":41,"column":4},"end":{"line":41,"column":24}},"6":{"start":{"line":42,"column":4},"end":{"line":42,"column":36}},"7":{"start":{"line":44,"column":4},"end":{"line":44,"column":1419}},"8":{"start":{"line":51,"column":4},"end":{"line":51,"column":36}},"9":{"start":{"line":52,"column":4},"end":{"line":52,"column":34}},"10":{"start":{"line":53,"column":4},"end":{"line":53,"column":34}},"11":{"start":{"line":55,"column":4},"end":{"line":55,"column":17}},"12":{"start":{"line":64,"column":4},"end":{"line":64,"column":15}},"13":{"start":{"line":72,"column":4},"end":{"line":72,"column":71}},"14":{"start":{"line":74,"column":4},"end":{"line":74,"column":2167}},"15":{"start":{"line":80,"column":4},"end":{"line":80,"column":2333}},"16":{"start":{"line":85,"column":4},"end":{"line":85,"column":57}},"17":{"start":{"line":86,"column":4},"end":{"line":86,"column":54}},"18":{"start":{"line":87,"column":4},"end":{"line":87,"column":50}},"19":{"start":{"line":88,"column":4},"end":{"line":88,"column":34}},"20":{"start":{"line":89,"column":4},"end":{"line":89,"column":34}},"21":{"start":{"line":90,"column":4},"end":{"line":90,"column":50}},"22":{"start":{"line":91,"column":4},"end":{"line":91,"column":42}},"23":{"start":{"line":92,"column":4},"end":{"line":92,"column":2815}}},"branchMap":{"1":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":72,"column":4}},{"start":{"line":72,"column":4},"end":{"line":72,"column":4}}]}}},"src/models/BalanceMultipliers.sol":{"l":{"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"45":0,"53":246,"55":246,"59":246,"60":246},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/BalanceMultipliers.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":246,"10":246,"11":246,"12":246},"b":{"1":[246,0]},"f":{"1":0,"2":0,"3":246},"fnMap":{"1":{"name":"deserialize","line":26,"loc":{"start":{"line":26,"column":2},"end":{"line":38,"column":2}}},"2":{"name":"exists","line":40,"loc":{"start":{"line":40,"column":2},"end":{"line":46,"column":2}}},"3":{"name":"serialize","line":52,"loc":{"start":{"line":52,"column":2},"end":{"line":61,"column":2}}}},"statementMap":{"1":{"start":{"line":31,"column":4},"end":{"line":31,"column":36}},"2":{"start":{"line":32,"column":4},"end":{"line":32,"column":32}},"3":{"start":{"line":33,"column":4},"end":{"line":33,"column":32}},"4":{"start":{"line":34,"column":4},"end":{"line":34,"column":76}},"5":{"start":{"line":35,"column":4},"end":{"line":35,"column":76}},"6":{"start":{"line":36,"column":4},"end":{"line":36,"column":24}},"7":{"start":{"line":37,"column":4},"end":{"line":37,"column":17}},"8":{"start":{"line":45,"column":4},"end":{"line":45,"column":15}},"9":{"start":{"line":53,"column":4},"end":{"line":53,"column":90}},"10":{"start":{"line":55,"column":4},"end":{"line":55,"column":1650}},"11":{"start":{"line":59,"column":4},"end":{"line":59,"column":81}},"12":{"start":{"line":60,"column":4},"end":{"line":60,"column":81}}},"branchMap":{"1":{"line":53,"type":"if","locations":[{"start":{"line":53,"column":4},"end":{"line":53,"column":4}},{"start":{"line":53,"column":4},"end":{"line":53,"column":4}}]}}},"src/models/DAO.sol":{"l":{"32":439,"33":439,"35":439,"36":439,"37":439,"38":439,"41":439,"50":0,"54":162,"64":118,"72":135,"77":135,"78":135,"79":135,"81":135,"82":81,"83":243,"84":243,"88":135,"92":439},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/DAO.sol","s":{"1":439,"2":439,"3":439,"4":439,"5":439,"6":439,"7":439,"8":0,"9":162,"10":118,"11":135,"12":135,"13":135,"14":135,"15":135,"16":81,"17":243,"18":243,"19":135,"20":439},"b":{"1":[439,0],"2":[135,0],"3":[81,54]},"f":{"1":439,"2":0,"3":162,"4":118,"5":135,"6":439},"fnMap":{"1":{"name":"deserialize","line":27,"loc":{"start":{"line":27,"column":2},"end":{"line":42,"column":2}}},"2":{"name":"exists","line":49,"loc":{"start":{"line":49,"column":2},"end":{"line":51,"column":2}}},"3":{"name":"getSummoner","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":55,"column":2}}},"4":{"name":"isSummoner","line":63,"loc":{"start":{"line":63,"column":2},"end":{"line":65,"column":2}}},"5":{"name":"serialize","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":89,"column":2}}},"6":{"name":"_exists","line":91,"loc":{"start":{"line":91,"column":2},"end":{"line":93,"column":2}}}},"statementMap":{"1":{"start":{"line":32,"column":4},"end":{"line":32,"column":22}},"2":{"start":{"line":33,"column":4},"end":{"line":33,"column":32}},"3":{"start":{"line":35,"column":4},"end":{"line":35,"column":903}},"4":{"start":{"line":36,"column":6},"end":{"line":36,"column":66}},"5":{"start":{"line":37,"column":6},"end":{"line":37,"column":90}},"6":{"start":{"line":38,"column":6},"end":{"line":38,"column":72}},"7":{"start":{"line":41,"column":4},"end":{"line":41,"column":17}},"8":{"start":{"line":50,"column":4},"end":{"line":50,"column":25}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":76}},"10":{"start":{"line":64,"column":4},"end":{"line":64,"column":82}},"11":{"start":{"line":72,"column":4},"end":{"line":72,"column":2142}},"12":{"start":{"line":77,"column":4},"end":{"line":77,"column":69}},"13":{"start":{"line":78,"column":4},"end":{"line":78,"column":93}},"14":{"start":{"line":79,"column":4},"end":{"line":79,"column":75}},"15":{"start":{"line":81,"column":4},"end":{"line":81,"column":2530}},"16":{"start":{"line":82,"column":6},"end":{"line":82,"column":2597}},"17":{"start":{"line":83,"column":8},"end":{"line":83,"column":89}},"18":{"start":{"line":84,"column":8},"end":{"line":84,"column":90}},"19":{"start":{"line":88,"column":4},"end":{"line":88,"column":62}},"20":{"start":{"line":92,"column":4},"end":{"line":92,"column":58}}},"branchMap":{"1":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":35,"column":4}},{"start":{"line":35,"column":4},"end":{"line":35,"column":4}}]},"2":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":72,"column":4}},{"start":{"line":72,"column":4},"end":{"line":72,"column":4}}]},"3":{"line":81,"type":"if","locations":[{"start":{"line":81,"column":4},"end":{"line":81,"column":4}},{"start":{"line":81,"column":4},"end":{"line":81,"column":4}}]}}},"src/models/Ecosystem.sol":{"l":{"35":1564,"36":1564,"37":1564,"40":1564,"43":1564,"46":1564,"49":1564,"50":1564,"53":1564,"56":1564,"61":1564,"70":1,"78":156,"80":156,"87":156,"91":156,"95":156,"99":156,"100":156,"104":156,"108":156,"113":156,"117":1721},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Ecosystem.sol","s":{"1":1564,"2":1564,"3":1564,"4":1564,"5":1564,"6":1564,"7":1564,"8":1564,"9":1564,"10":1564,"11":1564,"12":1,"13":156,"14":156,"15":156,"16":156,"17":156,"18":156,"19":156,"20":156,"21":156,"22":156,"23":1721},"b":{"1":[1564,0],"2":[156,0]},"f":{"1":1564,"2":1,"3":156,"4":1721},"fnMap":{"1":{"name":"deserialize","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":62,"column":2}}},"2":{"name":"exists","line":69,"loc":{"start":{"line":69,"column":2},"end":{"line":71,"column":2}}},"3":{"name":"serialize","line":77,"loc":{"start":{"line":77,"column":2},"end":{"line":114,"column":2}}},"4":{"name":"_exists","line":116,"loc":{"start":{"line":116,"column":2},"end":{"line":118,"column":2}}}},"statementMap":{"1":{"start":{"line":35,"column":4},"end":{"line":35,"column":1142}},"2":{"start":{"line":36,"column":6},"end":{"line":36,"column":36}},"3":{"start":{"line":37,"column":6},"end":{"line":37,"column":1217}},"4":{"start":{"line":40,"column":6},"end":{"line":40,"column":1345}},"5":{"start":{"line":43,"column":6},"end":{"line":43,"column":1495}},"6":{"start":{"line":46,"column":6},"end":{"line":46,"column":1623}},"7":{"start":{"line":49,"column":6},"end":{"line":49,"column":49}},"8":{"start":{"line":50,"column":6},"end":{"line":50,"column":1795}},"9":{"start":{"line":53,"column":6},"end":{"line":53,"column":1929}},"10":{"start":{"line":56,"column":6},"end":{"line":56,"column":2065}},"11":{"start":{"line":61,"column":4},"end":{"line":61,"column":17}},"12":{"start":{"line":70,"column":4},"end":{"line":70,"column":31}},"13":{"start":{"line":78,"column":4},"end":{"line":78,"column":50}},"14":{"start":{"line":80,"column":4},"end":{"line":80,"column":2684}},"15":{"start":{"line":87,"column":4},"end":{"line":87,"column":2891}},"16":{"start":{"line":91,"column":4},"end":{"line":91,"column":3018}},"17":{"start":{"line":95,"column":4},"end":{"line":95,"column":3167}},"18":{"start":{"line":99,"column":4},"end":{"line":99,"column":98}},"19":{"start":{"line":100,"column":4},"end":{"line":100,"column":3395}},"20":{"start":{"line":104,"column":4},"end":{"line":104,"column":3528}},"21":{"start":{"line":108,"column":4},"end":{"line":108,"column":3663}},"22":{"start":{"line":113,"column":4},"end":{"line":113,"column":68}},"23":{"start":{"line":117,"column":4},"end":{"line":117,"column":64}}},"branchMap":{"1":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":35,"column":4}},{"start":{"line":35,"column":4},"end":{"line":35,"column":4}}]},"2":{"line":80,"type":"if","locations":[{"start":{"line":80,"column":4},"end":{"line":80,"column":4}},{"start":{"line":80,"column":4},"end":{"line":80,"column":4}}]}}},"src/models/EternalModel.sol":{"l":{"30":6415,"37":1825,"39":1825,"46":11110,"53":3808,"60":0,"67":0,"69":0,"81":4125,"89":753,"97":1335,"105":1224,"113":0,"121":0,"132":0,"139":0,"141":0,"148":0,"155":0,"162":0,"169":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/EternalModel.sol","s":{"1":6415,"2":1825,"3":1825,"4":11110,"5":3808,"6":0,"7":0,"8":0,"9":4125,"10":753,"11":1335,"12":1224,"13":0,"14":0,"15":0},"b":{"1":[1825,0],"2":[0,0],"3":[0,0]},"f":{"1":6415,"2":1825,"3":11110,"4":3808,"5":0,"6":0,"7":4125,"8":753,"9":1335,"10":1224,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0},"fnMap":{"1":{"name":"getUint","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":31,"column":2}}},"2":{"name":"getString","line":36,"loc":{"start":{"line":36,"column":2},"end":{"line":40,"column":2}}},"3":{"name":"getAddress","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":2}}},"4":{"name":"getBool","line":52,"loc":{"start":{"line":52,"column":2},"end":{"line":54,"column":2}}},"5":{"name":"getInt","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":61,"column":2}}},"6":{"name":"getBytes","line":66,"loc":{"start":{"line":66,"column":2},"end":{"line":70,"column":2}}},"7":{"name":"setUint","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":82,"column":2}}},"8":{"name":"setString","line":88,"loc":{"start":{"line":88,"column":2},"end":{"line":90,"column":2}}},"9":{"name":"setAddress","line":96,"loc":{"start":{"line":96,"column":2},"end":{"line":98,"column":2}}},"10":{"name":"setBool","line":104,"loc":{"start":{"line":104,"column":2},"end":{"line":106,"column":2}}},"11":{"name":"setInt","line":112,"loc":{"start":{"line":112,"column":2},"end":{"line":114,"column":2}}},"12":{"name":"setBytes","line":120,"loc":{"start":{"line":120,"column":2},"end":{"line":122,"column":2}}},"13":{"name":"deleteUint","line":131,"loc":{"start":{"line":131,"column":2},"end":{"line":133,"column":2}}},"14":{"name":"deleteString","line":138,"loc":{"start":{"line":138,"column":2},"end":{"line":142,"column":2}}},"15":{"name":"deleteAddress","line":147,"loc":{"start":{"line":147,"column":2},"end":{"line":149,"column":2}}},"16":{"name":"deleteBool","line":154,"loc":{"start":{"line":154,"column":2},"end":{"line":156,"column":2}}},"17":{"name":"deleteInt","line":161,"loc":{"start":{"line":161,"column":2},"end":{"line":163,"column":2}}},"18":{"name":"deleteBytes","line":168,"loc":{"start":{"line":168,"column":2},"end":{"line":170,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":30}},"2":{"start":{"line":37,"column":4},"end":{"line":37,"column":52}},"3":{"start":{"line":39,"column":4},"end":{"line":39,"column":32}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":33}},"5":{"start":{"line":53,"column":4},"end":{"line":53,"column":30}},"6":{"start":{"line":60,"column":4},"end":{"line":60,"column":29}},"7":{"start":{"line":67,"column":4},"end":{"line":67,"column":52}},"8":{"start":{"line":69,"column":4},"end":{"line":69,"column":31}},"9":{"start":{"line":81,"column":4},"end":{"line":81,"column":31}},"10":{"start":{"line":89,"column":4},"end":{"line":89,"column":33}},"11":{"start":{"line":97,"column":4},"end":{"line":97,"column":34}},"12":{"start":{"line":105,"column":4},"end":{"line":105,"column":31}},"13":{"start":{"line":113,"column":4},"end":{"line":113,"column":30}},"14":{"start":{"line":121,"column":4},"end":{"line":121,"column":32}},"15":{"start":{"line":139,"column":4},"end":{"line":139,"column":52}}},"branchMap":{"1":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":37,"column":4}},{"start":{"line":37,"column":4},"end":{"line":37,"column":4}}]},"2":{"line":67,"type":"if","locations":[{"start":{"line":67,"column":4},"end":{"line":67,"column":4}},{"start":{"line":67,"column":4},"end":{"line":67,"column":4}}]},"3":{"line":139,"type":"if","locations":[{"start":{"line":139,"column":4},"end":{"line":139,"column":4}},{"start":{"line":139,"column":4},"end":{"line":139,"column":4}}]}}},"src/models/Token.sol":{"l":{"42":697,"43":697,"45":697,"46":693,"47":693,"48":693,"49":693,"50":693,"51":693,"52":693,"53":693,"54":693,"55":693,"58":697,"62":61,"66":246,"68":246,"69":246,"77":309,"84":309,"85":309,"86":309,"87":309,"88":309,"89":309,"90":309,"91":309,"93":309,"99":168,"103":830},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Token.sol","s":{"1":697,"2":697,"3":697,"4":693,"5":693,"6":693,"7":693,"8":693,"9":693,"10":693,"11":693,"12":693,"13":693,"14":697,"15":61,"16":246,"17":246,"18":246,"19":309,"20":309,"21":309,"22":309,"23":309,"24":309,"25":309,"26":309,"27":309,"28":309,"29":168,"30":830},"b":{"1":[693,4],"2":[246,0],"3":[309,0]},"f":{"1":697,"2":61,"3":246,"4":309,"5":168,"6":830},"fnMap":{"1":{"name":"deserialize","line":37,"loc":{"start":{"line":37,"column":2},"end":{"line":59,"column":2}}},"2":{"name":"exists","line":61,"loc":{"start":{"line":61,"column":2},"end":{"line":63,"column":2}}},"3":{"name":"incrementCounter","line":65,"loc":{"start":{"line":65,"column":2},"end":{"line":70,"column":2}}},"4":{"name":"serialize","line":76,"loc":{"start":{"line":76,"column":2},"end":{"line":94,"column":2}}},"5":{"name":"updateNumberOfTokenHolders","line":96,"loc":{"start":{"line":96,"column":2},"end":{"line":100,"column":2}}},"6":{"name":"_exists","line":102,"loc":{"start":{"line":102,"column":2},"end":{"line":104,"column":2}}}},"statementMap":{"1":{"start":{"line":42,"column":4},"end":{"line":42,"column":22}},"2":{"start":{"line":43,"column":4},"end":{"line":43,"column":32}},"3":{"start":{"line":45,"column":4},"end":{"line":45,"column":1269}},"4":{"start":{"line":46,"column":6},"end":{"line":46,"column":70}},"5":{"start":{"line":47,"column":6},"end":{"line":47,"column":64}},"6":{"start":{"line":48,"column":6},"end":{"line":48,"column":76}},"7":{"start":{"line":49,"column":6},"end":{"line":49,"column":58}},"8":{"start":{"line":50,"column":6},"end":{"line":50,"column":68}},"9":{"start":{"line":51,"column":6},"end":{"line":51,"column":58}},"10":{"start":{"line":52,"column":6},"end":{"line":52,"column":90}},"11":{"start":{"line":53,"column":6},"end":{"line":53,"column":66}},"12":{"start":{"line":54,"column":6},"end":{"line":54,"column":96}},"13":{"start":{"line":55,"column":6},"end":{"line":55,"column":70}},"14":{"start":{"line":58,"column":4},"end":{"line":58,"column":17}},"15":{"start":{"line":62,"column":4},"end":{"line":62,"column":25}},"16":{"start":{"line":66,"column":4},"end":{"line":66,"column":65}},"17":{"start":{"line":68,"column":4},"end":{"line":68,"column":76}},"18":{"start":{"line":69,"column":4},"end":{"line":69,"column":83}},"19":{"start":{"line":77,"column":4},"end":{"line":77,"column":2629}},"20":{"start":{"line":84,"column":4},"end":{"line":84,"column":69}},"21":{"start":{"line":85,"column":4},"end":{"line":85,"column":73}},"22":{"start":{"line":86,"column":4},"end":{"line":86,"column":67}},"23":{"start":{"line":87,"column":4},"end":{"line":87,"column":79}},"24":{"start":{"line":88,"column":4},"end":{"line":88,"column":61}},"25":{"start":{"line":89,"column":4},"end":{"line":89,"column":71}},"26":{"start":{"line":90,"column":4},"end":{"line":90,"column":61}},"27":{"start":{"line":91,"column":4},"end":{"line":91,"column":93}},"28":{"start":{"line":93,"column":4},"end":{"line":93,"column":62}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":92}},"30":{"start":{"line":103,"column":4},"end":{"line":103,"column":58}}},"branchMap":{"1":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":45,"column":4}},{"start":{"line":45,"column":4},"end":{"line":45,"column":4}}]},"2":{"line":66,"type":"if","locations":[{"start":{"line":66,"column":4},"end":{"line":66,"column":4}},{"start":{"line":66,"column":4},"end":{"line":66,"column":4}}]},"3":{"line":77,"type":"if","locations":[{"start":{"line":77,"column":4},"end":{"line":77,"column":4}},{"start":{"line":77,"column":4},"end":{"line":77,"column":4}}]}}},"src/models/TokenHolder.sol":{"l":{"29":261,"30":261,"31":261,"33":261,"34":93,"35":93,"38":261,"46":0,"54":246,"56":246,"57":246,"59":246,"67":261},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/TokenHolder.sol","s":{"1":261,"2":261,"3":261,"4":261,"5":93,"6":93,"7":261,"8":0,"9":246,"10":246,"11":246,"12":246,"13":261},"b":{"1":[93,168],"2":[246,0]},"f":{"1":261,"2":0,"3":246,"4":261},"fnMap":{"1":{"name":"deserialize","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":39,"column":2}}},"2":{"name":"exists","line":41,"loc":{"start":{"line":41,"column":2},"end":{"line":47,"column":2}}},"3":{"name":"serialize","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":60,"column":2}}},"4":{"name":"_exists","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":68,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":28}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":32}},"3":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":1003}},"5":{"start":{"line":34,"column":6},"end":{"line":34,"column":98}},"6":{"start":{"line":35,"column":6},"end":{"line":35,"column":96}},"7":{"start":{"line":38,"column":4},"end":{"line":38,"column":17}},"8":{"start":{"line":46,"column":4},"end":{"line":46,"column":48}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":71}},"10":{"start":{"line":56,"column":4},"end":{"line":56,"column":95}},"11":{"start":{"line":57,"column":4},"end":{"line":57,"column":93}},"12":{"start":{"line":59,"column":4},"end":{"line":59,"column":84}},"13":{"start":{"line":67,"column":4},"end":{"line":67,"column":74}}},"branchMap":{"1":{"line":33,"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":33,"column":4}},{"start":{"line":33,"column":4},"end":{"line":33,"column":4}}]},"2":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":54,"column":4}},{"start":{"line":54,"column":4},"end":{"line":54,"column":4}}]}}},"src/services/Configurator.sol":{"l":{"30":81,"31":81,"32":81,"33":81,"34":81,"35":81,"36":81,"37":81,"38":81,"50":81,"52":81,"55":81,"56":81,"57":81,"58":81,"59":81,"60":81,"63":81,"65":81,"66":81,"91":72,"92":72,"93":72,"94":72,"95":72,"96":72,"97":72,"98":72,"99":72,"100":72,"101":72,"103":72,"104":72,"105":72,"107":72},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/services/Configurator.sol","s":{"1":81,"2":81,"3":81,"4":81,"5":81,"6":81,"7":81,"8":81,"9":81,"10":81,"11":81,"12":81,"13":81,"14":81,"15":81,"16":81,"17":81,"18":81,"19":81,"20":81,"21":72,"22":72,"23":72,"24":72,"25":72,"26":72,"27":72,"28":72,"29":72,"30":72,"31":72,"32":72,"33":72,"34":72,"35":72},"b":{},"f":{"1":81,"2":81,"3":72},"fnMap":{"1":{"name":"buildDAO","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":39,"column":2}}},"2":{"name":"buildEcosystem","line":46,"loc":{"start":{"line":46,"column":2},"end":{"line":67,"column":2}}},"3":{"name":"buildToken","line":82,"loc":{"start":{"line":82,"column":2},"end":{"line":108,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":52}},"2":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":29}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":19}},"5":{"start":{"line":34,"column":4},"end":{"line":34,"column":45}},"6":{"start":{"line":35,"column":4},"end":{"line":35,"column":23}},"7":{"start":{"line":36,"column":4},"end":{"line":36,"column":29}},"8":{"start":{"line":37,"column":4},"end":{"line":37,"column":28}},"9":{"start":{"line":38,"column":4},"end":{"line":38,"column":14}},"10":{"start":{"line":50,"column":4},"end":{"line":50,"column":74}},"11":{"start":{"line":52,"column":4},"end":{"line":52,"column":36}},"12":{"start":{"line":55,"column":4},"end":{"line":55,"column":63}},"13":{"start":{"line":56,"column":4},"end":{"line":56,"column":85}},"14":{"start":{"line":57,"column":4},"end":{"line":57,"column":55}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":67}},"16":{"start":{"line":59,"column":4},"end":{"line":59,"column":71}},"17":{"start":{"line":60,"column":4},"end":{"line":60,"column":59}},"18":{"start":{"line":63,"column":4},"end":{"line":63,"column":63}},"19":{"start":{"line":65,"column":4},"end":{"line":65,"column":40}},"20":{"start":{"line":66,"column":4},"end":{"line":66,"column":20}},"21":{"start":{"line":91,"column":4},"end":{"line":91,"column":60}},"22":{"start":{"line":92,"column":4},"end":{"line":92,"column":21}},"23":{"start":{"line":93,"column":4},"end":{"line":93,"column":31}},"24":{"start":{"line":94,"column":4},"end":{"line":94,"column":33}},"25":{"start":{"line":95,"column":4},"end":{"line":95,"column":15}},"26":{"start":{"line":96,"column":4},"end":{"line":96,"column":19}},"27":{"start":{"line":97,"column":4},"end":{"line":97,"column":32}},"28":{"start":{"line":98,"column":4},"end":{"line":98,"column":47}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":21}},"30":{"start":{"line":100,"column":4},"end":{"line":100,"column":25}},"31":{"start":{"line":101,"column":4},"end":{"line":101,"column":97}},"32":{"start":{"line":103,"column":4},"end":{"line":103,"column":49}},"33":{"start":{"line":104,"column":4},"end":{"line":104,"column":68}},"34":{"start":{"line":105,"column":4},"end":{"line":105,"column":32}},"35":{"start":{"line":107,"column":4},"end":{"line":107,"column":16}}},"branchMap":{}},"src/tokens/ElasticGovernanceToken.sol":{"l":{"29":144,"30":144,"34":6,"35":6,"39":228,"40":228,"44":72,"45":72,"46":72,"47":72,"60":3,"79":6,"80":6,"89":13,"90":13,"91":13,"93":13,"102":1,"103":1,"107":1,"108":1,"109":1,"110":1,"112":1,"113":1,"115":0,"131":3,"132":3,"147":3,"148":3,"156":1,"166":3,"168":3,"170":3,"171":3,"181":6,"182":6,"192":3,"194":3,"209":225,"210":225,"218":1,"222":1,"226":72,"230":72,"239":1,"252":6,"253":6,"257":1,"258":1,"270":3,"271":3,"289":3,"291":3,"293":3,"294":3,"296":3,"299":3,"309":15,"310":15,"312":15,"314":15,"322":0,"323":0,"324":0,"325":0,"327":0,"331":3,"332":3,"333":3,"337":6,"338":6,"339":6,"340":6,"341":6,"343":6,"345":6,"346":6,"348":6,"349":6,"350":6,"354":3,"355":3,"356":3,"360":228,"361":228,"362":228,"363":228,"364":228,"366":228,"368":228,"370":228,"371":228,"373":228,"374":228,"375":228,"377":228,"385":6,"386":6,"387":6,"389":6,"390":6,"391":6,"392":6,"394":6,"395":6,"397":6,"398":6,"400":6,"401":6,"402":6,"403":6,"404":6,"406":6,"415":246,"416":246,"417":246,"418":246,"419":246,"420":246,"421":246,"422":246,"423":246,"424":246,"425":246,"427":246,"428":234,"430":12,"433":246,"435":246,"436":246,"438":246,"447":246,"448":168,"451":246,"452":0,"459":777,"463":261,"464":261,"473":30,"474":30},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/tokens/ElasticGovernanceToken.sol","s":{"1":144,"2":6,"3":228,"4":72,"5":72,"6":72,"7":72,"8":3,"9":6,"10":6,"11":13,"12":13,"13":13,"14":13,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":0,"24":3,"25":3,"26":3,"27":3,"28":1,"29":3,"30":3,"31":3,"32":3,"33":6,"34":6,"35":3,"36":3,"37":225,"38":225,"39":1,"40":1,"41":72,"42":72,"43":1,"44":6,"45":6,"46":1,"47":1,"48":3,"49":3,"50":3,"51":3,"52":3,"53":3,"54":3,"55":3,"56":15,"57":15,"58":15,"59":15,"60":0,"61":0,"62":0,"63":0,"64":0,"65":3,"66":3,"67":3,"68":6,"69":6,"70":6,"71":6,"72":6,"73":6,"74":6,"75":6,"76":6,"77":6,"78":6,"79":3,"80":3,"81":3,"82":228,"83":228,"84":228,"85":228,"86":228,"87":228,"88":228,"89":228,"90":228,"91":228,"92":228,"93":228,"94":228,"95":6,"96":6,"97":6,"98":6,"99":6,"100":6,"101":6,"102":6,"103":6,"104":6,"105":6,"106":6,"107":6,"108":6,"109":6,"110":6,"111":6,"112":246,"113":246,"114":246,"115":246,"116":246,"117":246,"118":246,"119":246,"120":246,"121":246,"122":246,"123":246,"124":234,"125":12,"126":246,"127":246,"128":246,"129":246,"130":246,"131":168,"132":246,"133":0,"134":777,"135":261,"136":261,"137":30,"138":30},"b":{"1":[144,0],"2":[6,0],"3":[228,0],"4":[1,0],"5":[3,0],"6":[3,0],"7":[3,0],"8":[15,0],"9":[15,0],"10":[234,12],"11":[168,78],"12":[0,246]},"f":{"1":144,"2":6,"3":228,"4":72,"5":3,"6":6,"7":13,"8":1,"9":1,"10":3,"11":3,"12":1,"13":3,"14":6,"15":3,"16":225,"17":1,"18":1,"19":72,"20":72,"21":1,"22":6,"23":1,"24":3,"25":3,"26":15,"27":0,"28":3,"29":6,"30":3,"31":228,"32":6,"33":246,"34":246,"35":777,"36":261,"37":30},"fnMap":{"1":{"name":"onlyDAO","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":31,"column":2}}},"2":{"name":"onlyDAOorBurner","line":33,"loc":{"start":{"line":33,"column":2},"end":{"line":36,"column":2}}},"3":{"name":"onlyDAOorMinter","line":38,"loc":{"start":{"line":38,"column":2},"end":{"line":41,"column":2}}},"4":{"name":"constructor","line":43,"loc":{"start":{"line":43,"column":2},"end":{"line":48,"column":2}}},"5":{"name":"allowance","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":61,"column":2}}},"6":{"name":"approve","line":78,"loc":{"start":{"line":78,"column":2},"end":{"line":81,"column":2}}},"7":{"name":"balanceOf","line":88,"loc":{"start":{"line":88,"column":2},"end":{"line":94,"column":2}}},"8":{"name":"balanceOfInShares","line":101,"loc":{"start":{"line":101,"column":2},"end":{"line":104,"column":2}}},"9":{"name":"balanceOfVoting","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":117,"column":2}}},"10":{"name":"burn","line":128,"loc":{"start":{"line":125,"column":2},"end":{"line":133,"column":2}}},"11":{"name":"burnShares","line":144,"loc":{"start":{"line":141,"column":2},"end":{"line":149,"column":2}}},"12":{"name":"decimals","line":155,"loc":{"start":{"line":155,"column":2},"end":{"line":157,"column":2}}},"13":{"name":"decreaseAllowance","line":165,"loc":{"start":{"line":165,"column":2},"end":{"line":172,"column":2}}},"14":{"name":"increaseAllowance","line":180,"loc":{"start":{"line":180,"column":2},"end":{"line":183,"column":2}}},"15":{"name":"mint","line":191,"loc":{"start":{"line":191,"column":2},"end":{"line":195,"column":2}}},"16":{"name":"mintShares","line":206,"loc":{"start":{"line":203,"column":2},"end":{"line":211,"column":2}}},"17":{"name":"name","line":217,"loc":{"start":{"line":217,"column":2},"end":{"line":219,"column":2}}},"18":{"name":"numberOfTokenHolders","line":221,"loc":{"start":{"line":221,"column":2},"end":{"line":223,"column":2}}},"19":{"name":"setBurner","line":225,"loc":{"start":{"line":225,"column":2},"end":{"line":227,"column":2}}},"20":{"name":"setMinter","line":229,"loc":{"start":{"line":229,"column":2},"end":{"line":231,"column":2}}},"21":{"name":"symbol","line":238,"loc":{"start":{"line":238,"column":2},"end":{"line":240,"column":2}}},"22":{"name":"totalSupply","line":251,"loc":{"start":{"line":251,"column":2},"end":{"line":254,"column":2}}},"23":{"name":"totalSupplyInShares","line":256,"loc":{"start":{"line":256,"column":2},"end":{"line":259,"column":2}}},"24":{"name":"transfer","line":269,"loc":{"start":{"line":269,"column":2},"end":{"line":272,"column":2}}},"25":{"name":"transferFrom","line":284,"loc":{"start":{"line":284,"column":2},"end":{"line":300,"column":2}}},"26":{"name":"_approve","line":304,"loc":{"start":{"line":304,"column":2},"end":{"line":315,"column":2}}},"27":{"name":"_balanceAt","line":317,"loc":{"start":{"line":317,"column":2},"end":{"line":328,"column":2}}},"28":{"name":"_burn","line":330,"loc":{"start":{"line":330,"column":2},"end":{"line":334,"column":2}}},"29":{"name":"_burnShares","line":336,"loc":{"start":{"line":336,"column":2},"end":{"line":351,"column":2}}},"30":{"name":"_mint","line":353,"loc":{"start":{"line":353,"column":2},"end":{"line":357,"column":2}}},"31":{"name":"_mintShares","line":359,"loc":{"start":{"line":359,"column":2},"end":{"line":378,"column":2}}},"32":{"name":"_transfer","line":380,"loc":{"start":{"line":380,"column":2},"end":{"line":407,"column":2}}},"33":{"name":"_updateBalance","line":409,"loc":{"start":{"line":409,"column":2},"end":{"line":439,"column":2}}},"34":{"name":"_updateNumberOfTokenHolders","line":441,"loc":{"start":{"line":441,"column":2},"end":{"line":454,"column":2}}},"35":{"name":"_getEcosystem","line":458,"loc":{"start":{"line":458,"column":2},"end":{"line":460,"column":2}}},"36":{"name":"_getTokenHolder","line":462,"loc":{"start":{"line":462,"column":2},"end":{"line":470,"column":2}}},"37":{"name":"_getToken","line":472,"loc":{"start":{"line":472,"column":2},"end":{"line":475,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":90}},"2":{"start":{"line":34,"column":4},"end":{"line":34,"column":90}},"3":{"start":{"line":39,"column":4},"end":{"line":39,"column":90}},"4":{"start":{"line":44,"column":4},"end":{"line":44,"column":23}},"5":{"start":{"line":45,"column":4},"end":{"line":45,"column":27}},"6":{"start":{"line":46,"column":4},"end":{"line":46,"column":49}},"7":{"start":{"line":47,"column":4},"end":{"line":47,"column":23}},"8":{"start":{"line":60,"column":4},"end":{"line":60,"column":40}},"9":{"start":{"line":79,"column":4},"end":{"line":79,"column":42}},"10":{"start":{"line":80,"column":4},"end":{"line":80,"column":15}},"11":{"start":{"line":89,"column":4},"end":{"line":89,"column":45}},"12":{"start":{"line":90,"column":4},"end":{"line":90,"column":71}},"13":{"start":{"line":91,"column":4},"end":{"line":91,"column":67}},"14":{"start":{"line":93,"column":4},"end":{"line":93,"column":12}},"15":{"start":{"line":102,"column":4},"end":{"line":102,"column":71}},"16":{"start":{"line":103,"column":4},"end":{"line":103,"column":29}},"17":{"start":{"line":107,"column":4},"end":{"line":107,"column":45}},"18":{"start":{"line":108,"column":4},"end":{"line":108,"column":71}},"19":{"start":{"line":109,"column":4},"end":{"line":109,"column":59}},"20":{"start":{"line":110,"column":4},"end":{"line":110,"column":58}},"21":{"start":{"line":112,"column":4},"end":{"line":112,"column":3845}},"22":{"start":{"line":113,"column":6},"end":{"line":113,"column":61}},"23":{"start":{"line":115,"column":6},"end":{"line":115,"column":64}},"24":{"start":{"line":131,"column":4},"end":{"line":131,"column":27}},"25":{"start":{"line":132,"column":4},"end":{"line":132,"column":15}},"26":{"start":{"line":147,"column":4},"end":{"line":147,"column":33}},"27":{"start":{"line":148,"column":4},"end":{"line":148,"column":15}},"28":{"start":{"line":156,"column":4},"end":{"line":156,"column":13}},"29":{"start":{"line":166,"column":4},"end":{"line":166,"column":92}},"30":{"start":{"line":168,"column":4},"end":{"line":168,"column":74}},"31":{"start":{"line":170,"column":4},"end":{"line":170,"column":47}},"32":{"start":{"line":171,"column":4},"end":{"line":171,"column":15}},"33":{"start":{"line":181,"column":4},"end":{"line":181,"column":95}},"34":{"start":{"line":182,"column":4},"end":{"line":182,"column":15}},"35":{"start":{"line":192,"column":4},"end":{"line":192,"column":27}},"36":{"start":{"line":194,"column":4},"end":{"line":194,"column":15}},"37":{"start":{"line":209,"column":4},"end":{"line":209,"column":33}},"38":{"start":{"line":210,"column":4},"end":{"line":210,"column":15}},"39":{"start":{"line":218,"column":4},"end":{"line":218,"column":27}},"40":{"start":{"line":222,"column":4},"end":{"line":222,"column":43}},"41":{"start":{"line":226,"column":4},"end":{"line":226,"column":19}},"42":{"start":{"line":230,"column":4},"end":{"line":230,"column":19}},"43":{"start":{"line":239,"column":4},"end":{"line":239,"column":29}},"44":{"start":{"line":252,"column":4},"end":{"line":252,"column":45}},"45":{"start":{"line":253,"column":4},"end":{"line":253,"column":56}},"46":{"start":{"line":257,"column":4},"end":{"line":257,"column":45}},"47":{"start":{"line":258,"column":4},"end":{"line":258,"column":23}},"48":{"start":{"line":270,"column":4},"end":{"line":270,"column":38}},"49":{"start":{"line":271,"column":4},"end":{"line":271,"column":15}},"50":{"start":{"line":289,"column":4},"end":{"line":289,"column":97}},"51":{"start":{"line":291,"column":4},"end":{"line":291,"column":33}},"52":{"start":{"line":293,"column":4},"end":{"line":293,"column":9096}},"53":{"start":{"line":294,"column":6},"end":{"line":294,"column":91}},"54":{"start":{"line":296,"column":6},"end":{"line":296,"column":68}},"55":{"start":{"line":299,"column":4},"end":{"line":299,"column":15}},"56":{"start":{"line":309,"column":4},"end":{"line":309,"column":72}},"57":{"start":{"line":310,"column":4},"end":{"line":310,"column":72}},"58":{"start":{"line":312,"column":4},"end":{"line":312,"column":42}},"59":{"start":{"line":314,"column":4},"end":{"line":314,"column":44}},"60":{"start":{"line":322,"column":4},"end":{"line":322,"column":45}},"61":{"start":{"line":323,"column":4},"end":{"line":323,"column":71}},"62":{"start":{"line":324,"column":4},"end":{"line":324,"column":57}},"63":{"start":{"line":325,"column":4},"end":{"line":325,"column":67}},"64":{"start":{"line":327,"column":4},"end":{"line":327,"column":82}},"65":{"start":{"line":331,"column":4},"end":{"line":331,"column":45}},"66":{"start":{"line":332,"column":4},"end":{"line":332,"column":76}},"67":{"start":{"line":333,"column":4},"end":{"line":333,"column":37}},"68":{"start":{"line":337,"column":4},"end":{"line":337,"column":57}},"69":{"start":{"line":338,"column":4},"end":{"line":338,"column":59}},"70":{"start":{"line":339,"column":4},"end":{"line":339,"column":84}},"71":{"start":{"line":340,"column":4},"end":{"line":340,"column":71}},"72":{"start":{"line":341,"column":4},"end":{"line":341,"column":52}},"73":{"start":{"line":343,"column":4},"end":{"line":343,"column":72}},"74":{"start":{"line":345,"column":4},"end":{"line":345,"column":58}},"75":{"start":{"line":346,"column":4},"end":{"line":346,"column":32}},"76":{"start":{"line":348,"column":4},"end":{"line":348,"column":83}},"77":{"start":{"line":349,"column":4},"end":{"line":349,"column":44}},"78":{"start":{"line":350,"column":4},"end":{"line":350,"column":84}},"79":{"start":{"line":354,"column":4},"end":{"line":354,"column":45}},"80":{"start":{"line":355,"column":4},"end":{"line":355,"column":76}},"81":{"start":{"line":356,"column":4},"end":{"line":356,"column":37}},"82":{"start":{"line":360,"column":4},"end":{"line":360,"column":57}},"83":{"start":{"line":361,"column":4},"end":{"line":361,"column":59}},"84":{"start":{"line":362,"column":4},"end":{"line":362,"column":84}},"85":{"start":{"line":363,"column":4},"end":{"line":363,"column":71}},"86":{"start":{"line":364,"column":4},"end":{"line":364,"column":52}},"87":{"start":{"line":366,"column":4},"end":{"line":366,"column":66}},"88":{"start":{"line":368,"column":4},"end":{"line":368,"column":71}},"89":{"start":{"line":370,"column":4},"end":{"line":370,"column":58}},"90":{"start":{"line":371,"column":4},"end":{"line":371,"column":32}},"91":{"start":{"line":373,"column":4},"end":{"line":373,"column":83}},"92":{"start":{"line":374,"column":4},"end":{"line":374,"column":44}},"93":{"start":{"line":375,"column":4},"end":{"line":375,"column":84}},"94":{"start":{"line":377,"column":4},"end":{"line":377,"column":47}},"95":{"start":{"line":385,"column":4},"end":{"line":385,"column":57}},"96":{"start":{"line":386,"column":4},"end":{"line":386,"column":59}},"97":{"start":{"line":387,"column":4},"end":{"line":387,"column":84}},"98":{"start":{"line":389,"column":4},"end":{"line":389,"column":72}},"99":{"start":{"line":390,"column":4},"end":{"line":390,"column":68}},"100":{"start":{"line":391,"column":4},"end":{"line":391,"column":60}},"101":{"start":{"line":392,"column":4},"end":{"line":392,"column":56}},"102":{"start":{"line":394,"column":4},"end":{"line":394,"column":76}},"103":{"start":{"line":395,"column":4},"end":{"line":395,"column":65}},"104":{"start":{"line":397,"column":4},"end":{"line":397,"column":79}},"105":{"start":{"line":398,"column":4},"end":{"line":398,"column":74}},"106":{"start":{"line":400,"column":4},"end":{"line":400,"column":83}},"107":{"start":{"line":401,"column":4},"end":{"line":401,"column":48}},"108":{"start":{"line":402,"column":4},"end":{"line":402,"column":46}},"109":{"start":{"line":403,"column":4},"end":{"line":403,"column":92}},"110":{"start":{"line":404,"column":4},"end":{"line":404,"column":88}},"111":{"start":{"line":406,"column":4},"end":{"line":406,"column":37}},"112":{"start":{"line":415,"column":4},"end":{"line":415,"column":57}},"113":{"start":{"line":416,"column":4},"end":{"line":416,"column":35}},"114":{"start":{"line":417,"column":4},"end":{"line":417,"column":37}},"115":{"start":{"line":418,"column":4},"end":{"line":418,"column":32}},"116":{"start":{"line":419,"column":4},"end":{"line":419,"column":39}},"117":{"start":{"line":420,"column":4},"end":{"line":420,"column":23}},"118":{"start":{"line":421,"column":4},"end":{"line":421,"column":23}},"119":{"start":{"line":422,"column":4},"end":{"line":422,"column":25}},"120":{"start":{"line":423,"column":4},"end":{"line":423,"column":37}},"121":{"start":{"line":424,"column":4},"end":{"line":424,"column":51}},"122":{"start":{"line":425,"column":4},"end":{"line":425,"column":63}},"123":{"start":{"line":427,"column":4},"end":{"line":427,"column":14338}},"124":{"start":{"line":428,"column":6},"end":{"line":428,"column":74}},"125":{"start":{"line":430,"column":6},"end":{"line":430,"column":74}},"126":{"start":{"line":433,"column":4},"end":{"line":433,"column":39}},"127":{"start":{"line":435,"column":4},"end":{"line":435,"column":60}},"128":{"start":{"line":436,"column":4},"end":{"line":436,"column":62}},"129":{"start":{"line":438,"column":4},"end":{"line":438,"column":23}},"130":{"start":{"line":447,"column":4},"end":{"line":447,"column":14924}},"131":{"start":{"line":448,"column":6},"end":{"line":448,"column":96}},"132":{"start":{"line":451,"column":4},"end":{"line":451,"column":15095}},"133":{"start":{"line":452,"column":6},"end":{"line":452,"column":96}},"134":{"start":{"line":459,"column":4},"end":{"line":459,"column":67}},"135":{"start":{"line":463,"column":4},"end":{"line":463,"column":57}},"136":{"start":{"line":464,"column":4},"end":{"line":464,"column":15598}},"137":{"start":{"line":473,"column":4},"end":{"line":473,"column":57}},"138":{"start":{"line":474,"column":4},"end":{"line":474,"column":83}}},"branchMap":{"1":{"line":29,"type":"if","locations":[{"start":{"line":29,"column":4},"end":{"line":29,"column":4}},{"start":{"line":29,"column":4},"end":{"line":29,"column":4}}]},"2":{"line":34,"type":"if","locations":[{"start":{"line":34,"column":4},"end":{"line":34,"column":4}},{"start":{"line":34,"column":4},"end":{"line":34,"column":4}}]},"3":{"line":39,"type":"if","locations":[{"start":{"line":39,"column":4},"end":{"line":39,"column":4}},{"start":{"line":39,"column":4},"end":{"line":39,"column":4}}]},"4":{"line":112,"type":"if","locations":[{"start":{"line":112,"column":4},"end":{"line":112,"column":4}},{"start":{"line":112,"column":4},"end":{"line":112,"column":4}}]},"5":{"line":168,"type":"if","locations":[{"start":{"line":168,"column":4},"end":{"line":168,"column":4}},{"start":{"line":168,"column":4},"end":{"line":168,"column":4}}]},"6":{"line":289,"type":"if","locations":[{"start":{"line":289,"column":4},"end":{"line":289,"column":4}},{"start":{"line":289,"column":4},"end":{"line":289,"column":4}}]},"7":{"line":293,"type":"if","locations":[{"start":{"line":293,"column":4},"end":{"line":293,"column":4}},{"start":{"line":293,"column":4},"end":{"line":293,"column":4}}]},"8":{"line":309,"type":"if","locations":[{"start":{"line":309,"column":4},"end":{"line":309,"column":4}},{"start":{"line":309,"column":4},"end":{"line":309,"column":4}}]},"9":{"line":310,"type":"if","locations":[{"start":{"line":310,"column":4},"end":{"line":310,"column":4}},{"start":{"line":310,"column":4},"end":{"line":310,"column":4}}]},"10":{"line":427,"type":"if","locations":[{"start":{"line":427,"column":4},"end":{"line":427,"column":4}},{"start":{"line":427,"column":4},"end":{"line":427,"column":4}}]},"11":{"line":447,"type":"if","locations":[{"start":{"line":447,"column":4},"end":{"line":447,"column":4}},{"start":{"line":447,"column":4},"end":{"line":447,"column":4}}]},"12":{"line":451,"type":"if","locations":[{"start":{"line":451,"column":4},"end":{"line":451,"column":4}},{"start":{"line":451,"column":4},"end":{"line":451,"column":4}}]}}}} \ No newline at end of file diff --git a/test/0_init.js b/test/0_init.js index 6b37642..aa0536f 100644 --- a/test/0_init.js +++ b/test/0_init.js @@ -1,8 +1,8 @@ -const { deployments } = require('hardhat'); - -describe('0_init_contracts_for_testing', () => { - // this is required to make solidity-coverage work - it('Should await fixtures to enable coverage tests', async () => { - await deployments.fixture(); - }); -}); +const { deployments } = require('hardhat'); + +describe('0_init_contracts_for_testing', () => { + // this is required to make solidity-coverage work + it('Should await fixtures to enable coverage tests', async () => { + await deployments.fixture(); + }); +}); diff --git a/test/elasticGovernanceTokenTest.js b/test/elasticGovernanceTokenTest.js new file mode 100644 index 0000000..9c34af9 --- /dev/null +++ b/test/elasticGovernanceTokenTest.js @@ -0,0 +1,120 @@ +const { expect } = require('chai'); +// const { ethers } = require('ethers'); + +const { signers, summonedDAO } = require('./helpers'); + +describe('ElasticDAO: Elastic Governance Token', () => { + let dao; + + beforeEach(async () => { + dao = await summonedDAO(); + }); + + it('Should approve 1 EGT and check the allowance', async () => { + const { summoner1, summoner2 } = await signers(); + await dao.elasticGovernanceToken.approve(summoner2.address, 1); + + const allowance = await dao.elasticGovernanceToken.allowance( + summoner1.address, + summoner2.address, + ); + + expect(allowance.toFixed()).to.equal('1'); + }); + it('Should get balance of votable shares for user', async () => { + const { summoner1 } = await signers(); + const balanceOfVoting = await dao.elasticGovernanceToken.balanceOfVoting(summoner1.address); + expect(balanceOfVoting.toFixed()).to.equal('100'); + }); + it('Should get token decimals', async () => { + const decimals = await dao.elasticGovernanceToken.decimals(); + + expect(decimals).to.equal('18'); + }); + it('Should increase allowance', async () => { + const { summoner1, summoner2 } = await signers(); + await dao.elasticGovernanceToken.increaseAllowance(summoner2.address, '1000000000000000000'); + + const allowance = await dao.elasticGovernanceToken.allowance( + summoner1.address, + summoner2.address, + ); + + expect(allowance.toFixed()).to.equal('1'); + }); + it('Should decrease allowance', async () => { + const { summoner1, summoner2 } = await signers(); + await dao.elasticGovernanceToken.increaseAllowance(summoner2.address, '2000000000000000000'); + await dao.elasticGovernanceToken.decreaseAllowance(summoner2.address, '1000000000000000000'); + + const allowance = await dao.elasticGovernanceToken.allowance( + summoner1.address, + summoner2.address, + ); + + expect(allowance.toFixed()).to.equal('1'); + }); + it('Should mint tokens', async () => { + const { agent, summoner1 } = await signers(); + dao.sdk.changeSigner(agent); + + await dao.elasticGovernanceToken.mint(summoner1.address, 1); + const balance = await dao.elasticGovernanceToken.balanceOf(summoner1.address); + expect(balance.toFixed()).to.equal('1011'); + }); + it('Should burn tokens', async () => { + const { agent, summoner1 } = await signers(); + + dao.sdk.changeSigner(agent); + + await dao.elasticGovernanceToken.burn(summoner1.address, 1); + const balance = await dao.elasticGovernanceToken.balanceOf(summoner1.address); + + expect(balance.toFixed()).to.equal('1009'); + }); + it('Should get token name', async () => { + const name = await dao.elasticGovernanceToken.name(); + + expect(name).to.equal('Elastic Governance Token'); + }); + it('Should get token symbol', async () => { + const name = await dao.elasticGovernanceToken.symbol(); + + expect(name).to.equal('EGT'); + }); + it('Should get number of token holders', async () => { + const numberOfTokenHolders = await dao.elasticGovernanceToken.numberOfTokenHolders(); + + expect(numberOfTokenHolders).to.equal('3'); + }); + it('Should get total supply in shares', async () => { + const totalSupplyInShares = await dao.elasticGovernanceToken.totalSupplyInShares(); + + expect(totalSupplyInShares.toFixed()).to.equal('10.3'); + }); + it('should transfer tokens a to b', async () => { + const { summoner2 } = await signers(); + + let balance = await dao.elasticGovernanceToken.balanceOf(summoner2.address); + expect(balance.toFixed()).to.equal('10'); + + await dao.elasticGovernanceToken.transfer(summoner2.address, 1); + + balance = await dao.elasticGovernanceToken.balanceOf(summoner2.address); + expect(balance.toFixed()).to.equal('11'); + }); + + it('should transfer tokens on behalf of a to b', async () => { + const { summoner2, summoner1, agent } = await signers(); + + let balance = await dao.elasticGovernanceToken.balanceOf(summoner2.address); + expect(balance.toFixed()).to.equal('10'); + + await dao.elasticGovernanceToken.approve(agent.address, 1); + dao.sdk.changeSigner(agent); + await dao.elasticGovernanceToken.transferFrom(summoner1.address, summoner2.address, 1); + + balance = await dao.elasticGovernanceToken.balanceOf(summoner2.address); + expect(balance.toFixed()).to.equal('11'); + }); +}); diff --git a/test/exitDaoTest.js b/test/exitDaoTest.js index afa792a..9381134 100644 --- a/test/exitDaoTest.js +++ b/test/exitDaoTest.js @@ -1,8 +1,8 @@ const { expect } = require('chai'); const { signers, summonedDAO } = require('./helpers'); -describe('ElasticDAO: exit', () => { - it('should allow to exit with 1 share and corresponding eth', async () => { +describe('ElasticDAO: Exit', () => { + it('Should allow to exit with 1 share and corresponding eth', async () => { const dao = await summonedDAO(); const { summoner1 } = await signers(); From 5a8f3320f38c05f2145cf9d0c5d7845c5fc0cc44 Mon Sep 17 00:00:00 2001 From: alleycatdev Date: Mon, 1 Feb 2021 16:27:42 -0500 Subject: [PATCH 016/118] removes unused functions and adds more tests --- coverage.json | 2 +- src/tokens/ElasticGovernanceToken.sol | 13 ------------- test/elasticGovernanceTokenTest.js | 8 +++++++- 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/coverage.json b/coverage.json index ef75fc0..59e7142 100644 --- a/coverage.json +++ b/coverage.json @@ -1 +1 @@ -{"src/core/ElasticDAO.sol":{"l":{"24":7,"25":7,"26":7,"29":61,"30":61,"32":61,"33":60,"36":192,"37":192,"38":191,"41":0,"42":0,"45":73,"46":72,"49":118,"50":118,"51":118,"52":118,"54":118,"55":116,"58":4,"59":4,"69":81,"70":81,"71":81,"72":81,"73":81,"74":81,"76":81,"77":81,"78":81,"83":3,"84":3,"85":3,"88":3,"89":3,"91":3,"102":72,"103":72,"105":72,"116":72,"117":72,"118":72,"120":72,"124":4,"126":4,"131":4,"132":4,"141":4,"151":4,"154":3,"155":3,"158":3,"159":3,"160":3,"161":3,"164":3,"168":0,"169":0,"170":0,"171":0,"175":0,"187":60,"189":60,"190":60,"191":60,"195":55,"197":54,"198":54,"199":54,"200":54,"202":54,"204":54,"205":162,"207":54,"208":54,"214":0,"218":0,"224":199,"225":199,"229":635,"233":67,"234":67},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAO.sol","s":{"1":7,"2":7,"3":61,"4":61,"5":61,"6":192,"7":192,"8":0,"9":73,"10":118,"11":118,"12":118,"13":118,"14":118,"15":4,"16":81,"17":81,"18":81,"19":81,"20":81,"21":81,"22":81,"23":81,"24":81,"25":3,"26":3,"27":3,"28":3,"29":3,"30":3,"31":72,"32":72,"33":72,"34":72,"35":72,"36":72,"37":72,"38":4,"39":4,"40":4,"41":4,"42":4,"43":4,"44":3,"45":3,"46":3,"47":3,"48":3,"49":3,"50":3,"51":0,"52":0,"53":0,"54":0,"55":0,"56":60,"57":60,"58":60,"59":60,"60":55,"61":54,"62":54,"63":54,"64":54,"65":54,"66":54,"67":162,"68":54,"69":54,"70":0,"71":0,"72":199,"73":199,"74":635,"75":67,"76":67},"b":{"1":[7,0],"2":[60,1],"3":[191,1],"4":[0,0],"5":[72,1],"6":[116,2],"7":[4,0],"8":[72,0],"9":[4,0],"10":[3,1],"11":[54,1]},"f":{"1":7,"2":61,"3":192,"4":0,"5":73,"6":118,"7":4,"8":81,"9":3,"10":72,"11":4,"12":0,"13":0,"14":60,"15":55,"16":0,"17":0,"18":199,"19":635,"20":67,"21":0},"fnMap":{"1":{"name":"onlyAfterSummoning","line":23,"loc":{"start":{"line":23,"column":2},"end":{"line":27,"column":2}}},"2":{"name":"onlyAfterTokenInitialized","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":34,"column":2}}},"3":{"name":"onlyBeforeSummoning","line":35,"loc":{"start":{"line":35,"column":2},"end":{"line":39,"column":2}}},"4":{"name":"onlyController","line":40,"loc":{"start":{"line":40,"column":2},"end":{"line":43,"column":2}}},"5":{"name":"onlyDeployer","line":44,"loc":{"start":{"line":44,"column":2},"end":{"line":47,"column":2}}},"6":{"name":"onlySummoners","line":48,"loc":{"start":{"line":48,"column":2},"end":{"line":56,"column":2}}},"7":{"name":"onlyWhenOpen","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":60,"column":2}}},"8":{"name":"constructor","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":79,"column":2}}},"9":{"name":"exit","line":81,"loc":{"start":{"line":81,"column":2},"end":{"line":92,"column":2}}},"10":{"name":"initializeToken","line":101,"loc":{"start":{"line":94,"column":2},"end":{"line":121,"column":2}}},"11":{"name":"join","line":123,"loc":{"start":{"line":123,"column":2},"end":{"line":165,"column":2}}},"12":{"name":"setController","line":167,"loc":{"start":{"line":167,"column":2},"end":{"line":172,"column":2}}},"13":{"name":"setMaxVotingLambda","line":174,"loc":{"start":{"line":174,"column":2},"end":{"line":176,"column":2}}},"14":{"name":"seedSummoning","line":185,"loc":{"start":{"line":180,"column":2},"end":{"line":192,"column":2}}},"15":{"name":"summon","line":194,"loc":{"start":{"line":194,"column":2},"end":{"line":209,"column":2}}},"16":{"name":"getDAO","line":213,"loc":{"start":{"line":213,"column":2},"end":{"line":215,"column":2}}},"17":{"name":"getEcosystem","line":217,"loc":{"start":{"line":217,"column":2},"end":{"line":219,"column":2}}},"18":{"name":"_getDAO","line":223,"loc":{"start":{"line":223,"column":2},"end":{"line":226,"column":2}}},"19":{"name":"_getEcosystem","line":228,"loc":{"start":{"line":228,"column":2},"end":{"line":230,"column":2}}},"20":{"name":"_getToken","line":232,"loc":{"start":{"line":232,"column":2},"end":{"line":236,"column":2}}},"21":{"name":null,"line":240,"loc":{"start":{"line":240,"column":2},"end":{"line":240,"column":31}}}},"statementMap":{"1":{"start":{"line":24,"column":4},"end":{"line":24,"column":39}},"2":{"start":{"line":25,"column":4},"end":{"line":25,"column":60}},"3":{"start":{"line":29,"column":4},"end":{"line":29,"column":57}},"4":{"start":{"line":30,"column":4},"end":{"line":30,"column":913}},"5":{"start":{"line":32,"column":4},"end":{"line":32,"column":77}},"6":{"start":{"line":36,"column":4},"end":{"line":36,"column":39}},"7":{"start":{"line":37,"column":4},"end":{"line":37,"column":73}},"8":{"start":{"line":41,"column":4},"end":{"line":41,"column":67}},"9":{"start":{"line":45,"column":4},"end":{"line":45,"column":63}},"10":{"start":{"line":49,"column":4},"end":{"line":49,"column":57}},"11":{"start":{"line":50,"column":4},"end":{"line":50,"column":52}},"12":{"start":{"line":51,"column":4},"end":{"line":51,"column":79}},"13":{"start":{"line":52,"column":4},"end":{"line":52,"column":64}},"14":{"start":{"line":54,"column":4},"end":{"line":54,"column":55}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":71}},"16":{"start":{"line":69,"column":4},"end":{"line":69,"column":49}},"17":{"start":{"line":70,"column":4},"end":{"line":70,"column":27}},"18":{"start":{"line":71,"column":4},"end":{"line":71,"column":24}},"19":{"start":{"line":72,"column":4},"end":{"line":72,"column":98}},"20":{"start":{"line":73,"column":4},"end":{"line":73,"column":40}},"21":{"start":{"line":74,"column":4},"end":{"line":74,"column":25}},"22":{"start":{"line":76,"column":4},"end":{"line":76,"column":74}},"23":{"start":{"line":77,"column":4},"end":{"line":77,"column":79}},"24":{"start":{"line":78,"column":4},"end":{"line":78,"column":74}},"25":{"start":{"line":83,"column":4},"end":{"line":83,"column":45}},"26":{"start":{"line":84,"column":4},"end":{"line":84,"column":77}},"27":{"start":{"line":85,"column":4},"end":{"line":85,"column":53}},"28":{"start":{"line":88,"column":4},"end":{"line":88,"column":72}},"29":{"start":{"line":89,"column":4},"end":{"line":89,"column":86}},"30":{"start":{"line":91,"column":4},"end":{"line":91,"column":41}},"31":{"start":{"line":102,"column":4},"end":{"line":102,"column":88}},"32":{"start":{"line":103,"column":4},"end":{"line":103,"column":57}},"33":{"start":{"line":105,"column":4},"end":{"line":105,"column":3533}},"34":{"start":{"line":116,"column":4},"end":{"line":116,"column":77}},"35":{"start":{"line":117,"column":4},"end":{"line":117,"column":38}},"36":{"start":{"line":118,"column":4},"end":{"line":118,"column":38}},"37":{"start":{"line":120,"column":4},"end":{"line":120,"column":51}},"38":{"start":{"line":124,"column":4},"end":{"line":124,"column":45}},"39":{"start":{"line":126,"column":4},"end":{"line":126,"column":4117}},"40":{"start":{"line":131,"column":4},"end":{"line":131,"column":77}},"41":{"start":{"line":132,"column":4},"end":{"line":132,"column":4328}},"42":{"start":{"line":141,"column":4},"end":{"line":141,"column":4774}},"43":{"start":{"line":151,"column":4},"end":{"line":151,"column":67}},"44":{"start":{"line":154,"column":4},"end":{"line":154,"column":65}},"45":{"start":{"line":155,"column":4},"end":{"line":155,"column":72}},"46":{"start":{"line":158,"column":4},"end":{"line":158,"column":57}},"47":{"start":{"line":159,"column":4},"end":{"line":159,"column":59}},"48":{"start":{"line":160,"column":4},"end":{"line":160,"column":18}},"49":{"start":{"line":161,"column":4},"end":{"line":161,"column":32}},"50":{"start":{"line":164,"column":4},"end":{"line":164,"column":53}},"51":{"start":{"line":168,"column":4},"end":{"line":168,"column":27}},"52":{"start":{"line":169,"column":4},"end":{"line":169,"column":83}},"53":{"start":{"line":170,"column":4},"end":{"line":170,"column":38}},"54":{"start":{"line":171,"column":4},"end":{"line":171,"column":38}},"55":{"start":{"line":175,"column":4},"end":{"line":175,"column":37}},"56":{"start":{"line":187,"column":4},"end":{"line":187,"column":45}},"57":{"start":{"line":189,"column":4},"end":{"line":189,"column":30}},"58":{"start":{"line":190,"column":4},"end":{"line":190,"column":62}},"59":{"start":{"line":191,"column":4},"end":{"line":191,"column":73}},"60":{"start":{"line":195,"column":4},"end":{"line":195,"column":98}},"61":{"start":{"line":197,"column":4},"end":{"line":197,"column":57}},"62":{"start":{"line":198,"column":4},"end":{"line":198,"column":52}},"63":{"start":{"line":199,"column":4},"end":{"line":199,"column":79}},"64":{"start":{"line":200,"column":4},"end":{"line":200,"column":6717}},"65":{"start":{"line":202,"column":4},"end":{"line":202,"column":77}},"66":{"start":{"line":204,"column":4},"end":{"line":204,"column":6837}},"67":{"start":{"line":205,"column":6},"end":{"line":205,"column":76}},"68":{"start":{"line":207,"column":4},"end":{"line":207,"column":22}},"69":{"start":{"line":208,"column":4},"end":{"line":208,"column":29}},"70":{"start":{"line":214,"column":4},"end":{"line":214,"column":20}},"71":{"start":{"line":218,"column":4},"end":{"line":218,"column":26}},"72":{"start":{"line":224,"column":4},"end":{"line":224,"column":57}},"73":{"start":{"line":225,"column":4},"end":{"line":225,"column":79}},"74":{"start":{"line":229,"column":4},"end":{"line":229,"column":70}},"75":{"start":{"line":233,"column":4},"end":{"line":233,"column":57}},"76":{"start":{"line":234,"column":4},"end":{"line":234,"column":7880}}},"branchMap":{"1":{"line":25,"type":"if","locations":[{"start":{"line":25,"column":4},"end":{"line":25,"column":4}},{"start":{"line":25,"column":4},"end":{"line":25,"column":4}}]},"2":{"line":32,"type":"if","locations":[{"start":{"line":32,"column":4},"end":{"line":32,"column":4}},{"start":{"line":32,"column":4},"end":{"line":32,"column":4}}]},"3":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":37,"column":4}},{"start":{"line":37,"column":4},"end":{"line":37,"column":4}}]},"4":{"line":41,"type":"if","locations":[{"start":{"line":41,"column":4},"end":{"line":41,"column":4}},{"start":{"line":41,"column":4},"end":{"line":41,"column":4}}]},"5":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":45,"column":4}},{"start":{"line":45,"column":4},"end":{"line":45,"column":4}}]},"6":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":54,"column":4}},{"start":{"line":54,"column":4},"end":{"line":54,"column":4}}]},"7":{"line":58,"type":"if","locations":[{"start":{"line":58,"column":4},"end":{"line":58,"column":4}},{"start":{"line":58,"column":4},"end":{"line":58,"column":4}}]},"8":{"line":102,"type":"if","locations":[{"start":{"line":102,"column":4},"end":{"line":102,"column":4}},{"start":{"line":102,"column":4},"end":{"line":102,"column":4}}]},"9":{"line":126,"type":"if","locations":[{"start":{"line":126,"column":4},"end":{"line":126,"column":4}},{"start":{"line":126,"column":4},"end":{"line":126,"column":4}}]},"10":{"line":151,"type":"if","locations":[{"start":{"line":151,"column":4},"end":{"line":151,"column":4}},{"start":{"line":151,"column":4},"end":{"line":151,"column":4}}]},"11":{"line":195,"type":"if","locations":[{"start":{"line":195,"column":4},"end":{"line":195,"column":4}},{"start":{"line":195,"column":4},"end":{"line":195,"column":4}}]}}},"src/core/ElasticDAOFactory.sol":{"l":{"21":0,"22":0,"26":3,"27":3,"46":54,"50":54,"52":54,"53":54,"54":54,"58":0,"59":0,"63":0,"65":0,"66":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAOFactory.sol","s":{"1":0,"2":3,"3":3,"4":54,"5":54,"6":54,"7":54,"8":54,"9":0,"10":0,"11":0,"12":0,"13":0},"b":{"1":[0,0]},"f":{"1":0,"2":3,"3":54,"4":0,"5":0,"6":0},"fnMap":{"1":{"name":"onlyDeployer","line":20,"loc":{"start":{"line":20,"column":2},"end":{"line":23,"column":2}}},"2":{"name":"constructor","line":25,"loc":{"start":{"line":25,"column":2},"end":{"line":28,"column":2}}},"3":{"name":"deployDAOAndToken","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":55,"column":2}}},"4":{"name":"updateFeeAddress","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":60,"column":2}}},"5":{"name":"collectFees","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":67,"column":2}}},"6":{"name":null,"line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":71,"column":31}}}},"statementMap":{"1":{"start":{"line":21,"column":4},"end":{"line":21,"column":63}},"2":{"start":{"line":26,"column":4},"end":{"line":26,"column":24}},"3":{"start":{"line":27,"column":4},"end":{"line":27,"column":49}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":1354}},"5":{"start":{"line":50,"column":4},"end":{"line":50,"column":96}},"6":{"start":{"line":52,"column":4},"end":{"line":52,"column":49}},"7":{"start":{"line":53,"column":4},"end":{"line":53,"column":55}},"8":{"start":{"line":54,"column":4},"end":{"line":54,"column":41}},"9":{"start":{"line":58,"column":4},"end":{"line":58,"column":37}},"10":{"start":{"line":59,"column":4},"end":{"line":59,"column":40}},"11":{"start":{"line":63,"column":4},"end":{"line":63,"column":42}},"12":{"start":{"line":65,"column":4},"end":{"line":65,"column":30}},"13":{"start":{"line":66,"column":4},"end":{"line":66,"column":51}}},"branchMap":{"1":{"line":21,"type":"if","locations":[{"start":{"line":21,"column":4},"end":{"line":21,"column":4}},{"start":{"line":21,"column":4},"end":{"line":21,"column":4}}]}}},"src/interfaces/IElasticToken.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IElasticToken.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/interfaces/IERC20.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IERC20.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/libraries/ElasticMath.sol":{"l":{"18":4,"42":4,"44":4,"47":4,"50":4,"53":4,"56":4,"59":4,"62":4,"65":4,"68":4,"76":12,"94":7,"107":4,"124":254,"134":550,"144":86},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/ElasticMath.sol","s":{"1":4,"2":4,"3":4,"4":4,"5":4,"6":4,"7":4,"8":4,"9":4,"10":4,"11":4,"12":12,"13":7,"14":4,"15":254,"16":550,"17":86},"b":{},"f":{"1":4,"2":4,"3":12,"4":7,"5":4,"6":254,"7":550,"8":86},"fnMap":{"1":{"name":"capitalDelta","line":13,"loc":{"start":{"line":13,"column":2},"end":{"line":19,"column":2}}},"2":{"name":"deltaE","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":69,"column":2}}},"3":{"name":"lambdaFromT","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":77,"column":2}}},"4":{"name":"mDash","line":89,"loc":{"start":{"line":89,"column":2},"end":{"line":95,"column":2}}},"5":{"name":"revamp","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":108,"column":2}}},"6":{"name":"t","line":119,"loc":{"start":{"line":119,"column":2},"end":{"line":125,"column":2}}},"7":{"name":"wmul","line":133,"loc":{"start":{"line":133,"column":2},"end":{"line":135,"column":2}}},"8":{"name":"wdiv","line":143,"loc":{"start":{"line":143,"column":2},"end":{"line":145,"column":2}}}},"statementMap":{"1":{"start":{"line":18,"column":4},"end":{"line":18,"column":53}},"2":{"start":{"line":42,"column":4},"end":{"line":42,"column":58}},"3":{"start":{"line":44,"column":4},"end":{"line":44,"column":42}},"4":{"start":{"line":47,"column":4},"end":{"line":47,"column":34}},"5":{"start":{"line":50,"column":4},"end":{"line":50,"column":31}},"6":{"start":{"line":53,"column":4},"end":{"line":53,"column":44}},"7":{"start":{"line":56,"column":4},"end":{"line":56,"column":26}},"8":{"start":{"line":59,"column":4},"end":{"line":59,"column":35}},"9":{"start":{"line":62,"column":4},"end":{"line":62,"column":34}},"10":{"start":{"line":65,"column":4},"end":{"line":65,"column":27}},"11":{"start":{"line":68,"column":4},"end":{"line":68,"column":22}},"12":{"start":{"line":76,"column":4},"end":{"line":76,"column":30}},"13":{"start":{"line":94,"column":4},"end":{"line":94,"column":44}},"14":{"start":{"line":107,"column":4},"end":{"line":107,"column":57}},"15":{"start":{"line":124,"column":4},"end":{"line":124,"column":35}},"16":{"start":{"line":134,"column":4},"end":{"line":134,"column":90}},"17":{"start":{"line":144,"column":4},"end":{"line":144,"column":72}}},"branchMap":{}},"src/libraries/SafeMath.sol":{"l":{"29":2548,"30":2548,"32":2548,"46":28,"64":28,"65":28,"67":28,"84":704,"85":0,"88":704,"89":704,"91":704,"107":0,"127":0,"128":0,"131":0,"147":0,"167":0,"168":0,"172":4,"173":0,"175":0,"177":0,"179":4,"180":4,"181":4,"189":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/SafeMath.sol","s":{"1":2548,"2":2548,"3":2548,"4":28,"5":28,"6":28,"7":28,"8":704,"9":0,"10":704,"11":704,"12":704,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":4,"21":0,"22":4,"23":0,"24":4,"25":0,"26":4,"27":4,"28":68,"29":4,"30":0},"b":{"1":[2548,0],"2":[28,0],"3":[0,704],"4":[704,0],"5":[0,0],"6":[0,0],"7":[0,4],"8":[0,4],"9":[0,4]},"f":{"1":2548,"2":28,"3":28,"4":704,"5":0,"6":0,"7":0,"8":0,"9":4,"10":0},"fnMap":{"1":{"name":"add","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":33,"column":2}}},"2":{"name":"sub","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":2}}},"3":{"name":"sub","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":68,"column":2}}},"4":{"name":"mul","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":92,"column":2}}},"5":{"name":"div","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":108,"column":2}}},"6":{"name":"div","line":122,"loc":{"start":{"line":122,"column":2},"end":{"line":132,"column":2}}},"7":{"name":"mod","line":146,"loc":{"start":{"line":146,"column":2},"end":{"line":148,"column":2}}},"8":{"name":"mod","line":162,"loc":{"start":{"line":162,"column":2},"end":{"line":169,"column":2}}},"9":{"name":"pow","line":171,"loc":{"start":{"line":171,"column":2},"end":{"line":183,"column":2}}},"10":{"name":"max","line":188,"loc":{"start":{"line":188,"column":2},"end":{"line":190,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":21}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":49}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":12}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":54}},"5":{"start":{"line":64,"column":4},"end":{"line":64,"column":32}},"6":{"start":{"line":65,"column":4},"end":{"line":65,"column":21}},"7":{"start":{"line":67,"column":4},"end":{"line":67,"column":12}},"8":{"start":{"line":84,"column":4},"end":{"line":84,"column":2356}},"9":{"start":{"line":85,"column":6},"end":{"line":85,"column":14}},"10":{"start":{"line":88,"column":4},"end":{"line":88,"column":21}},"11":{"start":{"line":89,"column":4},"end":{"line":89,"column":59}},"12":{"start":{"line":91,"column":4},"end":{"line":91,"column":12}},"13":{"start":{"line":107,"column":4},"end":{"line":107,"column":50}},"14":{"start":{"line":127,"column":4},"end":{"line":127,"column":31}},"15":{"start":{"line":128,"column":4},"end":{"line":128,"column":21}},"16":{"start":{"line":131,"column":4},"end":{"line":131,"column":12}},"17":{"start":{"line":147,"column":4},"end":{"line":147,"column":48}},"18":{"start":{"line":167,"column":4},"end":{"line":167,"column":32}},"19":{"start":{"line":168,"column":4},"end":{"line":168,"column":16}},"20":{"start":{"line":172,"column":4},"end":{"line":172,"column":5030}},"21":{"start":{"line":173,"column":6},"end":{"line":173,"column":14}},"22":{"start":{"line":174,"column":11},"end":{"line":174,"column":5078}},"23":{"start":{"line":175,"column":6},"end":{"line":175,"column":17}},"24":{"start":{"line":176,"column":11},"end":{"line":176,"column":5129}},"25":{"start":{"line":177,"column":6},"end":{"line":177,"column":14}},"26":{"start":{"line":179,"column":6},"end":{"line":179,"column":22}},"27":{"start":{"line":180,"column":6},"end":{"line":180,"column":71}},"28":{"start":{"line":180,"column":55},"end":{"line":180,"column":70}},"29":{"start":{"line":181,"column":6},"end":{"line":181,"column":14}},"30":{"start":{"line":189,"column":4},"end":{"line":189,"column":25}}},"branchMap":{"1":{"line":30,"type":"if","locations":[{"start":{"line":30,"column":4},"end":{"line":30,"column":4}},{"start":{"line":30,"column":4},"end":{"line":30,"column":4}}]},"2":{"line":64,"type":"if","locations":[{"start":{"line":64,"column":4},"end":{"line":64,"column":4}},{"start":{"line":64,"column":4},"end":{"line":64,"column":4}}]},"3":{"line":84,"type":"if","locations":[{"start":{"line":84,"column":4},"end":{"line":84,"column":4}},{"start":{"line":84,"column":4},"end":{"line":84,"column":4}}]},"4":{"line":89,"type":"if","locations":[{"start":{"line":89,"column":4},"end":{"line":89,"column":4}},{"start":{"line":89,"column":4},"end":{"line":89,"column":4}}]},"5":{"line":127,"type":"if","locations":[{"start":{"line":127,"column":4},"end":{"line":127,"column":4}},{"start":{"line":127,"column":4},"end":{"line":127,"column":4}}]},"6":{"line":167,"type":"if","locations":[{"start":{"line":167,"column":4},"end":{"line":167,"column":4}},{"start":{"line":167,"column":4},"end":{"line":167,"column":4}}]},"7":{"line":172,"type":"if","locations":[{"start":{"line":172,"column":4},"end":{"line":172,"column":4}},{"start":{"line":172,"column":4},"end":{"line":172,"column":4}}]},"8":{"line":174,"type":"if","locations":[{"start":{"line":174,"column":11},"end":{"line":174,"column":11}},{"start":{"line":174,"column":11},"end":{"line":174,"column":11}}]},"9":{"line":176,"type":"if","locations":[{"start":{"line":176,"column":11},"end":{"line":176,"column":11}},{"start":{"line":176,"column":11},"end":{"line":176,"column":11}}]}}},"src/models/Balance.sol":{"l":{"35":0,"36":0,"37":0,"38":0,"41":0,"42":0,"44":0,"51":0,"52":0,"53":0,"55":0,"64":0,"72":246,"74":246,"80":246,"85":246,"86":246,"87":246,"88":246,"89":246,"90":246,"91":246,"92":246},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Balance.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":246,"14":246,"15":246,"16":246,"17":246,"18":246,"19":246,"20":246,"21":246,"22":246,"23":246},"b":{"1":[246,0]},"f":{"1":0,"2":0,"3":246},"fnMap":{"1":{"name":"deserialize","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":56,"column":2}}},"2":{"name":"exists","line":58,"loc":{"start":{"line":58,"column":2},"end":{"line":65,"column":2}}},"3":{"name":"serialize","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":95,"column":2}}}},"statementMap":{"1":{"start":{"line":35,"column":4},"end":{"line":35,"column":36}},"2":{"start":{"line":36,"column":4},"end":{"line":36,"column":32}},"3":{"start":{"line":37,"column":4},"end":{"line":37,"column":38}},"4":{"start":{"line":38,"column":4},"end":{"line":38,"column":1214}},"5":{"start":{"line":41,"column":4},"end":{"line":41,"column":24}},"6":{"start":{"line":42,"column":4},"end":{"line":42,"column":36}},"7":{"start":{"line":44,"column":4},"end":{"line":44,"column":1419}},"8":{"start":{"line":51,"column":4},"end":{"line":51,"column":36}},"9":{"start":{"line":52,"column":4},"end":{"line":52,"column":34}},"10":{"start":{"line":53,"column":4},"end":{"line":53,"column":34}},"11":{"start":{"line":55,"column":4},"end":{"line":55,"column":17}},"12":{"start":{"line":64,"column":4},"end":{"line":64,"column":15}},"13":{"start":{"line":72,"column":4},"end":{"line":72,"column":71}},"14":{"start":{"line":74,"column":4},"end":{"line":74,"column":2167}},"15":{"start":{"line":80,"column":4},"end":{"line":80,"column":2333}},"16":{"start":{"line":85,"column":4},"end":{"line":85,"column":57}},"17":{"start":{"line":86,"column":4},"end":{"line":86,"column":54}},"18":{"start":{"line":87,"column":4},"end":{"line":87,"column":50}},"19":{"start":{"line":88,"column":4},"end":{"line":88,"column":34}},"20":{"start":{"line":89,"column":4},"end":{"line":89,"column":34}},"21":{"start":{"line":90,"column":4},"end":{"line":90,"column":50}},"22":{"start":{"line":91,"column":4},"end":{"line":91,"column":42}},"23":{"start":{"line":92,"column":4},"end":{"line":92,"column":2815}}},"branchMap":{"1":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":72,"column":4}},{"start":{"line":72,"column":4},"end":{"line":72,"column":4}}]}}},"src/models/BalanceMultipliers.sol":{"l":{"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"45":0,"53":246,"55":246,"59":246,"60":246},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/BalanceMultipliers.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":246,"10":246,"11":246,"12":246},"b":{"1":[246,0]},"f":{"1":0,"2":0,"3":246},"fnMap":{"1":{"name":"deserialize","line":26,"loc":{"start":{"line":26,"column":2},"end":{"line":38,"column":2}}},"2":{"name":"exists","line":40,"loc":{"start":{"line":40,"column":2},"end":{"line":46,"column":2}}},"3":{"name":"serialize","line":52,"loc":{"start":{"line":52,"column":2},"end":{"line":61,"column":2}}}},"statementMap":{"1":{"start":{"line":31,"column":4},"end":{"line":31,"column":36}},"2":{"start":{"line":32,"column":4},"end":{"line":32,"column":32}},"3":{"start":{"line":33,"column":4},"end":{"line":33,"column":32}},"4":{"start":{"line":34,"column":4},"end":{"line":34,"column":76}},"5":{"start":{"line":35,"column":4},"end":{"line":35,"column":76}},"6":{"start":{"line":36,"column":4},"end":{"line":36,"column":24}},"7":{"start":{"line":37,"column":4},"end":{"line":37,"column":17}},"8":{"start":{"line":45,"column":4},"end":{"line":45,"column":15}},"9":{"start":{"line":53,"column":4},"end":{"line":53,"column":90}},"10":{"start":{"line":55,"column":4},"end":{"line":55,"column":1650}},"11":{"start":{"line":59,"column":4},"end":{"line":59,"column":81}},"12":{"start":{"line":60,"column":4},"end":{"line":60,"column":81}}},"branchMap":{"1":{"line":53,"type":"if","locations":[{"start":{"line":53,"column":4},"end":{"line":53,"column":4}},{"start":{"line":53,"column":4},"end":{"line":53,"column":4}}]}}},"src/models/DAO.sol":{"l":{"32":439,"33":439,"35":439,"36":439,"37":439,"38":439,"41":439,"50":0,"54":162,"64":118,"72":135,"77":135,"78":135,"79":135,"81":135,"82":81,"83":243,"84":243,"88":135,"92":439},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/DAO.sol","s":{"1":439,"2":439,"3":439,"4":439,"5":439,"6":439,"7":439,"8":0,"9":162,"10":118,"11":135,"12":135,"13":135,"14":135,"15":135,"16":81,"17":243,"18":243,"19":135,"20":439},"b":{"1":[439,0],"2":[135,0],"3":[81,54]},"f":{"1":439,"2":0,"3":162,"4":118,"5":135,"6":439},"fnMap":{"1":{"name":"deserialize","line":27,"loc":{"start":{"line":27,"column":2},"end":{"line":42,"column":2}}},"2":{"name":"exists","line":49,"loc":{"start":{"line":49,"column":2},"end":{"line":51,"column":2}}},"3":{"name":"getSummoner","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":55,"column":2}}},"4":{"name":"isSummoner","line":63,"loc":{"start":{"line":63,"column":2},"end":{"line":65,"column":2}}},"5":{"name":"serialize","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":89,"column":2}}},"6":{"name":"_exists","line":91,"loc":{"start":{"line":91,"column":2},"end":{"line":93,"column":2}}}},"statementMap":{"1":{"start":{"line":32,"column":4},"end":{"line":32,"column":22}},"2":{"start":{"line":33,"column":4},"end":{"line":33,"column":32}},"3":{"start":{"line":35,"column":4},"end":{"line":35,"column":903}},"4":{"start":{"line":36,"column":6},"end":{"line":36,"column":66}},"5":{"start":{"line":37,"column":6},"end":{"line":37,"column":90}},"6":{"start":{"line":38,"column":6},"end":{"line":38,"column":72}},"7":{"start":{"line":41,"column":4},"end":{"line":41,"column":17}},"8":{"start":{"line":50,"column":4},"end":{"line":50,"column":25}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":76}},"10":{"start":{"line":64,"column":4},"end":{"line":64,"column":82}},"11":{"start":{"line":72,"column":4},"end":{"line":72,"column":2142}},"12":{"start":{"line":77,"column":4},"end":{"line":77,"column":69}},"13":{"start":{"line":78,"column":4},"end":{"line":78,"column":93}},"14":{"start":{"line":79,"column":4},"end":{"line":79,"column":75}},"15":{"start":{"line":81,"column":4},"end":{"line":81,"column":2530}},"16":{"start":{"line":82,"column":6},"end":{"line":82,"column":2597}},"17":{"start":{"line":83,"column":8},"end":{"line":83,"column":89}},"18":{"start":{"line":84,"column":8},"end":{"line":84,"column":90}},"19":{"start":{"line":88,"column":4},"end":{"line":88,"column":62}},"20":{"start":{"line":92,"column":4},"end":{"line":92,"column":58}}},"branchMap":{"1":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":35,"column":4}},{"start":{"line":35,"column":4},"end":{"line":35,"column":4}}]},"2":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":72,"column":4}},{"start":{"line":72,"column":4},"end":{"line":72,"column":4}}]},"3":{"line":81,"type":"if","locations":[{"start":{"line":81,"column":4},"end":{"line":81,"column":4}},{"start":{"line":81,"column":4},"end":{"line":81,"column":4}}]}}},"src/models/Ecosystem.sol":{"l":{"35":1564,"36":1564,"37":1564,"40":1564,"43":1564,"46":1564,"49":1564,"50":1564,"53":1564,"56":1564,"61":1564,"70":1,"78":156,"80":156,"87":156,"91":156,"95":156,"99":156,"100":156,"104":156,"108":156,"113":156,"117":1721},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Ecosystem.sol","s":{"1":1564,"2":1564,"3":1564,"4":1564,"5":1564,"6":1564,"7":1564,"8":1564,"9":1564,"10":1564,"11":1564,"12":1,"13":156,"14":156,"15":156,"16":156,"17":156,"18":156,"19":156,"20":156,"21":156,"22":156,"23":1721},"b":{"1":[1564,0],"2":[156,0]},"f":{"1":1564,"2":1,"3":156,"4":1721},"fnMap":{"1":{"name":"deserialize","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":62,"column":2}}},"2":{"name":"exists","line":69,"loc":{"start":{"line":69,"column":2},"end":{"line":71,"column":2}}},"3":{"name":"serialize","line":77,"loc":{"start":{"line":77,"column":2},"end":{"line":114,"column":2}}},"4":{"name":"_exists","line":116,"loc":{"start":{"line":116,"column":2},"end":{"line":118,"column":2}}}},"statementMap":{"1":{"start":{"line":35,"column":4},"end":{"line":35,"column":1142}},"2":{"start":{"line":36,"column":6},"end":{"line":36,"column":36}},"3":{"start":{"line":37,"column":6},"end":{"line":37,"column":1217}},"4":{"start":{"line":40,"column":6},"end":{"line":40,"column":1345}},"5":{"start":{"line":43,"column":6},"end":{"line":43,"column":1495}},"6":{"start":{"line":46,"column":6},"end":{"line":46,"column":1623}},"7":{"start":{"line":49,"column":6},"end":{"line":49,"column":49}},"8":{"start":{"line":50,"column":6},"end":{"line":50,"column":1795}},"9":{"start":{"line":53,"column":6},"end":{"line":53,"column":1929}},"10":{"start":{"line":56,"column":6},"end":{"line":56,"column":2065}},"11":{"start":{"line":61,"column":4},"end":{"line":61,"column":17}},"12":{"start":{"line":70,"column":4},"end":{"line":70,"column":31}},"13":{"start":{"line":78,"column":4},"end":{"line":78,"column":50}},"14":{"start":{"line":80,"column":4},"end":{"line":80,"column":2684}},"15":{"start":{"line":87,"column":4},"end":{"line":87,"column":2891}},"16":{"start":{"line":91,"column":4},"end":{"line":91,"column":3018}},"17":{"start":{"line":95,"column":4},"end":{"line":95,"column":3167}},"18":{"start":{"line":99,"column":4},"end":{"line":99,"column":98}},"19":{"start":{"line":100,"column":4},"end":{"line":100,"column":3395}},"20":{"start":{"line":104,"column":4},"end":{"line":104,"column":3528}},"21":{"start":{"line":108,"column":4},"end":{"line":108,"column":3663}},"22":{"start":{"line":113,"column":4},"end":{"line":113,"column":68}},"23":{"start":{"line":117,"column":4},"end":{"line":117,"column":64}}},"branchMap":{"1":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":35,"column":4}},{"start":{"line":35,"column":4},"end":{"line":35,"column":4}}]},"2":{"line":80,"type":"if","locations":[{"start":{"line":80,"column":4},"end":{"line":80,"column":4}},{"start":{"line":80,"column":4},"end":{"line":80,"column":4}}]}}},"src/models/EternalModel.sol":{"l":{"30":6415,"37":1825,"39":1825,"46":11110,"53":3808,"60":0,"67":0,"69":0,"81":4125,"89":753,"97":1335,"105":1224,"113":0,"121":0,"132":0,"139":0,"141":0,"148":0,"155":0,"162":0,"169":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/EternalModel.sol","s":{"1":6415,"2":1825,"3":1825,"4":11110,"5":3808,"6":0,"7":0,"8":0,"9":4125,"10":753,"11":1335,"12":1224,"13":0,"14":0,"15":0},"b":{"1":[1825,0],"2":[0,0],"3":[0,0]},"f":{"1":6415,"2":1825,"3":11110,"4":3808,"5":0,"6":0,"7":4125,"8":753,"9":1335,"10":1224,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0},"fnMap":{"1":{"name":"getUint","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":31,"column":2}}},"2":{"name":"getString","line":36,"loc":{"start":{"line":36,"column":2},"end":{"line":40,"column":2}}},"3":{"name":"getAddress","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":2}}},"4":{"name":"getBool","line":52,"loc":{"start":{"line":52,"column":2},"end":{"line":54,"column":2}}},"5":{"name":"getInt","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":61,"column":2}}},"6":{"name":"getBytes","line":66,"loc":{"start":{"line":66,"column":2},"end":{"line":70,"column":2}}},"7":{"name":"setUint","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":82,"column":2}}},"8":{"name":"setString","line":88,"loc":{"start":{"line":88,"column":2},"end":{"line":90,"column":2}}},"9":{"name":"setAddress","line":96,"loc":{"start":{"line":96,"column":2},"end":{"line":98,"column":2}}},"10":{"name":"setBool","line":104,"loc":{"start":{"line":104,"column":2},"end":{"line":106,"column":2}}},"11":{"name":"setInt","line":112,"loc":{"start":{"line":112,"column":2},"end":{"line":114,"column":2}}},"12":{"name":"setBytes","line":120,"loc":{"start":{"line":120,"column":2},"end":{"line":122,"column":2}}},"13":{"name":"deleteUint","line":131,"loc":{"start":{"line":131,"column":2},"end":{"line":133,"column":2}}},"14":{"name":"deleteString","line":138,"loc":{"start":{"line":138,"column":2},"end":{"line":142,"column":2}}},"15":{"name":"deleteAddress","line":147,"loc":{"start":{"line":147,"column":2},"end":{"line":149,"column":2}}},"16":{"name":"deleteBool","line":154,"loc":{"start":{"line":154,"column":2},"end":{"line":156,"column":2}}},"17":{"name":"deleteInt","line":161,"loc":{"start":{"line":161,"column":2},"end":{"line":163,"column":2}}},"18":{"name":"deleteBytes","line":168,"loc":{"start":{"line":168,"column":2},"end":{"line":170,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":30}},"2":{"start":{"line":37,"column":4},"end":{"line":37,"column":52}},"3":{"start":{"line":39,"column":4},"end":{"line":39,"column":32}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":33}},"5":{"start":{"line":53,"column":4},"end":{"line":53,"column":30}},"6":{"start":{"line":60,"column":4},"end":{"line":60,"column":29}},"7":{"start":{"line":67,"column":4},"end":{"line":67,"column":52}},"8":{"start":{"line":69,"column":4},"end":{"line":69,"column":31}},"9":{"start":{"line":81,"column":4},"end":{"line":81,"column":31}},"10":{"start":{"line":89,"column":4},"end":{"line":89,"column":33}},"11":{"start":{"line":97,"column":4},"end":{"line":97,"column":34}},"12":{"start":{"line":105,"column":4},"end":{"line":105,"column":31}},"13":{"start":{"line":113,"column":4},"end":{"line":113,"column":30}},"14":{"start":{"line":121,"column":4},"end":{"line":121,"column":32}},"15":{"start":{"line":139,"column":4},"end":{"line":139,"column":52}}},"branchMap":{"1":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":37,"column":4}},{"start":{"line":37,"column":4},"end":{"line":37,"column":4}}]},"2":{"line":67,"type":"if","locations":[{"start":{"line":67,"column":4},"end":{"line":67,"column":4}},{"start":{"line":67,"column":4},"end":{"line":67,"column":4}}]},"3":{"line":139,"type":"if","locations":[{"start":{"line":139,"column":4},"end":{"line":139,"column":4}},{"start":{"line":139,"column":4},"end":{"line":139,"column":4}}]}}},"src/models/Token.sol":{"l":{"42":697,"43":697,"45":697,"46":693,"47":693,"48":693,"49":693,"50":693,"51":693,"52":693,"53":693,"54":693,"55":693,"58":697,"62":61,"66":246,"68":246,"69":246,"77":309,"84":309,"85":309,"86":309,"87":309,"88":309,"89":309,"90":309,"91":309,"93":309,"99":168,"103":830},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Token.sol","s":{"1":697,"2":697,"3":697,"4":693,"5":693,"6":693,"7":693,"8":693,"9":693,"10":693,"11":693,"12":693,"13":693,"14":697,"15":61,"16":246,"17":246,"18":246,"19":309,"20":309,"21":309,"22":309,"23":309,"24":309,"25":309,"26":309,"27":309,"28":309,"29":168,"30":830},"b":{"1":[693,4],"2":[246,0],"3":[309,0]},"f":{"1":697,"2":61,"3":246,"4":309,"5":168,"6":830},"fnMap":{"1":{"name":"deserialize","line":37,"loc":{"start":{"line":37,"column":2},"end":{"line":59,"column":2}}},"2":{"name":"exists","line":61,"loc":{"start":{"line":61,"column":2},"end":{"line":63,"column":2}}},"3":{"name":"incrementCounter","line":65,"loc":{"start":{"line":65,"column":2},"end":{"line":70,"column":2}}},"4":{"name":"serialize","line":76,"loc":{"start":{"line":76,"column":2},"end":{"line":94,"column":2}}},"5":{"name":"updateNumberOfTokenHolders","line":96,"loc":{"start":{"line":96,"column":2},"end":{"line":100,"column":2}}},"6":{"name":"_exists","line":102,"loc":{"start":{"line":102,"column":2},"end":{"line":104,"column":2}}}},"statementMap":{"1":{"start":{"line":42,"column":4},"end":{"line":42,"column":22}},"2":{"start":{"line":43,"column":4},"end":{"line":43,"column":32}},"3":{"start":{"line":45,"column":4},"end":{"line":45,"column":1269}},"4":{"start":{"line":46,"column":6},"end":{"line":46,"column":70}},"5":{"start":{"line":47,"column":6},"end":{"line":47,"column":64}},"6":{"start":{"line":48,"column":6},"end":{"line":48,"column":76}},"7":{"start":{"line":49,"column":6},"end":{"line":49,"column":58}},"8":{"start":{"line":50,"column":6},"end":{"line":50,"column":68}},"9":{"start":{"line":51,"column":6},"end":{"line":51,"column":58}},"10":{"start":{"line":52,"column":6},"end":{"line":52,"column":90}},"11":{"start":{"line":53,"column":6},"end":{"line":53,"column":66}},"12":{"start":{"line":54,"column":6},"end":{"line":54,"column":96}},"13":{"start":{"line":55,"column":6},"end":{"line":55,"column":70}},"14":{"start":{"line":58,"column":4},"end":{"line":58,"column":17}},"15":{"start":{"line":62,"column":4},"end":{"line":62,"column":25}},"16":{"start":{"line":66,"column":4},"end":{"line":66,"column":65}},"17":{"start":{"line":68,"column":4},"end":{"line":68,"column":76}},"18":{"start":{"line":69,"column":4},"end":{"line":69,"column":83}},"19":{"start":{"line":77,"column":4},"end":{"line":77,"column":2629}},"20":{"start":{"line":84,"column":4},"end":{"line":84,"column":69}},"21":{"start":{"line":85,"column":4},"end":{"line":85,"column":73}},"22":{"start":{"line":86,"column":4},"end":{"line":86,"column":67}},"23":{"start":{"line":87,"column":4},"end":{"line":87,"column":79}},"24":{"start":{"line":88,"column":4},"end":{"line":88,"column":61}},"25":{"start":{"line":89,"column":4},"end":{"line":89,"column":71}},"26":{"start":{"line":90,"column":4},"end":{"line":90,"column":61}},"27":{"start":{"line":91,"column":4},"end":{"line":91,"column":93}},"28":{"start":{"line":93,"column":4},"end":{"line":93,"column":62}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":92}},"30":{"start":{"line":103,"column":4},"end":{"line":103,"column":58}}},"branchMap":{"1":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":45,"column":4}},{"start":{"line":45,"column":4},"end":{"line":45,"column":4}}]},"2":{"line":66,"type":"if","locations":[{"start":{"line":66,"column":4},"end":{"line":66,"column":4}},{"start":{"line":66,"column":4},"end":{"line":66,"column":4}}]},"3":{"line":77,"type":"if","locations":[{"start":{"line":77,"column":4},"end":{"line":77,"column":4}},{"start":{"line":77,"column":4},"end":{"line":77,"column":4}}]}}},"src/models/TokenHolder.sol":{"l":{"29":261,"30":261,"31":261,"33":261,"34":93,"35":93,"38":261,"46":0,"54":246,"56":246,"57":246,"59":246,"67":261},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/TokenHolder.sol","s":{"1":261,"2":261,"3":261,"4":261,"5":93,"6":93,"7":261,"8":0,"9":246,"10":246,"11":246,"12":246,"13":261},"b":{"1":[93,168],"2":[246,0]},"f":{"1":261,"2":0,"3":246,"4":261},"fnMap":{"1":{"name":"deserialize","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":39,"column":2}}},"2":{"name":"exists","line":41,"loc":{"start":{"line":41,"column":2},"end":{"line":47,"column":2}}},"3":{"name":"serialize","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":60,"column":2}}},"4":{"name":"_exists","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":68,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":28}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":32}},"3":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":1003}},"5":{"start":{"line":34,"column":6},"end":{"line":34,"column":98}},"6":{"start":{"line":35,"column":6},"end":{"line":35,"column":96}},"7":{"start":{"line":38,"column":4},"end":{"line":38,"column":17}},"8":{"start":{"line":46,"column":4},"end":{"line":46,"column":48}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":71}},"10":{"start":{"line":56,"column":4},"end":{"line":56,"column":95}},"11":{"start":{"line":57,"column":4},"end":{"line":57,"column":93}},"12":{"start":{"line":59,"column":4},"end":{"line":59,"column":84}},"13":{"start":{"line":67,"column":4},"end":{"line":67,"column":74}}},"branchMap":{"1":{"line":33,"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":33,"column":4}},{"start":{"line":33,"column":4},"end":{"line":33,"column":4}}]},"2":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":54,"column":4}},{"start":{"line":54,"column":4},"end":{"line":54,"column":4}}]}}},"src/services/Configurator.sol":{"l":{"30":81,"31":81,"32":81,"33":81,"34":81,"35":81,"36":81,"37":81,"38":81,"50":81,"52":81,"55":81,"56":81,"57":81,"58":81,"59":81,"60":81,"63":81,"65":81,"66":81,"91":72,"92":72,"93":72,"94":72,"95":72,"96":72,"97":72,"98":72,"99":72,"100":72,"101":72,"103":72,"104":72,"105":72,"107":72},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/services/Configurator.sol","s":{"1":81,"2":81,"3":81,"4":81,"5":81,"6":81,"7":81,"8":81,"9":81,"10":81,"11":81,"12":81,"13":81,"14":81,"15":81,"16":81,"17":81,"18":81,"19":81,"20":81,"21":72,"22":72,"23":72,"24":72,"25":72,"26":72,"27":72,"28":72,"29":72,"30":72,"31":72,"32":72,"33":72,"34":72,"35":72},"b":{},"f":{"1":81,"2":81,"3":72},"fnMap":{"1":{"name":"buildDAO","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":39,"column":2}}},"2":{"name":"buildEcosystem","line":46,"loc":{"start":{"line":46,"column":2},"end":{"line":67,"column":2}}},"3":{"name":"buildToken","line":82,"loc":{"start":{"line":82,"column":2},"end":{"line":108,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":52}},"2":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":29}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":19}},"5":{"start":{"line":34,"column":4},"end":{"line":34,"column":45}},"6":{"start":{"line":35,"column":4},"end":{"line":35,"column":23}},"7":{"start":{"line":36,"column":4},"end":{"line":36,"column":29}},"8":{"start":{"line":37,"column":4},"end":{"line":37,"column":28}},"9":{"start":{"line":38,"column":4},"end":{"line":38,"column":14}},"10":{"start":{"line":50,"column":4},"end":{"line":50,"column":74}},"11":{"start":{"line":52,"column":4},"end":{"line":52,"column":36}},"12":{"start":{"line":55,"column":4},"end":{"line":55,"column":63}},"13":{"start":{"line":56,"column":4},"end":{"line":56,"column":85}},"14":{"start":{"line":57,"column":4},"end":{"line":57,"column":55}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":67}},"16":{"start":{"line":59,"column":4},"end":{"line":59,"column":71}},"17":{"start":{"line":60,"column":4},"end":{"line":60,"column":59}},"18":{"start":{"line":63,"column":4},"end":{"line":63,"column":63}},"19":{"start":{"line":65,"column":4},"end":{"line":65,"column":40}},"20":{"start":{"line":66,"column":4},"end":{"line":66,"column":20}},"21":{"start":{"line":91,"column":4},"end":{"line":91,"column":60}},"22":{"start":{"line":92,"column":4},"end":{"line":92,"column":21}},"23":{"start":{"line":93,"column":4},"end":{"line":93,"column":31}},"24":{"start":{"line":94,"column":4},"end":{"line":94,"column":33}},"25":{"start":{"line":95,"column":4},"end":{"line":95,"column":15}},"26":{"start":{"line":96,"column":4},"end":{"line":96,"column":19}},"27":{"start":{"line":97,"column":4},"end":{"line":97,"column":32}},"28":{"start":{"line":98,"column":4},"end":{"line":98,"column":47}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":21}},"30":{"start":{"line":100,"column":4},"end":{"line":100,"column":25}},"31":{"start":{"line":101,"column":4},"end":{"line":101,"column":97}},"32":{"start":{"line":103,"column":4},"end":{"line":103,"column":49}},"33":{"start":{"line":104,"column":4},"end":{"line":104,"column":68}},"34":{"start":{"line":105,"column":4},"end":{"line":105,"column":32}},"35":{"start":{"line":107,"column":4},"end":{"line":107,"column":16}}},"branchMap":{}},"src/tokens/ElasticGovernanceToken.sol":{"l":{"29":144,"30":144,"34":6,"35":6,"39":228,"40":228,"44":72,"45":72,"46":72,"47":72,"60":3,"79":6,"80":6,"89":13,"90":13,"91":13,"93":13,"102":1,"103":1,"107":1,"108":1,"109":1,"110":1,"112":1,"113":1,"115":0,"131":3,"132":3,"147":3,"148":3,"156":1,"166":3,"168":3,"170":3,"171":3,"181":6,"182":6,"192":3,"194":3,"209":225,"210":225,"218":1,"222":1,"226":72,"230":72,"239":1,"252":6,"253":6,"257":1,"258":1,"270":3,"271":3,"289":3,"291":3,"293":3,"294":3,"296":3,"299":3,"309":15,"310":15,"312":15,"314":15,"322":0,"323":0,"324":0,"325":0,"327":0,"331":3,"332":3,"333":3,"337":6,"338":6,"339":6,"340":6,"341":6,"343":6,"345":6,"346":6,"348":6,"349":6,"350":6,"354":3,"355":3,"356":3,"360":228,"361":228,"362":228,"363":228,"364":228,"366":228,"368":228,"370":228,"371":228,"373":228,"374":228,"375":228,"377":228,"385":6,"386":6,"387":6,"389":6,"390":6,"391":6,"392":6,"394":6,"395":6,"397":6,"398":6,"400":6,"401":6,"402":6,"403":6,"404":6,"406":6,"415":246,"416":246,"417":246,"418":246,"419":246,"420":246,"421":246,"422":246,"423":246,"424":246,"425":246,"427":246,"428":234,"430":12,"433":246,"435":246,"436":246,"438":246,"447":246,"448":168,"451":246,"452":0,"459":777,"463":261,"464":261,"473":30,"474":30},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/tokens/ElasticGovernanceToken.sol","s":{"1":144,"2":6,"3":228,"4":72,"5":72,"6":72,"7":72,"8":3,"9":6,"10":6,"11":13,"12":13,"13":13,"14":13,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":0,"24":3,"25":3,"26":3,"27":3,"28":1,"29":3,"30":3,"31":3,"32":3,"33":6,"34":6,"35":3,"36":3,"37":225,"38":225,"39":1,"40":1,"41":72,"42":72,"43":1,"44":6,"45":6,"46":1,"47":1,"48":3,"49":3,"50":3,"51":3,"52":3,"53":3,"54":3,"55":3,"56":15,"57":15,"58":15,"59":15,"60":0,"61":0,"62":0,"63":0,"64":0,"65":3,"66":3,"67":3,"68":6,"69":6,"70":6,"71":6,"72":6,"73":6,"74":6,"75":6,"76":6,"77":6,"78":6,"79":3,"80":3,"81":3,"82":228,"83":228,"84":228,"85":228,"86":228,"87":228,"88":228,"89":228,"90":228,"91":228,"92":228,"93":228,"94":228,"95":6,"96":6,"97":6,"98":6,"99":6,"100":6,"101":6,"102":6,"103":6,"104":6,"105":6,"106":6,"107":6,"108":6,"109":6,"110":6,"111":6,"112":246,"113":246,"114":246,"115":246,"116":246,"117":246,"118":246,"119":246,"120":246,"121":246,"122":246,"123":246,"124":234,"125":12,"126":246,"127":246,"128":246,"129":246,"130":246,"131":168,"132":246,"133":0,"134":777,"135":261,"136":261,"137":30,"138":30},"b":{"1":[144,0],"2":[6,0],"3":[228,0],"4":[1,0],"5":[3,0],"6":[3,0],"7":[3,0],"8":[15,0],"9":[15,0],"10":[234,12],"11":[168,78],"12":[0,246]},"f":{"1":144,"2":6,"3":228,"4":72,"5":3,"6":6,"7":13,"8":1,"9":1,"10":3,"11":3,"12":1,"13":3,"14":6,"15":3,"16":225,"17":1,"18":1,"19":72,"20":72,"21":1,"22":6,"23":1,"24":3,"25":3,"26":15,"27":0,"28":3,"29":6,"30":3,"31":228,"32":6,"33":246,"34":246,"35":777,"36":261,"37":30},"fnMap":{"1":{"name":"onlyDAO","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":31,"column":2}}},"2":{"name":"onlyDAOorBurner","line":33,"loc":{"start":{"line":33,"column":2},"end":{"line":36,"column":2}}},"3":{"name":"onlyDAOorMinter","line":38,"loc":{"start":{"line":38,"column":2},"end":{"line":41,"column":2}}},"4":{"name":"constructor","line":43,"loc":{"start":{"line":43,"column":2},"end":{"line":48,"column":2}}},"5":{"name":"allowance","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":61,"column":2}}},"6":{"name":"approve","line":78,"loc":{"start":{"line":78,"column":2},"end":{"line":81,"column":2}}},"7":{"name":"balanceOf","line":88,"loc":{"start":{"line":88,"column":2},"end":{"line":94,"column":2}}},"8":{"name":"balanceOfInShares","line":101,"loc":{"start":{"line":101,"column":2},"end":{"line":104,"column":2}}},"9":{"name":"balanceOfVoting","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":117,"column":2}}},"10":{"name":"burn","line":128,"loc":{"start":{"line":125,"column":2},"end":{"line":133,"column":2}}},"11":{"name":"burnShares","line":144,"loc":{"start":{"line":141,"column":2},"end":{"line":149,"column":2}}},"12":{"name":"decimals","line":155,"loc":{"start":{"line":155,"column":2},"end":{"line":157,"column":2}}},"13":{"name":"decreaseAllowance","line":165,"loc":{"start":{"line":165,"column":2},"end":{"line":172,"column":2}}},"14":{"name":"increaseAllowance","line":180,"loc":{"start":{"line":180,"column":2},"end":{"line":183,"column":2}}},"15":{"name":"mint","line":191,"loc":{"start":{"line":191,"column":2},"end":{"line":195,"column":2}}},"16":{"name":"mintShares","line":206,"loc":{"start":{"line":203,"column":2},"end":{"line":211,"column":2}}},"17":{"name":"name","line":217,"loc":{"start":{"line":217,"column":2},"end":{"line":219,"column":2}}},"18":{"name":"numberOfTokenHolders","line":221,"loc":{"start":{"line":221,"column":2},"end":{"line":223,"column":2}}},"19":{"name":"setBurner","line":225,"loc":{"start":{"line":225,"column":2},"end":{"line":227,"column":2}}},"20":{"name":"setMinter","line":229,"loc":{"start":{"line":229,"column":2},"end":{"line":231,"column":2}}},"21":{"name":"symbol","line":238,"loc":{"start":{"line":238,"column":2},"end":{"line":240,"column":2}}},"22":{"name":"totalSupply","line":251,"loc":{"start":{"line":251,"column":2},"end":{"line":254,"column":2}}},"23":{"name":"totalSupplyInShares","line":256,"loc":{"start":{"line":256,"column":2},"end":{"line":259,"column":2}}},"24":{"name":"transfer","line":269,"loc":{"start":{"line":269,"column":2},"end":{"line":272,"column":2}}},"25":{"name":"transferFrom","line":284,"loc":{"start":{"line":284,"column":2},"end":{"line":300,"column":2}}},"26":{"name":"_approve","line":304,"loc":{"start":{"line":304,"column":2},"end":{"line":315,"column":2}}},"27":{"name":"_balanceAt","line":317,"loc":{"start":{"line":317,"column":2},"end":{"line":328,"column":2}}},"28":{"name":"_burn","line":330,"loc":{"start":{"line":330,"column":2},"end":{"line":334,"column":2}}},"29":{"name":"_burnShares","line":336,"loc":{"start":{"line":336,"column":2},"end":{"line":351,"column":2}}},"30":{"name":"_mint","line":353,"loc":{"start":{"line":353,"column":2},"end":{"line":357,"column":2}}},"31":{"name":"_mintShares","line":359,"loc":{"start":{"line":359,"column":2},"end":{"line":378,"column":2}}},"32":{"name":"_transfer","line":380,"loc":{"start":{"line":380,"column":2},"end":{"line":407,"column":2}}},"33":{"name":"_updateBalance","line":409,"loc":{"start":{"line":409,"column":2},"end":{"line":439,"column":2}}},"34":{"name":"_updateNumberOfTokenHolders","line":441,"loc":{"start":{"line":441,"column":2},"end":{"line":454,"column":2}}},"35":{"name":"_getEcosystem","line":458,"loc":{"start":{"line":458,"column":2},"end":{"line":460,"column":2}}},"36":{"name":"_getTokenHolder","line":462,"loc":{"start":{"line":462,"column":2},"end":{"line":470,"column":2}}},"37":{"name":"_getToken","line":472,"loc":{"start":{"line":472,"column":2},"end":{"line":475,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":90}},"2":{"start":{"line":34,"column":4},"end":{"line":34,"column":90}},"3":{"start":{"line":39,"column":4},"end":{"line":39,"column":90}},"4":{"start":{"line":44,"column":4},"end":{"line":44,"column":23}},"5":{"start":{"line":45,"column":4},"end":{"line":45,"column":27}},"6":{"start":{"line":46,"column":4},"end":{"line":46,"column":49}},"7":{"start":{"line":47,"column":4},"end":{"line":47,"column":23}},"8":{"start":{"line":60,"column":4},"end":{"line":60,"column":40}},"9":{"start":{"line":79,"column":4},"end":{"line":79,"column":42}},"10":{"start":{"line":80,"column":4},"end":{"line":80,"column":15}},"11":{"start":{"line":89,"column":4},"end":{"line":89,"column":45}},"12":{"start":{"line":90,"column":4},"end":{"line":90,"column":71}},"13":{"start":{"line":91,"column":4},"end":{"line":91,"column":67}},"14":{"start":{"line":93,"column":4},"end":{"line":93,"column":12}},"15":{"start":{"line":102,"column":4},"end":{"line":102,"column":71}},"16":{"start":{"line":103,"column":4},"end":{"line":103,"column":29}},"17":{"start":{"line":107,"column":4},"end":{"line":107,"column":45}},"18":{"start":{"line":108,"column":4},"end":{"line":108,"column":71}},"19":{"start":{"line":109,"column":4},"end":{"line":109,"column":59}},"20":{"start":{"line":110,"column":4},"end":{"line":110,"column":58}},"21":{"start":{"line":112,"column":4},"end":{"line":112,"column":3845}},"22":{"start":{"line":113,"column":6},"end":{"line":113,"column":61}},"23":{"start":{"line":115,"column":6},"end":{"line":115,"column":64}},"24":{"start":{"line":131,"column":4},"end":{"line":131,"column":27}},"25":{"start":{"line":132,"column":4},"end":{"line":132,"column":15}},"26":{"start":{"line":147,"column":4},"end":{"line":147,"column":33}},"27":{"start":{"line":148,"column":4},"end":{"line":148,"column":15}},"28":{"start":{"line":156,"column":4},"end":{"line":156,"column":13}},"29":{"start":{"line":166,"column":4},"end":{"line":166,"column":92}},"30":{"start":{"line":168,"column":4},"end":{"line":168,"column":74}},"31":{"start":{"line":170,"column":4},"end":{"line":170,"column":47}},"32":{"start":{"line":171,"column":4},"end":{"line":171,"column":15}},"33":{"start":{"line":181,"column":4},"end":{"line":181,"column":95}},"34":{"start":{"line":182,"column":4},"end":{"line":182,"column":15}},"35":{"start":{"line":192,"column":4},"end":{"line":192,"column":27}},"36":{"start":{"line":194,"column":4},"end":{"line":194,"column":15}},"37":{"start":{"line":209,"column":4},"end":{"line":209,"column":33}},"38":{"start":{"line":210,"column":4},"end":{"line":210,"column":15}},"39":{"start":{"line":218,"column":4},"end":{"line":218,"column":27}},"40":{"start":{"line":222,"column":4},"end":{"line":222,"column":43}},"41":{"start":{"line":226,"column":4},"end":{"line":226,"column":19}},"42":{"start":{"line":230,"column":4},"end":{"line":230,"column":19}},"43":{"start":{"line":239,"column":4},"end":{"line":239,"column":29}},"44":{"start":{"line":252,"column":4},"end":{"line":252,"column":45}},"45":{"start":{"line":253,"column":4},"end":{"line":253,"column":56}},"46":{"start":{"line":257,"column":4},"end":{"line":257,"column":45}},"47":{"start":{"line":258,"column":4},"end":{"line":258,"column":23}},"48":{"start":{"line":270,"column":4},"end":{"line":270,"column":38}},"49":{"start":{"line":271,"column":4},"end":{"line":271,"column":15}},"50":{"start":{"line":289,"column":4},"end":{"line":289,"column":97}},"51":{"start":{"line":291,"column":4},"end":{"line":291,"column":33}},"52":{"start":{"line":293,"column":4},"end":{"line":293,"column":9096}},"53":{"start":{"line":294,"column":6},"end":{"line":294,"column":91}},"54":{"start":{"line":296,"column":6},"end":{"line":296,"column":68}},"55":{"start":{"line":299,"column":4},"end":{"line":299,"column":15}},"56":{"start":{"line":309,"column":4},"end":{"line":309,"column":72}},"57":{"start":{"line":310,"column":4},"end":{"line":310,"column":72}},"58":{"start":{"line":312,"column":4},"end":{"line":312,"column":42}},"59":{"start":{"line":314,"column":4},"end":{"line":314,"column":44}},"60":{"start":{"line":322,"column":4},"end":{"line":322,"column":45}},"61":{"start":{"line":323,"column":4},"end":{"line":323,"column":71}},"62":{"start":{"line":324,"column":4},"end":{"line":324,"column":57}},"63":{"start":{"line":325,"column":4},"end":{"line":325,"column":67}},"64":{"start":{"line":327,"column":4},"end":{"line":327,"column":82}},"65":{"start":{"line":331,"column":4},"end":{"line":331,"column":45}},"66":{"start":{"line":332,"column":4},"end":{"line":332,"column":76}},"67":{"start":{"line":333,"column":4},"end":{"line":333,"column":37}},"68":{"start":{"line":337,"column":4},"end":{"line":337,"column":57}},"69":{"start":{"line":338,"column":4},"end":{"line":338,"column":59}},"70":{"start":{"line":339,"column":4},"end":{"line":339,"column":84}},"71":{"start":{"line":340,"column":4},"end":{"line":340,"column":71}},"72":{"start":{"line":341,"column":4},"end":{"line":341,"column":52}},"73":{"start":{"line":343,"column":4},"end":{"line":343,"column":72}},"74":{"start":{"line":345,"column":4},"end":{"line":345,"column":58}},"75":{"start":{"line":346,"column":4},"end":{"line":346,"column":32}},"76":{"start":{"line":348,"column":4},"end":{"line":348,"column":83}},"77":{"start":{"line":349,"column":4},"end":{"line":349,"column":44}},"78":{"start":{"line":350,"column":4},"end":{"line":350,"column":84}},"79":{"start":{"line":354,"column":4},"end":{"line":354,"column":45}},"80":{"start":{"line":355,"column":4},"end":{"line":355,"column":76}},"81":{"start":{"line":356,"column":4},"end":{"line":356,"column":37}},"82":{"start":{"line":360,"column":4},"end":{"line":360,"column":57}},"83":{"start":{"line":361,"column":4},"end":{"line":361,"column":59}},"84":{"start":{"line":362,"column":4},"end":{"line":362,"column":84}},"85":{"start":{"line":363,"column":4},"end":{"line":363,"column":71}},"86":{"start":{"line":364,"column":4},"end":{"line":364,"column":52}},"87":{"start":{"line":366,"column":4},"end":{"line":366,"column":66}},"88":{"start":{"line":368,"column":4},"end":{"line":368,"column":71}},"89":{"start":{"line":370,"column":4},"end":{"line":370,"column":58}},"90":{"start":{"line":371,"column":4},"end":{"line":371,"column":32}},"91":{"start":{"line":373,"column":4},"end":{"line":373,"column":83}},"92":{"start":{"line":374,"column":4},"end":{"line":374,"column":44}},"93":{"start":{"line":375,"column":4},"end":{"line":375,"column":84}},"94":{"start":{"line":377,"column":4},"end":{"line":377,"column":47}},"95":{"start":{"line":385,"column":4},"end":{"line":385,"column":57}},"96":{"start":{"line":386,"column":4},"end":{"line":386,"column":59}},"97":{"start":{"line":387,"column":4},"end":{"line":387,"column":84}},"98":{"start":{"line":389,"column":4},"end":{"line":389,"column":72}},"99":{"start":{"line":390,"column":4},"end":{"line":390,"column":68}},"100":{"start":{"line":391,"column":4},"end":{"line":391,"column":60}},"101":{"start":{"line":392,"column":4},"end":{"line":392,"column":56}},"102":{"start":{"line":394,"column":4},"end":{"line":394,"column":76}},"103":{"start":{"line":395,"column":4},"end":{"line":395,"column":65}},"104":{"start":{"line":397,"column":4},"end":{"line":397,"column":79}},"105":{"start":{"line":398,"column":4},"end":{"line":398,"column":74}},"106":{"start":{"line":400,"column":4},"end":{"line":400,"column":83}},"107":{"start":{"line":401,"column":4},"end":{"line":401,"column":48}},"108":{"start":{"line":402,"column":4},"end":{"line":402,"column":46}},"109":{"start":{"line":403,"column":4},"end":{"line":403,"column":92}},"110":{"start":{"line":404,"column":4},"end":{"line":404,"column":88}},"111":{"start":{"line":406,"column":4},"end":{"line":406,"column":37}},"112":{"start":{"line":415,"column":4},"end":{"line":415,"column":57}},"113":{"start":{"line":416,"column":4},"end":{"line":416,"column":35}},"114":{"start":{"line":417,"column":4},"end":{"line":417,"column":37}},"115":{"start":{"line":418,"column":4},"end":{"line":418,"column":32}},"116":{"start":{"line":419,"column":4},"end":{"line":419,"column":39}},"117":{"start":{"line":420,"column":4},"end":{"line":420,"column":23}},"118":{"start":{"line":421,"column":4},"end":{"line":421,"column":23}},"119":{"start":{"line":422,"column":4},"end":{"line":422,"column":25}},"120":{"start":{"line":423,"column":4},"end":{"line":423,"column":37}},"121":{"start":{"line":424,"column":4},"end":{"line":424,"column":51}},"122":{"start":{"line":425,"column":4},"end":{"line":425,"column":63}},"123":{"start":{"line":427,"column":4},"end":{"line":427,"column":14338}},"124":{"start":{"line":428,"column":6},"end":{"line":428,"column":74}},"125":{"start":{"line":430,"column":6},"end":{"line":430,"column":74}},"126":{"start":{"line":433,"column":4},"end":{"line":433,"column":39}},"127":{"start":{"line":435,"column":4},"end":{"line":435,"column":60}},"128":{"start":{"line":436,"column":4},"end":{"line":436,"column":62}},"129":{"start":{"line":438,"column":4},"end":{"line":438,"column":23}},"130":{"start":{"line":447,"column":4},"end":{"line":447,"column":14924}},"131":{"start":{"line":448,"column":6},"end":{"line":448,"column":96}},"132":{"start":{"line":451,"column":4},"end":{"line":451,"column":15095}},"133":{"start":{"line":452,"column":6},"end":{"line":452,"column":96}},"134":{"start":{"line":459,"column":4},"end":{"line":459,"column":67}},"135":{"start":{"line":463,"column":4},"end":{"line":463,"column":57}},"136":{"start":{"line":464,"column":4},"end":{"line":464,"column":15598}},"137":{"start":{"line":473,"column":4},"end":{"line":473,"column":57}},"138":{"start":{"line":474,"column":4},"end":{"line":474,"column":83}}},"branchMap":{"1":{"line":29,"type":"if","locations":[{"start":{"line":29,"column":4},"end":{"line":29,"column":4}},{"start":{"line":29,"column":4},"end":{"line":29,"column":4}}]},"2":{"line":34,"type":"if","locations":[{"start":{"line":34,"column":4},"end":{"line":34,"column":4}},{"start":{"line":34,"column":4},"end":{"line":34,"column":4}}]},"3":{"line":39,"type":"if","locations":[{"start":{"line":39,"column":4},"end":{"line":39,"column":4}},{"start":{"line":39,"column":4},"end":{"line":39,"column":4}}]},"4":{"line":112,"type":"if","locations":[{"start":{"line":112,"column":4},"end":{"line":112,"column":4}},{"start":{"line":112,"column":4},"end":{"line":112,"column":4}}]},"5":{"line":168,"type":"if","locations":[{"start":{"line":168,"column":4},"end":{"line":168,"column":4}},{"start":{"line":168,"column":4},"end":{"line":168,"column":4}}]},"6":{"line":289,"type":"if","locations":[{"start":{"line":289,"column":4},"end":{"line":289,"column":4}},{"start":{"line":289,"column":4},"end":{"line":289,"column":4}}]},"7":{"line":293,"type":"if","locations":[{"start":{"line":293,"column":4},"end":{"line":293,"column":4}},{"start":{"line":293,"column":4},"end":{"line":293,"column":4}}]},"8":{"line":309,"type":"if","locations":[{"start":{"line":309,"column":4},"end":{"line":309,"column":4}},{"start":{"line":309,"column":4},"end":{"line":309,"column":4}}]},"9":{"line":310,"type":"if","locations":[{"start":{"line":310,"column":4},"end":{"line":310,"column":4}},{"start":{"line":310,"column":4},"end":{"line":310,"column":4}}]},"10":{"line":427,"type":"if","locations":[{"start":{"line":427,"column":4},"end":{"line":427,"column":4}},{"start":{"line":427,"column":4},"end":{"line":427,"column":4}}]},"11":{"line":447,"type":"if","locations":[{"start":{"line":447,"column":4},"end":{"line":447,"column":4}},{"start":{"line":447,"column":4},"end":{"line":447,"column":4}}]},"12":{"line":451,"type":"if","locations":[{"start":{"line":451,"column":4},"end":{"line":451,"column":4}},{"start":{"line":451,"column":4},"end":{"line":451,"column":4}}]}}}} \ No newline at end of file +{"src/core/ElasticDAO.sol":{"l":{"24":7,"25":7,"26":7,"29":64,"30":64,"32":64,"33":63,"36":201,"37":201,"38":200,"41":0,"42":0,"45":76,"46":75,"49":124,"50":124,"51":124,"52":124,"54":124,"55":122,"58":4,"59":4,"69":84,"70":84,"71":84,"72":84,"73":84,"74":84,"76":84,"77":84,"78":84,"83":3,"84":3,"85":3,"88":3,"89":3,"91":3,"102":75,"103":75,"105":75,"116":75,"117":75,"118":75,"120":75,"124":4,"126":4,"131":4,"132":4,"141":4,"151":4,"154":3,"155":3,"158":3,"159":3,"160":3,"161":3,"164":3,"168":0,"169":0,"170":0,"171":0,"175":0,"187":63,"189":63,"190":63,"191":63,"195":58,"197":57,"198":57,"199":57,"200":57,"202":57,"204":57,"205":171,"207":57,"208":57,"214":0,"218":0,"224":208,"225":208,"229":665,"233":70,"234":70},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAO.sol","s":{"1":7,"2":7,"3":64,"4":64,"5":64,"6":201,"7":201,"8":0,"9":76,"10":124,"11":124,"12":124,"13":124,"14":124,"15":4,"16":84,"17":84,"18":84,"19":84,"20":84,"21":84,"22":84,"23":84,"24":84,"25":3,"26":3,"27":3,"28":3,"29":3,"30":3,"31":75,"32":75,"33":75,"34":75,"35":75,"36":75,"37":75,"38":4,"39":4,"40":4,"41":4,"42":4,"43":4,"44":3,"45":3,"46":3,"47":3,"48":3,"49":3,"50":3,"51":0,"52":0,"53":0,"54":0,"55":0,"56":63,"57":63,"58":63,"59":63,"60":58,"61":57,"62":57,"63":57,"64":57,"65":57,"66":57,"67":171,"68":57,"69":57,"70":0,"71":0,"72":208,"73":208,"74":665,"75":70,"76":70},"b":{"1":[7,0],"2":[63,1],"3":[200,1],"4":[0,0],"5":[75,1],"6":[122,2],"7":[4,0],"8":[75,0],"9":[4,0],"10":[3,1],"11":[57,1]},"f":{"1":7,"2":64,"3":201,"4":0,"5":76,"6":124,"7":4,"8":84,"9":3,"10":75,"11":4,"12":0,"13":0,"14":63,"15":58,"16":0,"17":0,"18":208,"19":665,"20":70,"21":0},"fnMap":{"1":{"name":"onlyAfterSummoning","line":23,"loc":{"start":{"line":23,"column":2},"end":{"line":27,"column":2}}},"2":{"name":"onlyAfterTokenInitialized","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":34,"column":2}}},"3":{"name":"onlyBeforeSummoning","line":35,"loc":{"start":{"line":35,"column":2},"end":{"line":39,"column":2}}},"4":{"name":"onlyController","line":40,"loc":{"start":{"line":40,"column":2},"end":{"line":43,"column":2}}},"5":{"name":"onlyDeployer","line":44,"loc":{"start":{"line":44,"column":2},"end":{"line":47,"column":2}}},"6":{"name":"onlySummoners","line":48,"loc":{"start":{"line":48,"column":2},"end":{"line":56,"column":2}}},"7":{"name":"onlyWhenOpen","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":60,"column":2}}},"8":{"name":"constructor","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":79,"column":2}}},"9":{"name":"exit","line":81,"loc":{"start":{"line":81,"column":2},"end":{"line":92,"column":2}}},"10":{"name":"initializeToken","line":101,"loc":{"start":{"line":94,"column":2},"end":{"line":121,"column":2}}},"11":{"name":"join","line":123,"loc":{"start":{"line":123,"column":2},"end":{"line":165,"column":2}}},"12":{"name":"setController","line":167,"loc":{"start":{"line":167,"column":2},"end":{"line":172,"column":2}}},"13":{"name":"setMaxVotingLambda","line":174,"loc":{"start":{"line":174,"column":2},"end":{"line":176,"column":2}}},"14":{"name":"seedSummoning","line":185,"loc":{"start":{"line":180,"column":2},"end":{"line":192,"column":2}}},"15":{"name":"summon","line":194,"loc":{"start":{"line":194,"column":2},"end":{"line":209,"column":2}}},"16":{"name":"getDAO","line":213,"loc":{"start":{"line":213,"column":2},"end":{"line":215,"column":2}}},"17":{"name":"getEcosystem","line":217,"loc":{"start":{"line":217,"column":2},"end":{"line":219,"column":2}}},"18":{"name":"_getDAO","line":223,"loc":{"start":{"line":223,"column":2},"end":{"line":226,"column":2}}},"19":{"name":"_getEcosystem","line":228,"loc":{"start":{"line":228,"column":2},"end":{"line":230,"column":2}}},"20":{"name":"_getToken","line":232,"loc":{"start":{"line":232,"column":2},"end":{"line":236,"column":2}}},"21":{"name":null,"line":240,"loc":{"start":{"line":240,"column":2},"end":{"line":240,"column":31}}}},"statementMap":{"1":{"start":{"line":24,"column":4},"end":{"line":24,"column":39}},"2":{"start":{"line":25,"column":4},"end":{"line":25,"column":60}},"3":{"start":{"line":29,"column":4},"end":{"line":29,"column":57}},"4":{"start":{"line":30,"column":4},"end":{"line":30,"column":913}},"5":{"start":{"line":32,"column":4},"end":{"line":32,"column":77}},"6":{"start":{"line":36,"column":4},"end":{"line":36,"column":39}},"7":{"start":{"line":37,"column":4},"end":{"line":37,"column":73}},"8":{"start":{"line":41,"column":4},"end":{"line":41,"column":67}},"9":{"start":{"line":45,"column":4},"end":{"line":45,"column":63}},"10":{"start":{"line":49,"column":4},"end":{"line":49,"column":57}},"11":{"start":{"line":50,"column":4},"end":{"line":50,"column":52}},"12":{"start":{"line":51,"column":4},"end":{"line":51,"column":79}},"13":{"start":{"line":52,"column":4},"end":{"line":52,"column":64}},"14":{"start":{"line":54,"column":4},"end":{"line":54,"column":55}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":71}},"16":{"start":{"line":69,"column":4},"end":{"line":69,"column":49}},"17":{"start":{"line":70,"column":4},"end":{"line":70,"column":27}},"18":{"start":{"line":71,"column":4},"end":{"line":71,"column":24}},"19":{"start":{"line":72,"column":4},"end":{"line":72,"column":98}},"20":{"start":{"line":73,"column":4},"end":{"line":73,"column":40}},"21":{"start":{"line":74,"column":4},"end":{"line":74,"column":25}},"22":{"start":{"line":76,"column":4},"end":{"line":76,"column":74}},"23":{"start":{"line":77,"column":4},"end":{"line":77,"column":79}},"24":{"start":{"line":78,"column":4},"end":{"line":78,"column":74}},"25":{"start":{"line":83,"column":4},"end":{"line":83,"column":45}},"26":{"start":{"line":84,"column":4},"end":{"line":84,"column":77}},"27":{"start":{"line":85,"column":4},"end":{"line":85,"column":53}},"28":{"start":{"line":88,"column":4},"end":{"line":88,"column":72}},"29":{"start":{"line":89,"column":4},"end":{"line":89,"column":86}},"30":{"start":{"line":91,"column":4},"end":{"line":91,"column":41}},"31":{"start":{"line":102,"column":4},"end":{"line":102,"column":88}},"32":{"start":{"line":103,"column":4},"end":{"line":103,"column":57}},"33":{"start":{"line":105,"column":4},"end":{"line":105,"column":3533}},"34":{"start":{"line":116,"column":4},"end":{"line":116,"column":77}},"35":{"start":{"line":117,"column":4},"end":{"line":117,"column":38}},"36":{"start":{"line":118,"column":4},"end":{"line":118,"column":38}},"37":{"start":{"line":120,"column":4},"end":{"line":120,"column":51}},"38":{"start":{"line":124,"column":4},"end":{"line":124,"column":45}},"39":{"start":{"line":126,"column":4},"end":{"line":126,"column":4117}},"40":{"start":{"line":131,"column":4},"end":{"line":131,"column":77}},"41":{"start":{"line":132,"column":4},"end":{"line":132,"column":4328}},"42":{"start":{"line":141,"column":4},"end":{"line":141,"column":4774}},"43":{"start":{"line":151,"column":4},"end":{"line":151,"column":67}},"44":{"start":{"line":154,"column":4},"end":{"line":154,"column":65}},"45":{"start":{"line":155,"column":4},"end":{"line":155,"column":72}},"46":{"start":{"line":158,"column":4},"end":{"line":158,"column":57}},"47":{"start":{"line":159,"column":4},"end":{"line":159,"column":59}},"48":{"start":{"line":160,"column":4},"end":{"line":160,"column":18}},"49":{"start":{"line":161,"column":4},"end":{"line":161,"column":32}},"50":{"start":{"line":164,"column":4},"end":{"line":164,"column":53}},"51":{"start":{"line":168,"column":4},"end":{"line":168,"column":27}},"52":{"start":{"line":169,"column":4},"end":{"line":169,"column":83}},"53":{"start":{"line":170,"column":4},"end":{"line":170,"column":38}},"54":{"start":{"line":171,"column":4},"end":{"line":171,"column":38}},"55":{"start":{"line":175,"column":4},"end":{"line":175,"column":37}},"56":{"start":{"line":187,"column":4},"end":{"line":187,"column":45}},"57":{"start":{"line":189,"column":4},"end":{"line":189,"column":30}},"58":{"start":{"line":190,"column":4},"end":{"line":190,"column":62}},"59":{"start":{"line":191,"column":4},"end":{"line":191,"column":73}},"60":{"start":{"line":195,"column":4},"end":{"line":195,"column":98}},"61":{"start":{"line":197,"column":4},"end":{"line":197,"column":57}},"62":{"start":{"line":198,"column":4},"end":{"line":198,"column":52}},"63":{"start":{"line":199,"column":4},"end":{"line":199,"column":79}},"64":{"start":{"line":200,"column":4},"end":{"line":200,"column":6717}},"65":{"start":{"line":202,"column":4},"end":{"line":202,"column":77}},"66":{"start":{"line":204,"column":4},"end":{"line":204,"column":6837}},"67":{"start":{"line":205,"column":6},"end":{"line":205,"column":76}},"68":{"start":{"line":207,"column":4},"end":{"line":207,"column":22}},"69":{"start":{"line":208,"column":4},"end":{"line":208,"column":29}},"70":{"start":{"line":214,"column":4},"end":{"line":214,"column":20}},"71":{"start":{"line":218,"column":4},"end":{"line":218,"column":26}},"72":{"start":{"line":224,"column":4},"end":{"line":224,"column":57}},"73":{"start":{"line":225,"column":4},"end":{"line":225,"column":79}},"74":{"start":{"line":229,"column":4},"end":{"line":229,"column":70}},"75":{"start":{"line":233,"column":4},"end":{"line":233,"column":57}},"76":{"start":{"line":234,"column":4},"end":{"line":234,"column":7880}}},"branchMap":{"1":{"line":25,"type":"if","locations":[{"start":{"line":25,"column":4},"end":{"line":25,"column":4}},{"start":{"line":25,"column":4},"end":{"line":25,"column":4}}]},"2":{"line":32,"type":"if","locations":[{"start":{"line":32,"column":4},"end":{"line":32,"column":4}},{"start":{"line":32,"column":4},"end":{"line":32,"column":4}}]},"3":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":37,"column":4}},{"start":{"line":37,"column":4},"end":{"line":37,"column":4}}]},"4":{"line":41,"type":"if","locations":[{"start":{"line":41,"column":4},"end":{"line":41,"column":4}},{"start":{"line":41,"column":4},"end":{"line":41,"column":4}}]},"5":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":45,"column":4}},{"start":{"line":45,"column":4},"end":{"line":45,"column":4}}]},"6":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":54,"column":4}},{"start":{"line":54,"column":4},"end":{"line":54,"column":4}}]},"7":{"line":58,"type":"if","locations":[{"start":{"line":58,"column":4},"end":{"line":58,"column":4}},{"start":{"line":58,"column":4},"end":{"line":58,"column":4}}]},"8":{"line":102,"type":"if","locations":[{"start":{"line":102,"column":4},"end":{"line":102,"column":4}},{"start":{"line":102,"column":4},"end":{"line":102,"column":4}}]},"9":{"line":126,"type":"if","locations":[{"start":{"line":126,"column":4},"end":{"line":126,"column":4}},{"start":{"line":126,"column":4},"end":{"line":126,"column":4}}]},"10":{"line":151,"type":"if","locations":[{"start":{"line":151,"column":4},"end":{"line":151,"column":4}},{"start":{"line":151,"column":4},"end":{"line":151,"column":4}}]},"11":{"line":195,"type":"if","locations":[{"start":{"line":195,"column":4},"end":{"line":195,"column":4}},{"start":{"line":195,"column":4},"end":{"line":195,"column":4}}]}}},"src/core/ElasticDAOFactory.sol":{"l":{"21":0,"22":0,"26":3,"27":3,"46":57,"50":57,"52":57,"53":57,"54":57,"58":0,"59":0,"63":0,"65":0,"66":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAOFactory.sol","s":{"1":0,"2":3,"3":3,"4":57,"5":57,"6":57,"7":57,"8":57,"9":0,"10":0,"11":0,"12":0,"13":0},"b":{"1":[0,0]},"f":{"1":0,"2":3,"3":57,"4":0,"5":0,"6":0},"fnMap":{"1":{"name":"onlyDeployer","line":20,"loc":{"start":{"line":20,"column":2},"end":{"line":23,"column":2}}},"2":{"name":"constructor","line":25,"loc":{"start":{"line":25,"column":2},"end":{"line":28,"column":2}}},"3":{"name":"deployDAOAndToken","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":55,"column":2}}},"4":{"name":"updateFeeAddress","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":60,"column":2}}},"5":{"name":"collectFees","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":67,"column":2}}},"6":{"name":null,"line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":71,"column":31}}}},"statementMap":{"1":{"start":{"line":21,"column":4},"end":{"line":21,"column":63}},"2":{"start":{"line":26,"column":4},"end":{"line":26,"column":24}},"3":{"start":{"line":27,"column":4},"end":{"line":27,"column":49}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":1354}},"5":{"start":{"line":50,"column":4},"end":{"line":50,"column":96}},"6":{"start":{"line":52,"column":4},"end":{"line":52,"column":49}},"7":{"start":{"line":53,"column":4},"end":{"line":53,"column":55}},"8":{"start":{"line":54,"column":4},"end":{"line":54,"column":41}},"9":{"start":{"line":58,"column":4},"end":{"line":58,"column":37}},"10":{"start":{"line":59,"column":4},"end":{"line":59,"column":40}},"11":{"start":{"line":63,"column":4},"end":{"line":63,"column":42}},"12":{"start":{"line":65,"column":4},"end":{"line":65,"column":30}},"13":{"start":{"line":66,"column":4},"end":{"line":66,"column":51}}},"branchMap":{"1":{"line":21,"type":"if","locations":[{"start":{"line":21,"column":4},"end":{"line":21,"column":4}},{"start":{"line":21,"column":4},"end":{"line":21,"column":4}}]}}},"src/interfaces/IElasticToken.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IElasticToken.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/interfaces/IERC20.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IERC20.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/libraries/ElasticMath.sol":{"l":{"18":4,"42":4,"44":4,"47":4,"50":4,"53":4,"56":4,"59":4,"62":4,"65":4,"68":4,"76":15,"94":7,"107":4,"124":270,"134":585,"144":92},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/ElasticMath.sol","s":{"1":4,"2":4,"3":4,"4":4,"5":4,"6":4,"7":4,"8":4,"9":4,"10":4,"11":4,"12":15,"13":7,"14":4,"15":270,"16":585,"17":92},"b":{},"f":{"1":4,"2":4,"3":15,"4":7,"5":4,"6":270,"7":585,"8":92},"fnMap":{"1":{"name":"capitalDelta","line":13,"loc":{"start":{"line":13,"column":2},"end":{"line":19,"column":2}}},"2":{"name":"deltaE","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":69,"column":2}}},"3":{"name":"lambdaFromT","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":77,"column":2}}},"4":{"name":"mDash","line":89,"loc":{"start":{"line":89,"column":2},"end":{"line":95,"column":2}}},"5":{"name":"revamp","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":108,"column":2}}},"6":{"name":"t","line":119,"loc":{"start":{"line":119,"column":2},"end":{"line":125,"column":2}}},"7":{"name":"wmul","line":133,"loc":{"start":{"line":133,"column":2},"end":{"line":135,"column":2}}},"8":{"name":"wdiv","line":143,"loc":{"start":{"line":143,"column":2},"end":{"line":145,"column":2}}}},"statementMap":{"1":{"start":{"line":18,"column":4},"end":{"line":18,"column":53}},"2":{"start":{"line":42,"column":4},"end":{"line":42,"column":58}},"3":{"start":{"line":44,"column":4},"end":{"line":44,"column":42}},"4":{"start":{"line":47,"column":4},"end":{"line":47,"column":34}},"5":{"start":{"line":50,"column":4},"end":{"line":50,"column":31}},"6":{"start":{"line":53,"column":4},"end":{"line":53,"column":44}},"7":{"start":{"line":56,"column":4},"end":{"line":56,"column":26}},"8":{"start":{"line":59,"column":4},"end":{"line":59,"column":35}},"9":{"start":{"line":62,"column":4},"end":{"line":62,"column":34}},"10":{"start":{"line":65,"column":4},"end":{"line":65,"column":27}},"11":{"start":{"line":68,"column":4},"end":{"line":68,"column":22}},"12":{"start":{"line":76,"column":4},"end":{"line":76,"column":30}},"13":{"start":{"line":94,"column":4},"end":{"line":94,"column":44}},"14":{"start":{"line":107,"column":4},"end":{"line":107,"column":57}},"15":{"start":{"line":124,"column":4},"end":{"line":124,"column":35}},"16":{"start":{"line":134,"column":4},"end":{"line":134,"column":90}},"17":{"start":{"line":144,"column":4},"end":{"line":144,"column":72}}},"branchMap":{}},"src/libraries/SafeMath.sol":{"l":{"29":2700,"30":2700,"32":2700,"46":31,"64":31,"65":31,"67":31,"84":745,"85":0,"88":745,"89":745,"91":745,"107":0,"127":0,"128":0,"131":0,"147":0,"167":0,"168":0,"172":4,"173":0,"175":0,"177":0,"179":4,"180":4,"181":4,"189":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/SafeMath.sol","s":{"1":2700,"2":2700,"3":2700,"4":31,"5":31,"6":31,"7":31,"8":745,"9":0,"10":745,"11":745,"12":745,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":4,"21":0,"22":4,"23":0,"24":4,"25":0,"26":4,"27":4,"28":68,"29":4,"30":0},"b":{"1":[2700,0],"2":[31,0],"3":[0,745],"4":[745,0],"5":[0,0],"6":[0,0],"7":[0,4],"8":[0,4],"9":[0,4]},"f":{"1":2700,"2":31,"3":31,"4":745,"5":0,"6":0,"7":0,"8":0,"9":4,"10":0},"fnMap":{"1":{"name":"add","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":33,"column":2}}},"2":{"name":"sub","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":2}}},"3":{"name":"sub","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":68,"column":2}}},"4":{"name":"mul","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":92,"column":2}}},"5":{"name":"div","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":108,"column":2}}},"6":{"name":"div","line":122,"loc":{"start":{"line":122,"column":2},"end":{"line":132,"column":2}}},"7":{"name":"mod","line":146,"loc":{"start":{"line":146,"column":2},"end":{"line":148,"column":2}}},"8":{"name":"mod","line":162,"loc":{"start":{"line":162,"column":2},"end":{"line":169,"column":2}}},"9":{"name":"pow","line":171,"loc":{"start":{"line":171,"column":2},"end":{"line":183,"column":2}}},"10":{"name":"max","line":188,"loc":{"start":{"line":188,"column":2},"end":{"line":190,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":21}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":49}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":12}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":54}},"5":{"start":{"line":64,"column":4},"end":{"line":64,"column":32}},"6":{"start":{"line":65,"column":4},"end":{"line":65,"column":21}},"7":{"start":{"line":67,"column":4},"end":{"line":67,"column":12}},"8":{"start":{"line":84,"column":4},"end":{"line":84,"column":2356}},"9":{"start":{"line":85,"column":6},"end":{"line":85,"column":14}},"10":{"start":{"line":88,"column":4},"end":{"line":88,"column":21}},"11":{"start":{"line":89,"column":4},"end":{"line":89,"column":59}},"12":{"start":{"line":91,"column":4},"end":{"line":91,"column":12}},"13":{"start":{"line":107,"column":4},"end":{"line":107,"column":50}},"14":{"start":{"line":127,"column":4},"end":{"line":127,"column":31}},"15":{"start":{"line":128,"column":4},"end":{"line":128,"column":21}},"16":{"start":{"line":131,"column":4},"end":{"line":131,"column":12}},"17":{"start":{"line":147,"column":4},"end":{"line":147,"column":48}},"18":{"start":{"line":167,"column":4},"end":{"line":167,"column":32}},"19":{"start":{"line":168,"column":4},"end":{"line":168,"column":16}},"20":{"start":{"line":172,"column":4},"end":{"line":172,"column":5030}},"21":{"start":{"line":173,"column":6},"end":{"line":173,"column":14}},"22":{"start":{"line":174,"column":11},"end":{"line":174,"column":5078}},"23":{"start":{"line":175,"column":6},"end":{"line":175,"column":17}},"24":{"start":{"line":176,"column":11},"end":{"line":176,"column":5129}},"25":{"start":{"line":177,"column":6},"end":{"line":177,"column":14}},"26":{"start":{"line":179,"column":6},"end":{"line":179,"column":22}},"27":{"start":{"line":180,"column":6},"end":{"line":180,"column":71}},"28":{"start":{"line":180,"column":55},"end":{"line":180,"column":70}},"29":{"start":{"line":181,"column":6},"end":{"line":181,"column":14}},"30":{"start":{"line":189,"column":4},"end":{"line":189,"column":25}}},"branchMap":{"1":{"line":30,"type":"if","locations":[{"start":{"line":30,"column":4},"end":{"line":30,"column":4}},{"start":{"line":30,"column":4},"end":{"line":30,"column":4}}]},"2":{"line":64,"type":"if","locations":[{"start":{"line":64,"column":4},"end":{"line":64,"column":4}},{"start":{"line":64,"column":4},"end":{"line":64,"column":4}}]},"3":{"line":84,"type":"if","locations":[{"start":{"line":84,"column":4},"end":{"line":84,"column":4}},{"start":{"line":84,"column":4},"end":{"line":84,"column":4}}]},"4":{"line":89,"type":"if","locations":[{"start":{"line":89,"column":4},"end":{"line":89,"column":4}},{"start":{"line":89,"column":4},"end":{"line":89,"column":4}}]},"5":{"line":127,"type":"if","locations":[{"start":{"line":127,"column":4},"end":{"line":127,"column":4}},{"start":{"line":127,"column":4},"end":{"line":127,"column":4}}]},"6":{"line":167,"type":"if","locations":[{"start":{"line":167,"column":4},"end":{"line":167,"column":4}},{"start":{"line":167,"column":4},"end":{"line":167,"column":4}}]},"7":{"line":172,"type":"if","locations":[{"start":{"line":172,"column":4},"end":{"line":172,"column":4}},{"start":{"line":172,"column":4},"end":{"line":172,"column":4}}]},"8":{"line":174,"type":"if","locations":[{"start":{"line":174,"column":11},"end":{"line":174,"column":11}},{"start":{"line":174,"column":11},"end":{"line":174,"column":11}}]},"9":{"line":176,"type":"if","locations":[{"start":{"line":176,"column":11},"end":{"line":176,"column":11}},{"start":{"line":176,"column":11},"end":{"line":176,"column":11}}]}}},"src/models/Balance.sol":{"l":{"35":0,"36":0,"37":0,"38":0,"41":0,"42":0,"44":0,"51":0,"52":0,"53":0,"55":0,"64":0,"72":264,"74":264,"80":264,"85":264,"86":264,"87":264,"88":264,"89":264,"90":264,"91":264,"92":264},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Balance.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":264,"14":264,"15":264,"16":264,"17":264,"18":264,"19":264,"20":264,"21":264,"22":264,"23":264},"b":{"1":[264,0]},"f":{"1":0,"2":0,"3":264},"fnMap":{"1":{"name":"deserialize","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":56,"column":2}}},"2":{"name":"exists","line":58,"loc":{"start":{"line":58,"column":2},"end":{"line":65,"column":2}}},"3":{"name":"serialize","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":95,"column":2}}}},"statementMap":{"1":{"start":{"line":35,"column":4},"end":{"line":35,"column":36}},"2":{"start":{"line":36,"column":4},"end":{"line":36,"column":32}},"3":{"start":{"line":37,"column":4},"end":{"line":37,"column":38}},"4":{"start":{"line":38,"column":4},"end":{"line":38,"column":1214}},"5":{"start":{"line":41,"column":4},"end":{"line":41,"column":24}},"6":{"start":{"line":42,"column":4},"end":{"line":42,"column":36}},"7":{"start":{"line":44,"column":4},"end":{"line":44,"column":1419}},"8":{"start":{"line":51,"column":4},"end":{"line":51,"column":36}},"9":{"start":{"line":52,"column":4},"end":{"line":52,"column":34}},"10":{"start":{"line":53,"column":4},"end":{"line":53,"column":34}},"11":{"start":{"line":55,"column":4},"end":{"line":55,"column":17}},"12":{"start":{"line":64,"column":4},"end":{"line":64,"column":15}},"13":{"start":{"line":72,"column":4},"end":{"line":72,"column":71}},"14":{"start":{"line":74,"column":4},"end":{"line":74,"column":2167}},"15":{"start":{"line":80,"column":4},"end":{"line":80,"column":2333}},"16":{"start":{"line":85,"column":4},"end":{"line":85,"column":57}},"17":{"start":{"line":86,"column":4},"end":{"line":86,"column":54}},"18":{"start":{"line":87,"column":4},"end":{"line":87,"column":50}},"19":{"start":{"line":88,"column":4},"end":{"line":88,"column":34}},"20":{"start":{"line":89,"column":4},"end":{"line":89,"column":34}},"21":{"start":{"line":90,"column":4},"end":{"line":90,"column":50}},"22":{"start":{"line":91,"column":4},"end":{"line":91,"column":42}},"23":{"start":{"line":92,"column":4},"end":{"line":92,"column":2815}}},"branchMap":{"1":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":72,"column":4}},{"start":{"line":72,"column":4},"end":{"line":72,"column":4}}]}}},"src/models/BalanceMultipliers.sol":{"l":{"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"45":0,"53":264,"55":264,"59":264,"60":264},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/BalanceMultipliers.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":264,"10":264,"11":264,"12":264},"b":{"1":[264,0]},"f":{"1":0,"2":0,"3":264},"fnMap":{"1":{"name":"deserialize","line":26,"loc":{"start":{"line":26,"column":2},"end":{"line":38,"column":2}}},"2":{"name":"exists","line":40,"loc":{"start":{"line":40,"column":2},"end":{"line":46,"column":2}}},"3":{"name":"serialize","line":52,"loc":{"start":{"line":52,"column":2},"end":{"line":61,"column":2}}}},"statementMap":{"1":{"start":{"line":31,"column":4},"end":{"line":31,"column":36}},"2":{"start":{"line":32,"column":4},"end":{"line":32,"column":32}},"3":{"start":{"line":33,"column":4},"end":{"line":33,"column":32}},"4":{"start":{"line":34,"column":4},"end":{"line":34,"column":76}},"5":{"start":{"line":35,"column":4},"end":{"line":35,"column":76}},"6":{"start":{"line":36,"column":4},"end":{"line":36,"column":24}},"7":{"start":{"line":37,"column":4},"end":{"line":37,"column":17}},"8":{"start":{"line":45,"column":4},"end":{"line":45,"column":15}},"9":{"start":{"line":53,"column":4},"end":{"line":53,"column":90}},"10":{"start":{"line":55,"column":4},"end":{"line":55,"column":1650}},"11":{"start":{"line":59,"column":4},"end":{"line":59,"column":81}},"12":{"start":{"line":60,"column":4},"end":{"line":60,"column":81}}},"branchMap":{"1":{"line":53,"type":"if","locations":[{"start":{"line":53,"column":4},"end":{"line":53,"column":4}},{"start":{"line":53,"column":4},"end":{"line":53,"column":4}}]}}},"src/models/DAO.sol":{"l":{"32":460,"33":460,"35":460,"36":460,"37":460,"38":460,"41":460,"50":0,"54":171,"64":124,"72":141,"77":141,"78":141,"79":141,"81":141,"82":84,"83":252,"84":252,"88":141,"92":460},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/DAO.sol","s":{"1":460,"2":460,"3":460,"4":460,"5":460,"6":460,"7":460,"8":0,"9":171,"10":124,"11":141,"12":141,"13":141,"14":141,"15":141,"16":84,"17":252,"18":252,"19":141,"20":460},"b":{"1":[460,0],"2":[141,0],"3":[84,57]},"f":{"1":460,"2":0,"3":171,"4":124,"5":141,"6":460},"fnMap":{"1":{"name":"deserialize","line":27,"loc":{"start":{"line":27,"column":2},"end":{"line":42,"column":2}}},"2":{"name":"exists","line":49,"loc":{"start":{"line":49,"column":2},"end":{"line":51,"column":2}}},"3":{"name":"getSummoner","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":55,"column":2}}},"4":{"name":"isSummoner","line":63,"loc":{"start":{"line":63,"column":2},"end":{"line":65,"column":2}}},"5":{"name":"serialize","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":89,"column":2}}},"6":{"name":"_exists","line":91,"loc":{"start":{"line":91,"column":2},"end":{"line":93,"column":2}}}},"statementMap":{"1":{"start":{"line":32,"column":4},"end":{"line":32,"column":22}},"2":{"start":{"line":33,"column":4},"end":{"line":33,"column":32}},"3":{"start":{"line":35,"column":4},"end":{"line":35,"column":903}},"4":{"start":{"line":36,"column":6},"end":{"line":36,"column":66}},"5":{"start":{"line":37,"column":6},"end":{"line":37,"column":90}},"6":{"start":{"line":38,"column":6},"end":{"line":38,"column":72}},"7":{"start":{"line":41,"column":4},"end":{"line":41,"column":17}},"8":{"start":{"line":50,"column":4},"end":{"line":50,"column":25}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":76}},"10":{"start":{"line":64,"column":4},"end":{"line":64,"column":82}},"11":{"start":{"line":72,"column":4},"end":{"line":72,"column":2142}},"12":{"start":{"line":77,"column":4},"end":{"line":77,"column":69}},"13":{"start":{"line":78,"column":4},"end":{"line":78,"column":93}},"14":{"start":{"line":79,"column":4},"end":{"line":79,"column":75}},"15":{"start":{"line":81,"column":4},"end":{"line":81,"column":2530}},"16":{"start":{"line":82,"column":6},"end":{"line":82,"column":2597}},"17":{"start":{"line":83,"column":8},"end":{"line":83,"column":89}},"18":{"start":{"line":84,"column":8},"end":{"line":84,"column":90}},"19":{"start":{"line":88,"column":4},"end":{"line":88,"column":62}},"20":{"start":{"line":92,"column":4},"end":{"line":92,"column":58}}},"branchMap":{"1":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":35,"column":4}},{"start":{"line":35,"column":4},"end":{"line":35,"column":4}}]},"2":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":72,"column":4}},{"start":{"line":72,"column":4},"end":{"line":72,"column":4}}]},"3":{"line":81,"type":"if","locations":[{"start":{"line":81,"column":4},"end":{"line":81,"column":4}},{"start":{"line":81,"column":4},"end":{"line":81,"column":4}}]}}},"src/models/Ecosystem.sol":{"l":{"35":1653,"36":1653,"37":1653,"40":1653,"43":1653,"46":1653,"49":1653,"50":1653,"53":1653,"56":1653,"61":1653,"70":1,"78":162,"80":162,"87":162,"91":162,"95":162,"99":162,"100":162,"104":162,"108":162,"113":162,"117":1816},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Ecosystem.sol","s":{"1":1653,"2":1653,"3":1653,"4":1653,"5":1653,"6":1653,"7":1653,"8":1653,"9":1653,"10":1653,"11":1653,"12":1,"13":162,"14":162,"15":162,"16":162,"17":162,"18":162,"19":162,"20":162,"21":162,"22":162,"23":1816},"b":{"1":[1653,0],"2":[162,0]},"f":{"1":1653,"2":1,"3":162,"4":1816},"fnMap":{"1":{"name":"deserialize","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":62,"column":2}}},"2":{"name":"exists","line":69,"loc":{"start":{"line":69,"column":2},"end":{"line":71,"column":2}}},"3":{"name":"serialize","line":77,"loc":{"start":{"line":77,"column":2},"end":{"line":114,"column":2}}},"4":{"name":"_exists","line":116,"loc":{"start":{"line":116,"column":2},"end":{"line":118,"column":2}}}},"statementMap":{"1":{"start":{"line":35,"column":4},"end":{"line":35,"column":1142}},"2":{"start":{"line":36,"column":6},"end":{"line":36,"column":36}},"3":{"start":{"line":37,"column":6},"end":{"line":37,"column":1217}},"4":{"start":{"line":40,"column":6},"end":{"line":40,"column":1345}},"5":{"start":{"line":43,"column":6},"end":{"line":43,"column":1495}},"6":{"start":{"line":46,"column":6},"end":{"line":46,"column":1623}},"7":{"start":{"line":49,"column":6},"end":{"line":49,"column":49}},"8":{"start":{"line":50,"column":6},"end":{"line":50,"column":1795}},"9":{"start":{"line":53,"column":6},"end":{"line":53,"column":1929}},"10":{"start":{"line":56,"column":6},"end":{"line":56,"column":2065}},"11":{"start":{"line":61,"column":4},"end":{"line":61,"column":17}},"12":{"start":{"line":70,"column":4},"end":{"line":70,"column":31}},"13":{"start":{"line":78,"column":4},"end":{"line":78,"column":50}},"14":{"start":{"line":80,"column":4},"end":{"line":80,"column":2684}},"15":{"start":{"line":87,"column":4},"end":{"line":87,"column":2891}},"16":{"start":{"line":91,"column":4},"end":{"line":91,"column":3018}},"17":{"start":{"line":95,"column":4},"end":{"line":95,"column":3167}},"18":{"start":{"line":99,"column":4},"end":{"line":99,"column":98}},"19":{"start":{"line":100,"column":4},"end":{"line":100,"column":3395}},"20":{"start":{"line":104,"column":4},"end":{"line":104,"column":3528}},"21":{"start":{"line":108,"column":4},"end":{"line":108,"column":3663}},"22":{"start":{"line":113,"column":4},"end":{"line":113,"column":68}},"23":{"start":{"line":117,"column":4},"end":{"line":117,"column":64}}},"branchMap":{"1":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":35,"column":4}},{"start":{"line":35,"column":4},"end":{"line":35,"column":4}}]},"2":{"line":80,"type":"if","locations":[{"start":{"line":80,"column":4},"end":{"line":80,"column":4}},{"start":{"line":80,"column":4},"end":{"line":80,"column":4}}]}}},"src/models/EternalModel.sol":{"l":{"30":6818,"37":1932,"39":1932,"46":11742,"53":4019,"60":0,"67":0,"69":0,"81":4374,"89":789,"97":1386,"105":1284,"113":0,"121":0,"132":0,"139":0,"141":0,"148":0,"155":0,"162":0,"169":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/EternalModel.sol","s":{"1":6818,"2":1932,"3":1932,"4":11742,"5":4019,"6":0,"7":0,"8":0,"9":4374,"10":789,"11":1386,"12":1284,"13":0,"14":0,"15":0},"b":{"1":[1932,0],"2":[0,0],"3":[0,0]},"f":{"1":6818,"2":1932,"3":11742,"4":4019,"5":0,"6":0,"7":4374,"8":789,"9":1386,"10":1284,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0},"fnMap":{"1":{"name":"getUint","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":31,"column":2}}},"2":{"name":"getString","line":36,"loc":{"start":{"line":36,"column":2},"end":{"line":40,"column":2}}},"3":{"name":"getAddress","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":2}}},"4":{"name":"getBool","line":52,"loc":{"start":{"line":52,"column":2},"end":{"line":54,"column":2}}},"5":{"name":"getInt","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":61,"column":2}}},"6":{"name":"getBytes","line":66,"loc":{"start":{"line":66,"column":2},"end":{"line":70,"column":2}}},"7":{"name":"setUint","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":82,"column":2}}},"8":{"name":"setString","line":88,"loc":{"start":{"line":88,"column":2},"end":{"line":90,"column":2}}},"9":{"name":"setAddress","line":96,"loc":{"start":{"line":96,"column":2},"end":{"line":98,"column":2}}},"10":{"name":"setBool","line":104,"loc":{"start":{"line":104,"column":2},"end":{"line":106,"column":2}}},"11":{"name":"setInt","line":112,"loc":{"start":{"line":112,"column":2},"end":{"line":114,"column":2}}},"12":{"name":"setBytes","line":120,"loc":{"start":{"line":120,"column":2},"end":{"line":122,"column":2}}},"13":{"name":"deleteUint","line":131,"loc":{"start":{"line":131,"column":2},"end":{"line":133,"column":2}}},"14":{"name":"deleteString","line":138,"loc":{"start":{"line":138,"column":2},"end":{"line":142,"column":2}}},"15":{"name":"deleteAddress","line":147,"loc":{"start":{"line":147,"column":2},"end":{"line":149,"column":2}}},"16":{"name":"deleteBool","line":154,"loc":{"start":{"line":154,"column":2},"end":{"line":156,"column":2}}},"17":{"name":"deleteInt","line":161,"loc":{"start":{"line":161,"column":2},"end":{"line":163,"column":2}}},"18":{"name":"deleteBytes","line":168,"loc":{"start":{"line":168,"column":2},"end":{"line":170,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":30}},"2":{"start":{"line":37,"column":4},"end":{"line":37,"column":52}},"3":{"start":{"line":39,"column":4},"end":{"line":39,"column":32}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":33}},"5":{"start":{"line":53,"column":4},"end":{"line":53,"column":30}},"6":{"start":{"line":60,"column":4},"end":{"line":60,"column":29}},"7":{"start":{"line":67,"column":4},"end":{"line":67,"column":52}},"8":{"start":{"line":69,"column":4},"end":{"line":69,"column":31}},"9":{"start":{"line":81,"column":4},"end":{"line":81,"column":31}},"10":{"start":{"line":89,"column":4},"end":{"line":89,"column":33}},"11":{"start":{"line":97,"column":4},"end":{"line":97,"column":34}},"12":{"start":{"line":105,"column":4},"end":{"line":105,"column":31}},"13":{"start":{"line":113,"column":4},"end":{"line":113,"column":30}},"14":{"start":{"line":121,"column":4},"end":{"line":121,"column":32}},"15":{"start":{"line":139,"column":4},"end":{"line":139,"column":52}}},"branchMap":{"1":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":37,"column":4}},{"start":{"line":37,"column":4},"end":{"line":37,"column":4}}]},"2":{"line":67,"type":"if","locations":[{"start":{"line":67,"column":4},"end":{"line":67,"column":4}},{"start":{"line":67,"column":4},"end":{"line":67,"column":4}}]},"3":{"line":139,"type":"if","locations":[{"start":{"line":139,"column":4},"end":{"line":139,"column":4}},{"start":{"line":139,"column":4},"end":{"line":139,"column":4}}]}}},"src/models/Token.sol":{"l":{"42":740,"43":740,"45":740,"46":736,"47":736,"48":736,"49":736,"50":736,"51":736,"52":736,"53":736,"54":736,"55":736,"58":740,"62":64,"66":264,"68":264,"69":264,"77":324,"84":324,"85":324,"86":324,"87":324,"88":324,"89":324,"90":324,"91":324,"93":324,"99":177,"103":879},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Token.sol","s":{"1":740,"2":740,"3":740,"4":736,"5":736,"6":736,"7":736,"8":736,"9":736,"10":736,"11":736,"12":736,"13":736,"14":740,"15":64,"16":264,"17":264,"18":264,"19":324,"20":324,"21":324,"22":324,"23":324,"24":324,"25":324,"26":324,"27":324,"28":324,"29":177,"30":879},"b":{"1":[736,4],"2":[264,0],"3":[324,0]},"f":{"1":740,"2":64,"3":264,"4":324,"5":177,"6":879},"fnMap":{"1":{"name":"deserialize","line":37,"loc":{"start":{"line":37,"column":2},"end":{"line":59,"column":2}}},"2":{"name":"exists","line":61,"loc":{"start":{"line":61,"column":2},"end":{"line":63,"column":2}}},"3":{"name":"incrementCounter","line":65,"loc":{"start":{"line":65,"column":2},"end":{"line":70,"column":2}}},"4":{"name":"serialize","line":76,"loc":{"start":{"line":76,"column":2},"end":{"line":94,"column":2}}},"5":{"name":"updateNumberOfTokenHolders","line":96,"loc":{"start":{"line":96,"column":2},"end":{"line":100,"column":2}}},"6":{"name":"_exists","line":102,"loc":{"start":{"line":102,"column":2},"end":{"line":104,"column":2}}}},"statementMap":{"1":{"start":{"line":42,"column":4},"end":{"line":42,"column":22}},"2":{"start":{"line":43,"column":4},"end":{"line":43,"column":32}},"3":{"start":{"line":45,"column":4},"end":{"line":45,"column":1269}},"4":{"start":{"line":46,"column":6},"end":{"line":46,"column":70}},"5":{"start":{"line":47,"column":6},"end":{"line":47,"column":64}},"6":{"start":{"line":48,"column":6},"end":{"line":48,"column":76}},"7":{"start":{"line":49,"column":6},"end":{"line":49,"column":58}},"8":{"start":{"line":50,"column":6},"end":{"line":50,"column":68}},"9":{"start":{"line":51,"column":6},"end":{"line":51,"column":58}},"10":{"start":{"line":52,"column":6},"end":{"line":52,"column":90}},"11":{"start":{"line":53,"column":6},"end":{"line":53,"column":66}},"12":{"start":{"line":54,"column":6},"end":{"line":54,"column":96}},"13":{"start":{"line":55,"column":6},"end":{"line":55,"column":70}},"14":{"start":{"line":58,"column":4},"end":{"line":58,"column":17}},"15":{"start":{"line":62,"column":4},"end":{"line":62,"column":25}},"16":{"start":{"line":66,"column":4},"end":{"line":66,"column":65}},"17":{"start":{"line":68,"column":4},"end":{"line":68,"column":76}},"18":{"start":{"line":69,"column":4},"end":{"line":69,"column":83}},"19":{"start":{"line":77,"column":4},"end":{"line":77,"column":2629}},"20":{"start":{"line":84,"column":4},"end":{"line":84,"column":69}},"21":{"start":{"line":85,"column":4},"end":{"line":85,"column":73}},"22":{"start":{"line":86,"column":4},"end":{"line":86,"column":67}},"23":{"start":{"line":87,"column":4},"end":{"line":87,"column":79}},"24":{"start":{"line":88,"column":4},"end":{"line":88,"column":61}},"25":{"start":{"line":89,"column":4},"end":{"line":89,"column":71}},"26":{"start":{"line":90,"column":4},"end":{"line":90,"column":61}},"27":{"start":{"line":91,"column":4},"end":{"line":91,"column":93}},"28":{"start":{"line":93,"column":4},"end":{"line":93,"column":62}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":92}},"30":{"start":{"line":103,"column":4},"end":{"line":103,"column":58}}},"branchMap":{"1":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":45,"column":4}},{"start":{"line":45,"column":4},"end":{"line":45,"column":4}}]},"2":{"line":66,"type":"if","locations":[{"start":{"line":66,"column":4},"end":{"line":66,"column":4}},{"start":{"line":66,"column":4},"end":{"line":66,"column":4}}]},"3":{"line":77,"type":"if","locations":[{"start":{"line":77,"column":4},"end":{"line":77,"column":4}},{"start":{"line":77,"column":4},"end":{"line":77,"column":4}}]}}},"src/models/TokenHolder.sol":{"l":{"29":280,"30":280,"31":280,"33":280,"34":103,"35":103,"38":280,"46":0,"54":264,"56":264,"57":264,"59":264,"67":280},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/TokenHolder.sol","s":{"1":280,"2":280,"3":280,"4":280,"5":103,"6":103,"7":280,"8":0,"9":264,"10":264,"11":264,"12":264,"13":280},"b":{"1":[103,177],"2":[264,0]},"f":{"1":280,"2":0,"3":264,"4":280},"fnMap":{"1":{"name":"deserialize","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":39,"column":2}}},"2":{"name":"exists","line":41,"loc":{"start":{"line":41,"column":2},"end":{"line":47,"column":2}}},"3":{"name":"serialize","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":60,"column":2}}},"4":{"name":"_exists","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":68,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":28}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":32}},"3":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":1003}},"5":{"start":{"line":34,"column":6},"end":{"line":34,"column":98}},"6":{"start":{"line":35,"column":6},"end":{"line":35,"column":96}},"7":{"start":{"line":38,"column":4},"end":{"line":38,"column":17}},"8":{"start":{"line":46,"column":4},"end":{"line":46,"column":48}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":71}},"10":{"start":{"line":56,"column":4},"end":{"line":56,"column":95}},"11":{"start":{"line":57,"column":4},"end":{"line":57,"column":93}},"12":{"start":{"line":59,"column":4},"end":{"line":59,"column":84}},"13":{"start":{"line":67,"column":4},"end":{"line":67,"column":74}}},"branchMap":{"1":{"line":33,"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":33,"column":4}},{"start":{"line":33,"column":4},"end":{"line":33,"column":4}}]},"2":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":54,"column":4}},{"start":{"line":54,"column":4},"end":{"line":54,"column":4}}]}}},"src/services/Configurator.sol":{"l":{"30":84,"31":84,"32":84,"33":84,"34":84,"35":84,"36":84,"37":84,"38":84,"50":84,"52":84,"55":84,"56":84,"57":84,"58":84,"59":84,"60":84,"63":84,"65":84,"66":84,"91":75,"92":75,"93":75,"94":75,"95":75,"96":75,"97":75,"98":75,"99":75,"100":75,"101":75,"103":75,"104":75,"105":75,"107":75},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/services/Configurator.sol","s":{"1":84,"2":84,"3":84,"4":84,"5":84,"6":84,"7":84,"8":84,"9":84,"10":84,"11":84,"12":84,"13":84,"14":84,"15":84,"16":84,"17":84,"18":84,"19":84,"20":84,"21":75,"22":75,"23":75,"24":75,"25":75,"26":75,"27":75,"28":75,"29":75,"30":75,"31":75,"32":75,"33":75,"34":75,"35":75},"b":{},"f":{"1":84,"2":84,"3":75},"fnMap":{"1":{"name":"buildDAO","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":39,"column":2}}},"2":{"name":"buildEcosystem","line":46,"loc":{"start":{"line":46,"column":2},"end":{"line":67,"column":2}}},"3":{"name":"buildToken","line":82,"loc":{"start":{"line":82,"column":2},"end":{"line":108,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":52}},"2":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":29}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":19}},"5":{"start":{"line":34,"column":4},"end":{"line":34,"column":45}},"6":{"start":{"line":35,"column":4},"end":{"line":35,"column":23}},"7":{"start":{"line":36,"column":4},"end":{"line":36,"column":29}},"8":{"start":{"line":37,"column":4},"end":{"line":37,"column":28}},"9":{"start":{"line":38,"column":4},"end":{"line":38,"column":14}},"10":{"start":{"line":50,"column":4},"end":{"line":50,"column":74}},"11":{"start":{"line":52,"column":4},"end":{"line":52,"column":36}},"12":{"start":{"line":55,"column":4},"end":{"line":55,"column":63}},"13":{"start":{"line":56,"column":4},"end":{"line":56,"column":85}},"14":{"start":{"line":57,"column":4},"end":{"line":57,"column":55}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":67}},"16":{"start":{"line":59,"column":4},"end":{"line":59,"column":71}},"17":{"start":{"line":60,"column":4},"end":{"line":60,"column":59}},"18":{"start":{"line":63,"column":4},"end":{"line":63,"column":63}},"19":{"start":{"line":65,"column":4},"end":{"line":65,"column":40}},"20":{"start":{"line":66,"column":4},"end":{"line":66,"column":20}},"21":{"start":{"line":91,"column":4},"end":{"line":91,"column":60}},"22":{"start":{"line":92,"column":4},"end":{"line":92,"column":21}},"23":{"start":{"line":93,"column":4},"end":{"line":93,"column":31}},"24":{"start":{"line":94,"column":4},"end":{"line":94,"column":33}},"25":{"start":{"line":95,"column":4},"end":{"line":95,"column":15}},"26":{"start":{"line":96,"column":4},"end":{"line":96,"column":19}},"27":{"start":{"line":97,"column":4},"end":{"line":97,"column":32}},"28":{"start":{"line":98,"column":4},"end":{"line":98,"column":47}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":21}},"30":{"start":{"line":100,"column":4},"end":{"line":100,"column":25}},"31":{"start":{"line":101,"column":4},"end":{"line":101,"column":97}},"32":{"start":{"line":103,"column":4},"end":{"line":103,"column":49}},"33":{"start":{"line":104,"column":4},"end":{"line":104,"column":68}},"34":{"start":{"line":105,"column":4},"end":{"line":105,"column":32}},"35":{"start":{"line":107,"column":4},"end":{"line":107,"column":16}}},"branchMap":{}},"src/tokens/ElasticGovernanceToken.sol":{"l":{"29":150,"30":150,"34":6,"35":6,"39":240,"40":240,"44":75,"45":75,"46":75,"47":75,"60":3,"79":6,"80":6,"89":13,"90":13,"91":13,"93":13,"102":1,"103":1,"107":2,"108":2,"109":2,"110":2,"112":2,"113":1,"115":1,"131":3,"132":3,"147":3,"148":3,"156":1,"166":3,"168":3,"170":3,"171":3,"181":6,"182":6,"192":3,"194":3,"209":237,"210":237,"218":1,"222":1,"226":75,"230":75,"239":1,"252":6,"253":6,"257":1,"258":1,"270":6,"271":6,"289":3,"291":3,"293":3,"294":3,"296":3,"299":3,"309":15,"310":15,"312":15,"314":15,"331":3,"332":3,"333":3,"337":6,"338":6,"339":6,"340":6,"341":6,"343":6,"345":6,"346":6,"348":6,"349":6,"350":6,"354":3,"355":3,"356":3,"360":240,"361":240,"362":240,"363":240,"364":240,"366":240,"368":240,"370":240,"371":240,"373":240,"374":240,"375":240,"377":240,"385":9,"386":9,"387":9,"389":9,"390":9,"391":9,"392":9,"394":9,"395":9,"397":9,"398":9,"400":9,"401":9,"402":9,"403":9,"404":9,"406":9,"415":264,"416":264,"417":264,"418":264,"419":264,"420":264,"421":264,"422":264,"423":264,"424":264,"425":264,"427":264,"428":249,"430":15,"433":264,"435":264,"436":264,"438":264,"447":264,"448":177,"451":264,"452":0,"459":830,"463":280,"464":280,"473":31,"474":31},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/tokens/ElasticGovernanceToken.sol","s":{"1":150,"2":6,"3":240,"4":75,"5":75,"6":75,"7":75,"8":3,"9":6,"10":6,"11":13,"12":13,"13":13,"14":13,"15":1,"16":1,"17":2,"18":2,"19":2,"20":2,"21":2,"22":1,"23":1,"24":3,"25":3,"26":3,"27":3,"28":1,"29":3,"30":3,"31":3,"32":3,"33":6,"34":6,"35":3,"36":3,"37":237,"38":237,"39":1,"40":1,"41":75,"42":75,"43":1,"44":6,"45":6,"46":1,"47":1,"48":6,"49":6,"50":3,"51":3,"52":3,"53":3,"54":3,"55":3,"56":15,"57":15,"58":15,"59":15,"60":3,"61":3,"62":3,"63":6,"64":6,"65":6,"66":6,"67":6,"68":6,"69":6,"70":6,"71":6,"72":6,"73":6,"74":3,"75":3,"76":3,"77":240,"78":240,"79":240,"80":240,"81":240,"82":240,"83":240,"84":240,"85":240,"86":240,"87":240,"88":240,"89":240,"90":9,"91":9,"92":9,"93":9,"94":9,"95":9,"96":9,"97":9,"98":9,"99":9,"100":9,"101":9,"102":9,"103":9,"104":9,"105":9,"106":9,"107":264,"108":264,"109":264,"110":264,"111":264,"112":264,"113":264,"114":264,"115":264,"116":264,"117":264,"118":264,"119":249,"120":15,"121":264,"122":264,"123":264,"124":264,"125":264,"126":177,"127":264,"128":0,"129":830,"130":280,"131":280,"132":31,"133":31},"b":{"1":[150,0],"2":[6,0],"3":[240,0],"4":[1,1],"5":[3,0],"6":[3,0],"7":[3,0],"8":[15,0],"9":[15,0],"10":[249,15],"11":[177,87],"12":[0,264]},"f":{"1":150,"2":6,"3":240,"4":75,"5":3,"6":6,"7":13,"8":1,"9":2,"10":3,"11":3,"12":1,"13":3,"14":6,"15":3,"16":237,"17":1,"18":1,"19":75,"20":75,"21":1,"22":6,"23":1,"24":6,"25":3,"26":15,"27":3,"28":6,"29":3,"30":240,"31":9,"32":264,"33":264,"34":830,"35":280,"36":31},"fnMap":{"1":{"name":"onlyDAO","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":31,"column":2}}},"2":{"name":"onlyDAOorBurner","line":33,"loc":{"start":{"line":33,"column":2},"end":{"line":36,"column":2}}},"3":{"name":"onlyDAOorMinter","line":38,"loc":{"start":{"line":38,"column":2},"end":{"line":41,"column":2}}},"4":{"name":"constructor","line":43,"loc":{"start":{"line":43,"column":2},"end":{"line":48,"column":2}}},"5":{"name":"allowance","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":61,"column":2}}},"6":{"name":"approve","line":78,"loc":{"start":{"line":78,"column":2},"end":{"line":81,"column":2}}},"7":{"name":"balanceOf","line":88,"loc":{"start":{"line":88,"column":2},"end":{"line":94,"column":2}}},"8":{"name":"balanceOfInShares","line":101,"loc":{"start":{"line":101,"column":2},"end":{"line":104,"column":2}}},"9":{"name":"balanceOfVoting","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":117,"column":2}}},"10":{"name":"burn","line":128,"loc":{"start":{"line":125,"column":2},"end":{"line":133,"column":2}}},"11":{"name":"burnShares","line":144,"loc":{"start":{"line":141,"column":2},"end":{"line":149,"column":2}}},"12":{"name":"decimals","line":155,"loc":{"start":{"line":155,"column":2},"end":{"line":157,"column":2}}},"13":{"name":"decreaseAllowance","line":165,"loc":{"start":{"line":165,"column":2},"end":{"line":172,"column":2}}},"14":{"name":"increaseAllowance","line":180,"loc":{"start":{"line":180,"column":2},"end":{"line":183,"column":2}}},"15":{"name":"mint","line":191,"loc":{"start":{"line":191,"column":2},"end":{"line":195,"column":2}}},"16":{"name":"mintShares","line":206,"loc":{"start":{"line":203,"column":2},"end":{"line":211,"column":2}}},"17":{"name":"name","line":217,"loc":{"start":{"line":217,"column":2},"end":{"line":219,"column":2}}},"18":{"name":"numberOfTokenHolders","line":221,"loc":{"start":{"line":221,"column":2},"end":{"line":223,"column":2}}},"19":{"name":"setBurner","line":225,"loc":{"start":{"line":225,"column":2},"end":{"line":227,"column":2}}},"20":{"name":"setMinter","line":229,"loc":{"start":{"line":229,"column":2},"end":{"line":231,"column":2}}},"21":{"name":"symbol","line":238,"loc":{"start":{"line":238,"column":2},"end":{"line":240,"column":2}}},"22":{"name":"totalSupply","line":251,"loc":{"start":{"line":251,"column":2},"end":{"line":254,"column":2}}},"23":{"name":"totalSupplyInShares","line":256,"loc":{"start":{"line":256,"column":2},"end":{"line":259,"column":2}}},"24":{"name":"transfer","line":269,"loc":{"start":{"line":269,"column":2},"end":{"line":272,"column":2}}},"25":{"name":"transferFrom","line":284,"loc":{"start":{"line":284,"column":2},"end":{"line":300,"column":2}}},"26":{"name":"_approve","line":304,"loc":{"start":{"line":304,"column":2},"end":{"line":315,"column":2}}},"27":{"name":"_burn","line":330,"loc":{"start":{"line":330,"column":2},"end":{"line":334,"column":2}}},"28":{"name":"_burnShares","line":336,"loc":{"start":{"line":336,"column":2},"end":{"line":351,"column":2}}},"29":{"name":"_mint","line":353,"loc":{"start":{"line":353,"column":2},"end":{"line":357,"column":2}}},"30":{"name":"_mintShares","line":359,"loc":{"start":{"line":359,"column":2},"end":{"line":378,"column":2}}},"31":{"name":"_transfer","line":380,"loc":{"start":{"line":380,"column":2},"end":{"line":407,"column":2}}},"32":{"name":"_updateBalance","line":409,"loc":{"start":{"line":409,"column":2},"end":{"line":439,"column":2}}},"33":{"name":"_updateNumberOfTokenHolders","line":441,"loc":{"start":{"line":441,"column":2},"end":{"line":454,"column":2}}},"34":{"name":"_getEcosystem","line":458,"loc":{"start":{"line":458,"column":2},"end":{"line":460,"column":2}}},"35":{"name":"_getTokenHolder","line":462,"loc":{"start":{"line":462,"column":2},"end":{"line":470,"column":2}}},"36":{"name":"_getToken","line":472,"loc":{"start":{"line":472,"column":2},"end":{"line":475,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":90}},"2":{"start":{"line":34,"column":4},"end":{"line":34,"column":90}},"3":{"start":{"line":39,"column":4},"end":{"line":39,"column":90}},"4":{"start":{"line":44,"column":4},"end":{"line":44,"column":23}},"5":{"start":{"line":45,"column":4},"end":{"line":45,"column":27}},"6":{"start":{"line":46,"column":4},"end":{"line":46,"column":49}},"7":{"start":{"line":47,"column":4},"end":{"line":47,"column":23}},"8":{"start":{"line":60,"column":4},"end":{"line":60,"column":40}},"9":{"start":{"line":79,"column":4},"end":{"line":79,"column":42}},"10":{"start":{"line":80,"column":4},"end":{"line":80,"column":15}},"11":{"start":{"line":89,"column":4},"end":{"line":89,"column":45}},"12":{"start":{"line":90,"column":4},"end":{"line":90,"column":71}},"13":{"start":{"line":91,"column":4},"end":{"line":91,"column":67}},"14":{"start":{"line":93,"column":4},"end":{"line":93,"column":12}},"15":{"start":{"line":102,"column":4},"end":{"line":102,"column":71}},"16":{"start":{"line":103,"column":4},"end":{"line":103,"column":29}},"17":{"start":{"line":107,"column":4},"end":{"line":107,"column":45}},"18":{"start":{"line":108,"column":4},"end":{"line":108,"column":71}},"19":{"start":{"line":109,"column":4},"end":{"line":109,"column":59}},"20":{"start":{"line":110,"column":4},"end":{"line":110,"column":58}},"21":{"start":{"line":112,"column":4},"end":{"line":112,"column":3845}},"22":{"start":{"line":113,"column":6},"end":{"line":113,"column":61}},"23":{"start":{"line":115,"column":6},"end":{"line":115,"column":64}},"24":{"start":{"line":131,"column":4},"end":{"line":131,"column":27}},"25":{"start":{"line":132,"column":4},"end":{"line":132,"column":15}},"26":{"start":{"line":147,"column":4},"end":{"line":147,"column":33}},"27":{"start":{"line":148,"column":4},"end":{"line":148,"column":15}},"28":{"start":{"line":156,"column":4},"end":{"line":156,"column":13}},"29":{"start":{"line":166,"column":4},"end":{"line":166,"column":92}},"30":{"start":{"line":168,"column":4},"end":{"line":168,"column":74}},"31":{"start":{"line":170,"column":4},"end":{"line":170,"column":47}},"32":{"start":{"line":171,"column":4},"end":{"line":171,"column":15}},"33":{"start":{"line":181,"column":4},"end":{"line":181,"column":95}},"34":{"start":{"line":182,"column":4},"end":{"line":182,"column":15}},"35":{"start":{"line":192,"column":4},"end":{"line":192,"column":27}},"36":{"start":{"line":194,"column":4},"end":{"line":194,"column":15}},"37":{"start":{"line":209,"column":4},"end":{"line":209,"column":33}},"38":{"start":{"line":210,"column":4},"end":{"line":210,"column":15}},"39":{"start":{"line":218,"column":4},"end":{"line":218,"column":27}},"40":{"start":{"line":222,"column":4},"end":{"line":222,"column":43}},"41":{"start":{"line":226,"column":4},"end":{"line":226,"column":19}},"42":{"start":{"line":230,"column":4},"end":{"line":230,"column":19}},"43":{"start":{"line":239,"column":4},"end":{"line":239,"column":29}},"44":{"start":{"line":252,"column":4},"end":{"line":252,"column":45}},"45":{"start":{"line":253,"column":4},"end":{"line":253,"column":56}},"46":{"start":{"line":257,"column":4},"end":{"line":257,"column":45}},"47":{"start":{"line":258,"column":4},"end":{"line":258,"column":23}},"48":{"start":{"line":270,"column":4},"end":{"line":270,"column":38}},"49":{"start":{"line":271,"column":4},"end":{"line":271,"column":15}},"50":{"start":{"line":289,"column":4},"end":{"line":289,"column":97}},"51":{"start":{"line":291,"column":4},"end":{"line":291,"column":33}},"52":{"start":{"line":293,"column":4},"end":{"line":293,"column":9096}},"53":{"start":{"line":294,"column":6},"end":{"line":294,"column":91}},"54":{"start":{"line":296,"column":6},"end":{"line":296,"column":68}},"55":{"start":{"line":299,"column":4},"end":{"line":299,"column":15}},"56":{"start":{"line":309,"column":4},"end":{"line":309,"column":72}},"57":{"start":{"line":310,"column":4},"end":{"line":310,"column":72}},"58":{"start":{"line":312,"column":4},"end":{"line":312,"column":42}},"59":{"start":{"line":314,"column":4},"end":{"line":314,"column":44}},"60":{"start":{"line":331,"column":4},"end":{"line":331,"column":45}},"61":{"start":{"line":332,"column":4},"end":{"line":332,"column":76}},"62":{"start":{"line":333,"column":4},"end":{"line":333,"column":37}},"63":{"start":{"line":337,"column":4},"end":{"line":337,"column":57}},"64":{"start":{"line":338,"column":4},"end":{"line":338,"column":59}},"65":{"start":{"line":339,"column":4},"end":{"line":339,"column":84}},"66":{"start":{"line":340,"column":4},"end":{"line":340,"column":71}},"67":{"start":{"line":341,"column":4},"end":{"line":341,"column":52}},"68":{"start":{"line":343,"column":4},"end":{"line":343,"column":72}},"69":{"start":{"line":345,"column":4},"end":{"line":345,"column":58}},"70":{"start":{"line":346,"column":4},"end":{"line":346,"column":32}},"71":{"start":{"line":348,"column":4},"end":{"line":348,"column":83}},"72":{"start":{"line":349,"column":4},"end":{"line":349,"column":44}},"73":{"start":{"line":350,"column":4},"end":{"line":350,"column":84}},"74":{"start":{"line":354,"column":4},"end":{"line":354,"column":45}},"75":{"start":{"line":355,"column":4},"end":{"line":355,"column":76}},"76":{"start":{"line":356,"column":4},"end":{"line":356,"column":37}},"77":{"start":{"line":360,"column":4},"end":{"line":360,"column":57}},"78":{"start":{"line":361,"column":4},"end":{"line":361,"column":59}},"79":{"start":{"line":362,"column":4},"end":{"line":362,"column":84}},"80":{"start":{"line":363,"column":4},"end":{"line":363,"column":71}},"81":{"start":{"line":364,"column":4},"end":{"line":364,"column":52}},"82":{"start":{"line":366,"column":4},"end":{"line":366,"column":66}},"83":{"start":{"line":368,"column":4},"end":{"line":368,"column":71}},"84":{"start":{"line":370,"column":4},"end":{"line":370,"column":58}},"85":{"start":{"line":371,"column":4},"end":{"line":371,"column":32}},"86":{"start":{"line":373,"column":4},"end":{"line":373,"column":83}},"87":{"start":{"line":374,"column":4},"end":{"line":374,"column":44}},"88":{"start":{"line":375,"column":4},"end":{"line":375,"column":84}},"89":{"start":{"line":377,"column":4},"end":{"line":377,"column":47}},"90":{"start":{"line":385,"column":4},"end":{"line":385,"column":57}},"91":{"start":{"line":386,"column":4},"end":{"line":386,"column":59}},"92":{"start":{"line":387,"column":4},"end":{"line":387,"column":84}},"93":{"start":{"line":389,"column":4},"end":{"line":389,"column":72}},"94":{"start":{"line":390,"column":4},"end":{"line":390,"column":68}},"95":{"start":{"line":391,"column":4},"end":{"line":391,"column":60}},"96":{"start":{"line":392,"column":4},"end":{"line":392,"column":56}},"97":{"start":{"line":394,"column":4},"end":{"line":394,"column":76}},"98":{"start":{"line":395,"column":4},"end":{"line":395,"column":65}},"99":{"start":{"line":397,"column":4},"end":{"line":397,"column":79}},"100":{"start":{"line":398,"column":4},"end":{"line":398,"column":74}},"101":{"start":{"line":400,"column":4},"end":{"line":400,"column":83}},"102":{"start":{"line":401,"column":4},"end":{"line":401,"column":48}},"103":{"start":{"line":402,"column":4},"end":{"line":402,"column":46}},"104":{"start":{"line":403,"column":4},"end":{"line":403,"column":92}},"105":{"start":{"line":404,"column":4},"end":{"line":404,"column":88}},"106":{"start":{"line":406,"column":4},"end":{"line":406,"column":37}},"107":{"start":{"line":415,"column":4},"end":{"line":415,"column":57}},"108":{"start":{"line":416,"column":4},"end":{"line":416,"column":35}},"109":{"start":{"line":417,"column":4},"end":{"line":417,"column":37}},"110":{"start":{"line":418,"column":4},"end":{"line":418,"column":32}},"111":{"start":{"line":419,"column":4},"end":{"line":419,"column":39}},"112":{"start":{"line":420,"column":4},"end":{"line":420,"column":23}},"113":{"start":{"line":421,"column":4},"end":{"line":421,"column":23}},"114":{"start":{"line":422,"column":4},"end":{"line":422,"column":25}},"115":{"start":{"line":423,"column":4},"end":{"line":423,"column":37}},"116":{"start":{"line":424,"column":4},"end":{"line":424,"column":51}},"117":{"start":{"line":425,"column":4},"end":{"line":425,"column":63}},"118":{"start":{"line":427,"column":4},"end":{"line":427,"column":14371}},"119":{"start":{"line":428,"column":6},"end":{"line":428,"column":74}},"120":{"start":{"line":430,"column":6},"end":{"line":430,"column":74}},"121":{"start":{"line":433,"column":4},"end":{"line":433,"column":39}},"122":{"start":{"line":435,"column":4},"end":{"line":435,"column":60}},"123":{"start":{"line":436,"column":4},"end":{"line":436,"column":62}},"124":{"start":{"line":438,"column":4},"end":{"line":438,"column":23}},"125":{"start":{"line":447,"column":4},"end":{"line":447,"column":14957}},"126":{"start":{"line":448,"column":6},"end":{"line":448,"column":96}},"127":{"start":{"line":451,"column":4},"end":{"line":451,"column":15128}},"128":{"start":{"line":452,"column":6},"end":{"line":452,"column":96}},"129":{"start":{"line":459,"column":4},"end":{"line":459,"column":67}},"130":{"start":{"line":463,"column":4},"end":{"line":463,"column":57}},"131":{"start":{"line":464,"column":4},"end":{"line":464,"column":15631}},"132":{"start":{"line":473,"column":4},"end":{"line":473,"column":57}},"133":{"start":{"line":474,"column":4},"end":{"line":474,"column":83}}},"branchMap":{"1":{"line":29,"type":"if","locations":[{"start":{"line":29,"column":4},"end":{"line":29,"column":4}},{"start":{"line":29,"column":4},"end":{"line":29,"column":4}}]},"2":{"line":34,"type":"if","locations":[{"start":{"line":34,"column":4},"end":{"line":34,"column":4}},{"start":{"line":34,"column":4},"end":{"line":34,"column":4}}]},"3":{"line":39,"type":"if","locations":[{"start":{"line":39,"column":4},"end":{"line":39,"column":4}},{"start":{"line":39,"column":4},"end":{"line":39,"column":4}}]},"4":{"line":112,"type":"if","locations":[{"start":{"line":112,"column":4},"end":{"line":112,"column":4}},{"start":{"line":112,"column":4},"end":{"line":112,"column":4}}]},"5":{"line":168,"type":"if","locations":[{"start":{"line":168,"column":4},"end":{"line":168,"column":4}},{"start":{"line":168,"column":4},"end":{"line":168,"column":4}}]},"6":{"line":289,"type":"if","locations":[{"start":{"line":289,"column":4},"end":{"line":289,"column":4}},{"start":{"line":289,"column":4},"end":{"line":289,"column":4}}]},"7":{"line":293,"type":"if","locations":[{"start":{"line":293,"column":4},"end":{"line":293,"column":4}},{"start":{"line":293,"column":4},"end":{"line":293,"column":4}}]},"8":{"line":309,"type":"if","locations":[{"start":{"line":309,"column":4},"end":{"line":309,"column":4}},{"start":{"line":309,"column":4},"end":{"line":309,"column":4}}]},"9":{"line":310,"type":"if","locations":[{"start":{"line":310,"column":4},"end":{"line":310,"column":4}},{"start":{"line":310,"column":4},"end":{"line":310,"column":4}}]},"10":{"line":427,"type":"if","locations":[{"start":{"line":427,"column":4},"end":{"line":427,"column":4}},{"start":{"line":427,"column":4},"end":{"line":427,"column":4}}]},"11":{"line":447,"type":"if","locations":[{"start":{"line":447,"column":4},"end":{"line":447,"column":4}},{"start":{"line":447,"column":4},"end":{"line":447,"column":4}}]},"12":{"line":451,"type":"if","locations":[{"start":{"line":451,"column":4},"end":{"line":451,"column":4}},{"start":{"line":451,"column":4},"end":{"line":451,"column":4}}]}}}} \ No newline at end of file diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index 5315c51..220bf2e 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -314,19 +314,6 @@ contract ElasticGovernanceToken is IElasticToken { emit Approval(_owner, _spender, _amount); } - function _balanceAt(address _account, uint256 _blockNumber) - internal - view - returns (Balance.Instance memory) - { - Token.Instance memory token = _getToken(); - TokenHolder.Instance memory tokenHolder = _getTokenHolder(_account); - Ecosystem.Instance memory ecosystem = _getEcosystem(); - Balance balanceStorage = Balance(ecosystem.balanceModelAddress); - - return balanceStorage.deserialize(_blockNumber, ecosystem, token, tokenHolder); - } - function _burn(address _account, uint256 _deltaT) internal { Token.Instance memory token = _getToken(); uint256 deltaLambda = ElasticMath.lambdaFromT(_deltaT, token.k, token.m); diff --git a/test/elasticGovernanceTokenTest.js b/test/elasticGovernanceTokenTest.js index 9c34af9..25cffa5 100644 --- a/test/elasticGovernanceTokenTest.js +++ b/test/elasticGovernanceTokenTest.js @@ -21,11 +21,17 @@ describe('ElasticDAO: Elastic Governance Token', () => { expect(allowance.toFixed()).to.equal('1'); }); - it('Should get balance of votable shares for user', async () => { + it('Should return maxVotingLambda(100) if member has more shares than are votable', async () => { const { summoner1 } = await signers(); const balanceOfVoting = await dao.elasticGovernanceToken.balanceOfVoting(summoner1.address); expect(balanceOfVoting.toFixed()).to.equal('100'); }); + it('Should get balance of votable shares for user', async () => { + const { summoner1, summoner2 } = await signers(); + await dao.elasticGovernanceToken.transfer(summoner2.address, 950); + const balanceOfVoting = await dao.elasticGovernanceToken.balanceOfVoting(summoner1.address); + expect(balanceOfVoting.toFixed()).to.equal('60'); + }); it('Should get token decimals', async () => { const decimals = await dao.elasticGovernanceToken.decimals(); From 7c7ed4d8b7181c9d2734e475fbcfdc1ce3270a93 Mon Sep 17 00:00:00 2001 From: alleycatdev Date: Mon, 1 Feb 2021 16:33:12 -0500 Subject: [PATCH 017/118] fix in tests --- test/elasticGovernanceTokenTest.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/elasticGovernanceTokenTest.js b/test/elasticGovernanceTokenTest.js index 25cffa5..a14ffb1 100644 --- a/test/elasticGovernanceTokenTest.js +++ b/test/elasticGovernanceTokenTest.js @@ -21,7 +21,7 @@ describe('ElasticDAO: Elastic Governance Token', () => { expect(allowance.toFixed()).to.equal('1'); }); - it('Should return maxVotingLambda(100) if member has more shares than are votable', async () => { + it('Should return maxVotingLambda if member has more shares than are votable', async () => { const { summoner1 } = await signers(); const balanceOfVoting = await dao.elasticGovernanceToken.balanceOfVoting(summoner1.address); expect(balanceOfVoting.toFixed()).to.equal('100'); @@ -91,7 +91,7 @@ describe('ElasticDAO: Elastic Governance Token', () => { it('Should get number of token holders', async () => { const numberOfTokenHolders = await dao.elasticGovernanceToken.numberOfTokenHolders(); - expect(numberOfTokenHolders).to.equal('3'); + expect(numberOfTokenHolders.toFixed()).to.equal('3'); }); it('Should get total supply in shares', async () => { const totalSupplyInShares = await dao.elasticGovernanceToken.totalSupplyInShares(); From d6dae5558709827fa44d9896cb02e0722edc27f9 Mon Sep 17 00:00:00 2001 From: alleycatdev Date: Tue, 2 Feb 2021 08:48:47 -0500 Subject: [PATCH 018/118] a couple last EGT tests for access tests --- test/elasticGovernanceTokenTest.js | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/test/elasticGovernanceTokenTest.js b/test/elasticGovernanceTokenTest.js index a14ffb1..9f1ccb0 100644 --- a/test/elasticGovernanceTokenTest.js +++ b/test/elasticGovernanceTokenTest.js @@ -39,7 +39,7 @@ describe('ElasticDAO: Elastic Governance Token', () => { }); it('Should increase allowance', async () => { const { summoner1, summoner2 } = await signers(); - await dao.elasticGovernanceToken.increaseAllowance(summoner2.address, '1000000000000000000'); + await dao.elasticGovernanceToken.increaseAllowance(summoner2.address, 1); const allowance = await dao.elasticGovernanceToken.allowance( summoner1.address, @@ -50,8 +50,8 @@ describe('ElasticDAO: Elastic Governance Token', () => { }); it('Should decrease allowance', async () => { const { summoner1, summoner2 } = await signers(); - await dao.elasticGovernanceToken.increaseAllowance(summoner2.address, '2000000000000000000'); - await dao.elasticGovernanceToken.decreaseAllowance(summoner2.address, '1000000000000000000'); + await dao.elasticGovernanceToken.increaseAllowance(summoner2.address, 2); + await dao.elasticGovernanceToken.decreaseAllowance(summoner2.address, 1); const allowance = await dao.elasticGovernanceToken.allowance( summoner1.address, @@ -68,6 +68,13 @@ describe('ElasticDAO: Elastic Governance Token', () => { const balance = await dao.elasticGovernanceToken.balanceOf(summoner1.address); expect(balance.toFixed()).to.equal('1011'); }); + it('Should not mint tokens if caller is not valid minter', async () => { + const { summoner1 } = await signers(); + + await expect(dao.elasticGovernanceToken.mint(summoner1.address, 1)).to.be.revertedWith( + 'ElasticDAO: Not authorized', + ); + }); it('Should burn tokens', async () => { const { agent, summoner1 } = await signers(); @@ -78,15 +85,22 @@ describe('ElasticDAO: Elastic Governance Token', () => { expect(balance.toFixed()).to.equal('1009'); }); + it('Should not burn tokens if caller is not the valid burner', async () => { + const { summoner1 } = await signers(); + + await expect(dao.elasticGovernanceToken.burn(summoner1.address, 1)).to.be.revertedWith( + 'ElasticDAO: Not authorized', + ); + }); it('Should get token name', async () => { const name = await dao.elasticGovernanceToken.name(); expect(name).to.equal('Elastic Governance Token'); }); it('Should get token symbol', async () => { - const name = await dao.elasticGovernanceToken.symbol(); + const symbol = await dao.elasticGovernanceToken.symbol(); - expect(name).to.equal('EGT'); + expect(symbol).to.equal('EGT'); }); it('Should get number of token holders', async () => { const numberOfTokenHolders = await dao.elasticGovernanceToken.numberOfTokenHolders(); @@ -110,7 +124,7 @@ describe('ElasticDAO: Elastic Governance Token', () => { expect(balance.toFixed()).to.equal('11'); }); - it('should transfer tokens on behalf of a to b', async () => { + it('should transfer tokens on behalf of a to b(transferFrom)', async () => { const { summoner2, summoner1, agent } = await signers(); let balance = await dao.elasticGovernanceToken.balanceOf(summoner2.address); From 2f3cd667e834d53f7ed669427b9bf21dcc7e11ab Mon Sep 17 00:00:00 2001 From: alleycatdev Date: Tue, 2 Feb 2021 13:43:36 -0500 Subject: [PATCH 019/118] fixes during testing on core and DAO model --- coverage.json | 2 +- src/core/ElasticDAO.sol | 2 +- src/models/DAO.sol | 2 +- test/elasticDAOFactoryTest.js | 44 +++++++++++++++++++++- test/elasticDAOTests.js | 71 +++++++++++++++++++++++++++++++++++ 5 files changed, 117 insertions(+), 4 deletions(-) diff --git a/coverage.json b/coverage.json index 59e7142..ff552cd 100644 --- a/coverage.json +++ b/coverage.json @@ -1 +1 @@ -{"src/core/ElasticDAO.sol":{"l":{"24":7,"25":7,"26":7,"29":64,"30":64,"32":64,"33":63,"36":201,"37":201,"38":200,"41":0,"42":0,"45":76,"46":75,"49":124,"50":124,"51":124,"52":124,"54":124,"55":122,"58":4,"59":4,"69":84,"70":84,"71":84,"72":84,"73":84,"74":84,"76":84,"77":84,"78":84,"83":3,"84":3,"85":3,"88":3,"89":3,"91":3,"102":75,"103":75,"105":75,"116":75,"117":75,"118":75,"120":75,"124":4,"126":4,"131":4,"132":4,"141":4,"151":4,"154":3,"155":3,"158":3,"159":3,"160":3,"161":3,"164":3,"168":0,"169":0,"170":0,"171":0,"175":0,"187":63,"189":63,"190":63,"191":63,"195":58,"197":57,"198":57,"199":57,"200":57,"202":57,"204":57,"205":171,"207":57,"208":57,"214":0,"218":0,"224":208,"225":208,"229":665,"233":70,"234":70},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAO.sol","s":{"1":7,"2":7,"3":64,"4":64,"5":64,"6":201,"7":201,"8":0,"9":76,"10":124,"11":124,"12":124,"13":124,"14":124,"15":4,"16":84,"17":84,"18":84,"19":84,"20":84,"21":84,"22":84,"23":84,"24":84,"25":3,"26":3,"27":3,"28":3,"29":3,"30":3,"31":75,"32":75,"33":75,"34":75,"35":75,"36":75,"37":75,"38":4,"39":4,"40":4,"41":4,"42":4,"43":4,"44":3,"45":3,"46":3,"47":3,"48":3,"49":3,"50":3,"51":0,"52":0,"53":0,"54":0,"55":0,"56":63,"57":63,"58":63,"59":63,"60":58,"61":57,"62":57,"63":57,"64":57,"65":57,"66":57,"67":171,"68":57,"69":57,"70":0,"71":0,"72":208,"73":208,"74":665,"75":70,"76":70},"b":{"1":[7,0],"2":[63,1],"3":[200,1],"4":[0,0],"5":[75,1],"6":[122,2],"7":[4,0],"8":[75,0],"9":[4,0],"10":[3,1],"11":[57,1]},"f":{"1":7,"2":64,"3":201,"4":0,"5":76,"6":124,"7":4,"8":84,"9":3,"10":75,"11":4,"12":0,"13":0,"14":63,"15":58,"16":0,"17":0,"18":208,"19":665,"20":70,"21":0},"fnMap":{"1":{"name":"onlyAfterSummoning","line":23,"loc":{"start":{"line":23,"column":2},"end":{"line":27,"column":2}}},"2":{"name":"onlyAfterTokenInitialized","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":34,"column":2}}},"3":{"name":"onlyBeforeSummoning","line":35,"loc":{"start":{"line":35,"column":2},"end":{"line":39,"column":2}}},"4":{"name":"onlyController","line":40,"loc":{"start":{"line":40,"column":2},"end":{"line":43,"column":2}}},"5":{"name":"onlyDeployer","line":44,"loc":{"start":{"line":44,"column":2},"end":{"line":47,"column":2}}},"6":{"name":"onlySummoners","line":48,"loc":{"start":{"line":48,"column":2},"end":{"line":56,"column":2}}},"7":{"name":"onlyWhenOpen","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":60,"column":2}}},"8":{"name":"constructor","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":79,"column":2}}},"9":{"name":"exit","line":81,"loc":{"start":{"line":81,"column":2},"end":{"line":92,"column":2}}},"10":{"name":"initializeToken","line":101,"loc":{"start":{"line":94,"column":2},"end":{"line":121,"column":2}}},"11":{"name":"join","line":123,"loc":{"start":{"line":123,"column":2},"end":{"line":165,"column":2}}},"12":{"name":"setController","line":167,"loc":{"start":{"line":167,"column":2},"end":{"line":172,"column":2}}},"13":{"name":"setMaxVotingLambda","line":174,"loc":{"start":{"line":174,"column":2},"end":{"line":176,"column":2}}},"14":{"name":"seedSummoning","line":185,"loc":{"start":{"line":180,"column":2},"end":{"line":192,"column":2}}},"15":{"name":"summon","line":194,"loc":{"start":{"line":194,"column":2},"end":{"line":209,"column":2}}},"16":{"name":"getDAO","line":213,"loc":{"start":{"line":213,"column":2},"end":{"line":215,"column":2}}},"17":{"name":"getEcosystem","line":217,"loc":{"start":{"line":217,"column":2},"end":{"line":219,"column":2}}},"18":{"name":"_getDAO","line":223,"loc":{"start":{"line":223,"column":2},"end":{"line":226,"column":2}}},"19":{"name":"_getEcosystem","line":228,"loc":{"start":{"line":228,"column":2},"end":{"line":230,"column":2}}},"20":{"name":"_getToken","line":232,"loc":{"start":{"line":232,"column":2},"end":{"line":236,"column":2}}},"21":{"name":null,"line":240,"loc":{"start":{"line":240,"column":2},"end":{"line":240,"column":31}}}},"statementMap":{"1":{"start":{"line":24,"column":4},"end":{"line":24,"column":39}},"2":{"start":{"line":25,"column":4},"end":{"line":25,"column":60}},"3":{"start":{"line":29,"column":4},"end":{"line":29,"column":57}},"4":{"start":{"line":30,"column":4},"end":{"line":30,"column":913}},"5":{"start":{"line":32,"column":4},"end":{"line":32,"column":77}},"6":{"start":{"line":36,"column":4},"end":{"line":36,"column":39}},"7":{"start":{"line":37,"column":4},"end":{"line":37,"column":73}},"8":{"start":{"line":41,"column":4},"end":{"line":41,"column":67}},"9":{"start":{"line":45,"column":4},"end":{"line":45,"column":63}},"10":{"start":{"line":49,"column":4},"end":{"line":49,"column":57}},"11":{"start":{"line":50,"column":4},"end":{"line":50,"column":52}},"12":{"start":{"line":51,"column":4},"end":{"line":51,"column":79}},"13":{"start":{"line":52,"column":4},"end":{"line":52,"column":64}},"14":{"start":{"line":54,"column":4},"end":{"line":54,"column":55}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":71}},"16":{"start":{"line":69,"column":4},"end":{"line":69,"column":49}},"17":{"start":{"line":70,"column":4},"end":{"line":70,"column":27}},"18":{"start":{"line":71,"column":4},"end":{"line":71,"column":24}},"19":{"start":{"line":72,"column":4},"end":{"line":72,"column":98}},"20":{"start":{"line":73,"column":4},"end":{"line":73,"column":40}},"21":{"start":{"line":74,"column":4},"end":{"line":74,"column":25}},"22":{"start":{"line":76,"column":4},"end":{"line":76,"column":74}},"23":{"start":{"line":77,"column":4},"end":{"line":77,"column":79}},"24":{"start":{"line":78,"column":4},"end":{"line":78,"column":74}},"25":{"start":{"line":83,"column":4},"end":{"line":83,"column":45}},"26":{"start":{"line":84,"column":4},"end":{"line":84,"column":77}},"27":{"start":{"line":85,"column":4},"end":{"line":85,"column":53}},"28":{"start":{"line":88,"column":4},"end":{"line":88,"column":72}},"29":{"start":{"line":89,"column":4},"end":{"line":89,"column":86}},"30":{"start":{"line":91,"column":4},"end":{"line":91,"column":41}},"31":{"start":{"line":102,"column":4},"end":{"line":102,"column":88}},"32":{"start":{"line":103,"column":4},"end":{"line":103,"column":57}},"33":{"start":{"line":105,"column":4},"end":{"line":105,"column":3533}},"34":{"start":{"line":116,"column":4},"end":{"line":116,"column":77}},"35":{"start":{"line":117,"column":4},"end":{"line":117,"column":38}},"36":{"start":{"line":118,"column":4},"end":{"line":118,"column":38}},"37":{"start":{"line":120,"column":4},"end":{"line":120,"column":51}},"38":{"start":{"line":124,"column":4},"end":{"line":124,"column":45}},"39":{"start":{"line":126,"column":4},"end":{"line":126,"column":4117}},"40":{"start":{"line":131,"column":4},"end":{"line":131,"column":77}},"41":{"start":{"line":132,"column":4},"end":{"line":132,"column":4328}},"42":{"start":{"line":141,"column":4},"end":{"line":141,"column":4774}},"43":{"start":{"line":151,"column":4},"end":{"line":151,"column":67}},"44":{"start":{"line":154,"column":4},"end":{"line":154,"column":65}},"45":{"start":{"line":155,"column":4},"end":{"line":155,"column":72}},"46":{"start":{"line":158,"column":4},"end":{"line":158,"column":57}},"47":{"start":{"line":159,"column":4},"end":{"line":159,"column":59}},"48":{"start":{"line":160,"column":4},"end":{"line":160,"column":18}},"49":{"start":{"line":161,"column":4},"end":{"line":161,"column":32}},"50":{"start":{"line":164,"column":4},"end":{"line":164,"column":53}},"51":{"start":{"line":168,"column":4},"end":{"line":168,"column":27}},"52":{"start":{"line":169,"column":4},"end":{"line":169,"column":83}},"53":{"start":{"line":170,"column":4},"end":{"line":170,"column":38}},"54":{"start":{"line":171,"column":4},"end":{"line":171,"column":38}},"55":{"start":{"line":175,"column":4},"end":{"line":175,"column":37}},"56":{"start":{"line":187,"column":4},"end":{"line":187,"column":45}},"57":{"start":{"line":189,"column":4},"end":{"line":189,"column":30}},"58":{"start":{"line":190,"column":4},"end":{"line":190,"column":62}},"59":{"start":{"line":191,"column":4},"end":{"line":191,"column":73}},"60":{"start":{"line":195,"column":4},"end":{"line":195,"column":98}},"61":{"start":{"line":197,"column":4},"end":{"line":197,"column":57}},"62":{"start":{"line":198,"column":4},"end":{"line":198,"column":52}},"63":{"start":{"line":199,"column":4},"end":{"line":199,"column":79}},"64":{"start":{"line":200,"column":4},"end":{"line":200,"column":6717}},"65":{"start":{"line":202,"column":4},"end":{"line":202,"column":77}},"66":{"start":{"line":204,"column":4},"end":{"line":204,"column":6837}},"67":{"start":{"line":205,"column":6},"end":{"line":205,"column":76}},"68":{"start":{"line":207,"column":4},"end":{"line":207,"column":22}},"69":{"start":{"line":208,"column":4},"end":{"line":208,"column":29}},"70":{"start":{"line":214,"column":4},"end":{"line":214,"column":20}},"71":{"start":{"line":218,"column":4},"end":{"line":218,"column":26}},"72":{"start":{"line":224,"column":4},"end":{"line":224,"column":57}},"73":{"start":{"line":225,"column":4},"end":{"line":225,"column":79}},"74":{"start":{"line":229,"column":4},"end":{"line":229,"column":70}},"75":{"start":{"line":233,"column":4},"end":{"line":233,"column":57}},"76":{"start":{"line":234,"column":4},"end":{"line":234,"column":7880}}},"branchMap":{"1":{"line":25,"type":"if","locations":[{"start":{"line":25,"column":4},"end":{"line":25,"column":4}},{"start":{"line":25,"column":4},"end":{"line":25,"column":4}}]},"2":{"line":32,"type":"if","locations":[{"start":{"line":32,"column":4},"end":{"line":32,"column":4}},{"start":{"line":32,"column":4},"end":{"line":32,"column":4}}]},"3":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":37,"column":4}},{"start":{"line":37,"column":4},"end":{"line":37,"column":4}}]},"4":{"line":41,"type":"if","locations":[{"start":{"line":41,"column":4},"end":{"line":41,"column":4}},{"start":{"line":41,"column":4},"end":{"line":41,"column":4}}]},"5":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":45,"column":4}},{"start":{"line":45,"column":4},"end":{"line":45,"column":4}}]},"6":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":54,"column":4}},{"start":{"line":54,"column":4},"end":{"line":54,"column":4}}]},"7":{"line":58,"type":"if","locations":[{"start":{"line":58,"column":4},"end":{"line":58,"column":4}},{"start":{"line":58,"column":4},"end":{"line":58,"column":4}}]},"8":{"line":102,"type":"if","locations":[{"start":{"line":102,"column":4},"end":{"line":102,"column":4}},{"start":{"line":102,"column":4},"end":{"line":102,"column":4}}]},"9":{"line":126,"type":"if","locations":[{"start":{"line":126,"column":4},"end":{"line":126,"column":4}},{"start":{"line":126,"column":4},"end":{"line":126,"column":4}}]},"10":{"line":151,"type":"if","locations":[{"start":{"line":151,"column":4},"end":{"line":151,"column":4}},{"start":{"line":151,"column":4},"end":{"line":151,"column":4}}]},"11":{"line":195,"type":"if","locations":[{"start":{"line":195,"column":4},"end":{"line":195,"column":4}},{"start":{"line":195,"column":4},"end":{"line":195,"column":4}}]}}},"src/core/ElasticDAOFactory.sol":{"l":{"21":0,"22":0,"26":3,"27":3,"46":57,"50":57,"52":57,"53":57,"54":57,"58":0,"59":0,"63":0,"65":0,"66":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAOFactory.sol","s":{"1":0,"2":3,"3":3,"4":57,"5":57,"6":57,"7":57,"8":57,"9":0,"10":0,"11":0,"12":0,"13":0},"b":{"1":[0,0]},"f":{"1":0,"2":3,"3":57,"4":0,"5":0,"6":0},"fnMap":{"1":{"name":"onlyDeployer","line":20,"loc":{"start":{"line":20,"column":2},"end":{"line":23,"column":2}}},"2":{"name":"constructor","line":25,"loc":{"start":{"line":25,"column":2},"end":{"line":28,"column":2}}},"3":{"name":"deployDAOAndToken","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":55,"column":2}}},"4":{"name":"updateFeeAddress","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":60,"column":2}}},"5":{"name":"collectFees","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":67,"column":2}}},"6":{"name":null,"line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":71,"column":31}}}},"statementMap":{"1":{"start":{"line":21,"column":4},"end":{"line":21,"column":63}},"2":{"start":{"line":26,"column":4},"end":{"line":26,"column":24}},"3":{"start":{"line":27,"column":4},"end":{"line":27,"column":49}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":1354}},"5":{"start":{"line":50,"column":4},"end":{"line":50,"column":96}},"6":{"start":{"line":52,"column":4},"end":{"line":52,"column":49}},"7":{"start":{"line":53,"column":4},"end":{"line":53,"column":55}},"8":{"start":{"line":54,"column":4},"end":{"line":54,"column":41}},"9":{"start":{"line":58,"column":4},"end":{"line":58,"column":37}},"10":{"start":{"line":59,"column":4},"end":{"line":59,"column":40}},"11":{"start":{"line":63,"column":4},"end":{"line":63,"column":42}},"12":{"start":{"line":65,"column":4},"end":{"line":65,"column":30}},"13":{"start":{"line":66,"column":4},"end":{"line":66,"column":51}}},"branchMap":{"1":{"line":21,"type":"if","locations":[{"start":{"line":21,"column":4},"end":{"line":21,"column":4}},{"start":{"line":21,"column":4},"end":{"line":21,"column":4}}]}}},"src/interfaces/IElasticToken.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IElasticToken.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/interfaces/IERC20.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IERC20.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/libraries/ElasticMath.sol":{"l":{"18":4,"42":4,"44":4,"47":4,"50":4,"53":4,"56":4,"59":4,"62":4,"65":4,"68":4,"76":15,"94":7,"107":4,"124":270,"134":585,"144":92},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/ElasticMath.sol","s":{"1":4,"2":4,"3":4,"4":4,"5":4,"6":4,"7":4,"8":4,"9":4,"10":4,"11":4,"12":15,"13":7,"14":4,"15":270,"16":585,"17":92},"b":{},"f":{"1":4,"2":4,"3":15,"4":7,"5":4,"6":270,"7":585,"8":92},"fnMap":{"1":{"name":"capitalDelta","line":13,"loc":{"start":{"line":13,"column":2},"end":{"line":19,"column":2}}},"2":{"name":"deltaE","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":69,"column":2}}},"3":{"name":"lambdaFromT","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":77,"column":2}}},"4":{"name":"mDash","line":89,"loc":{"start":{"line":89,"column":2},"end":{"line":95,"column":2}}},"5":{"name":"revamp","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":108,"column":2}}},"6":{"name":"t","line":119,"loc":{"start":{"line":119,"column":2},"end":{"line":125,"column":2}}},"7":{"name":"wmul","line":133,"loc":{"start":{"line":133,"column":2},"end":{"line":135,"column":2}}},"8":{"name":"wdiv","line":143,"loc":{"start":{"line":143,"column":2},"end":{"line":145,"column":2}}}},"statementMap":{"1":{"start":{"line":18,"column":4},"end":{"line":18,"column":53}},"2":{"start":{"line":42,"column":4},"end":{"line":42,"column":58}},"3":{"start":{"line":44,"column":4},"end":{"line":44,"column":42}},"4":{"start":{"line":47,"column":4},"end":{"line":47,"column":34}},"5":{"start":{"line":50,"column":4},"end":{"line":50,"column":31}},"6":{"start":{"line":53,"column":4},"end":{"line":53,"column":44}},"7":{"start":{"line":56,"column":4},"end":{"line":56,"column":26}},"8":{"start":{"line":59,"column":4},"end":{"line":59,"column":35}},"9":{"start":{"line":62,"column":4},"end":{"line":62,"column":34}},"10":{"start":{"line":65,"column":4},"end":{"line":65,"column":27}},"11":{"start":{"line":68,"column":4},"end":{"line":68,"column":22}},"12":{"start":{"line":76,"column":4},"end":{"line":76,"column":30}},"13":{"start":{"line":94,"column":4},"end":{"line":94,"column":44}},"14":{"start":{"line":107,"column":4},"end":{"line":107,"column":57}},"15":{"start":{"line":124,"column":4},"end":{"line":124,"column":35}},"16":{"start":{"line":134,"column":4},"end":{"line":134,"column":90}},"17":{"start":{"line":144,"column":4},"end":{"line":144,"column":72}}},"branchMap":{}},"src/libraries/SafeMath.sol":{"l":{"29":2700,"30":2700,"32":2700,"46":31,"64":31,"65":31,"67":31,"84":745,"85":0,"88":745,"89":745,"91":745,"107":0,"127":0,"128":0,"131":0,"147":0,"167":0,"168":0,"172":4,"173":0,"175":0,"177":0,"179":4,"180":4,"181":4,"189":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/SafeMath.sol","s":{"1":2700,"2":2700,"3":2700,"4":31,"5":31,"6":31,"7":31,"8":745,"9":0,"10":745,"11":745,"12":745,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":4,"21":0,"22":4,"23":0,"24":4,"25":0,"26":4,"27":4,"28":68,"29":4,"30":0},"b":{"1":[2700,0],"2":[31,0],"3":[0,745],"4":[745,0],"5":[0,0],"6":[0,0],"7":[0,4],"8":[0,4],"9":[0,4]},"f":{"1":2700,"2":31,"3":31,"4":745,"5":0,"6":0,"7":0,"8":0,"9":4,"10":0},"fnMap":{"1":{"name":"add","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":33,"column":2}}},"2":{"name":"sub","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":2}}},"3":{"name":"sub","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":68,"column":2}}},"4":{"name":"mul","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":92,"column":2}}},"5":{"name":"div","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":108,"column":2}}},"6":{"name":"div","line":122,"loc":{"start":{"line":122,"column":2},"end":{"line":132,"column":2}}},"7":{"name":"mod","line":146,"loc":{"start":{"line":146,"column":2},"end":{"line":148,"column":2}}},"8":{"name":"mod","line":162,"loc":{"start":{"line":162,"column":2},"end":{"line":169,"column":2}}},"9":{"name":"pow","line":171,"loc":{"start":{"line":171,"column":2},"end":{"line":183,"column":2}}},"10":{"name":"max","line":188,"loc":{"start":{"line":188,"column":2},"end":{"line":190,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":21}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":49}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":12}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":54}},"5":{"start":{"line":64,"column":4},"end":{"line":64,"column":32}},"6":{"start":{"line":65,"column":4},"end":{"line":65,"column":21}},"7":{"start":{"line":67,"column":4},"end":{"line":67,"column":12}},"8":{"start":{"line":84,"column":4},"end":{"line":84,"column":2356}},"9":{"start":{"line":85,"column":6},"end":{"line":85,"column":14}},"10":{"start":{"line":88,"column":4},"end":{"line":88,"column":21}},"11":{"start":{"line":89,"column":4},"end":{"line":89,"column":59}},"12":{"start":{"line":91,"column":4},"end":{"line":91,"column":12}},"13":{"start":{"line":107,"column":4},"end":{"line":107,"column":50}},"14":{"start":{"line":127,"column":4},"end":{"line":127,"column":31}},"15":{"start":{"line":128,"column":4},"end":{"line":128,"column":21}},"16":{"start":{"line":131,"column":4},"end":{"line":131,"column":12}},"17":{"start":{"line":147,"column":4},"end":{"line":147,"column":48}},"18":{"start":{"line":167,"column":4},"end":{"line":167,"column":32}},"19":{"start":{"line":168,"column":4},"end":{"line":168,"column":16}},"20":{"start":{"line":172,"column":4},"end":{"line":172,"column":5030}},"21":{"start":{"line":173,"column":6},"end":{"line":173,"column":14}},"22":{"start":{"line":174,"column":11},"end":{"line":174,"column":5078}},"23":{"start":{"line":175,"column":6},"end":{"line":175,"column":17}},"24":{"start":{"line":176,"column":11},"end":{"line":176,"column":5129}},"25":{"start":{"line":177,"column":6},"end":{"line":177,"column":14}},"26":{"start":{"line":179,"column":6},"end":{"line":179,"column":22}},"27":{"start":{"line":180,"column":6},"end":{"line":180,"column":71}},"28":{"start":{"line":180,"column":55},"end":{"line":180,"column":70}},"29":{"start":{"line":181,"column":6},"end":{"line":181,"column":14}},"30":{"start":{"line":189,"column":4},"end":{"line":189,"column":25}}},"branchMap":{"1":{"line":30,"type":"if","locations":[{"start":{"line":30,"column":4},"end":{"line":30,"column":4}},{"start":{"line":30,"column":4},"end":{"line":30,"column":4}}]},"2":{"line":64,"type":"if","locations":[{"start":{"line":64,"column":4},"end":{"line":64,"column":4}},{"start":{"line":64,"column":4},"end":{"line":64,"column":4}}]},"3":{"line":84,"type":"if","locations":[{"start":{"line":84,"column":4},"end":{"line":84,"column":4}},{"start":{"line":84,"column":4},"end":{"line":84,"column":4}}]},"4":{"line":89,"type":"if","locations":[{"start":{"line":89,"column":4},"end":{"line":89,"column":4}},{"start":{"line":89,"column":4},"end":{"line":89,"column":4}}]},"5":{"line":127,"type":"if","locations":[{"start":{"line":127,"column":4},"end":{"line":127,"column":4}},{"start":{"line":127,"column":4},"end":{"line":127,"column":4}}]},"6":{"line":167,"type":"if","locations":[{"start":{"line":167,"column":4},"end":{"line":167,"column":4}},{"start":{"line":167,"column":4},"end":{"line":167,"column":4}}]},"7":{"line":172,"type":"if","locations":[{"start":{"line":172,"column":4},"end":{"line":172,"column":4}},{"start":{"line":172,"column":4},"end":{"line":172,"column":4}}]},"8":{"line":174,"type":"if","locations":[{"start":{"line":174,"column":11},"end":{"line":174,"column":11}},{"start":{"line":174,"column":11},"end":{"line":174,"column":11}}]},"9":{"line":176,"type":"if","locations":[{"start":{"line":176,"column":11},"end":{"line":176,"column":11}},{"start":{"line":176,"column":11},"end":{"line":176,"column":11}}]}}},"src/models/Balance.sol":{"l":{"35":0,"36":0,"37":0,"38":0,"41":0,"42":0,"44":0,"51":0,"52":0,"53":0,"55":0,"64":0,"72":264,"74":264,"80":264,"85":264,"86":264,"87":264,"88":264,"89":264,"90":264,"91":264,"92":264},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Balance.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":264,"14":264,"15":264,"16":264,"17":264,"18":264,"19":264,"20":264,"21":264,"22":264,"23":264},"b":{"1":[264,0]},"f":{"1":0,"2":0,"3":264},"fnMap":{"1":{"name":"deserialize","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":56,"column":2}}},"2":{"name":"exists","line":58,"loc":{"start":{"line":58,"column":2},"end":{"line":65,"column":2}}},"3":{"name":"serialize","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":95,"column":2}}}},"statementMap":{"1":{"start":{"line":35,"column":4},"end":{"line":35,"column":36}},"2":{"start":{"line":36,"column":4},"end":{"line":36,"column":32}},"3":{"start":{"line":37,"column":4},"end":{"line":37,"column":38}},"4":{"start":{"line":38,"column":4},"end":{"line":38,"column":1214}},"5":{"start":{"line":41,"column":4},"end":{"line":41,"column":24}},"6":{"start":{"line":42,"column":4},"end":{"line":42,"column":36}},"7":{"start":{"line":44,"column":4},"end":{"line":44,"column":1419}},"8":{"start":{"line":51,"column":4},"end":{"line":51,"column":36}},"9":{"start":{"line":52,"column":4},"end":{"line":52,"column":34}},"10":{"start":{"line":53,"column":4},"end":{"line":53,"column":34}},"11":{"start":{"line":55,"column":4},"end":{"line":55,"column":17}},"12":{"start":{"line":64,"column":4},"end":{"line":64,"column":15}},"13":{"start":{"line":72,"column":4},"end":{"line":72,"column":71}},"14":{"start":{"line":74,"column":4},"end":{"line":74,"column":2167}},"15":{"start":{"line":80,"column":4},"end":{"line":80,"column":2333}},"16":{"start":{"line":85,"column":4},"end":{"line":85,"column":57}},"17":{"start":{"line":86,"column":4},"end":{"line":86,"column":54}},"18":{"start":{"line":87,"column":4},"end":{"line":87,"column":50}},"19":{"start":{"line":88,"column":4},"end":{"line":88,"column":34}},"20":{"start":{"line":89,"column":4},"end":{"line":89,"column":34}},"21":{"start":{"line":90,"column":4},"end":{"line":90,"column":50}},"22":{"start":{"line":91,"column":4},"end":{"line":91,"column":42}},"23":{"start":{"line":92,"column":4},"end":{"line":92,"column":2815}}},"branchMap":{"1":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":72,"column":4}},{"start":{"line":72,"column":4},"end":{"line":72,"column":4}}]}}},"src/models/BalanceMultipliers.sol":{"l":{"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"45":0,"53":264,"55":264,"59":264,"60":264},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/BalanceMultipliers.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":264,"10":264,"11":264,"12":264},"b":{"1":[264,0]},"f":{"1":0,"2":0,"3":264},"fnMap":{"1":{"name":"deserialize","line":26,"loc":{"start":{"line":26,"column":2},"end":{"line":38,"column":2}}},"2":{"name":"exists","line":40,"loc":{"start":{"line":40,"column":2},"end":{"line":46,"column":2}}},"3":{"name":"serialize","line":52,"loc":{"start":{"line":52,"column":2},"end":{"line":61,"column":2}}}},"statementMap":{"1":{"start":{"line":31,"column":4},"end":{"line":31,"column":36}},"2":{"start":{"line":32,"column":4},"end":{"line":32,"column":32}},"3":{"start":{"line":33,"column":4},"end":{"line":33,"column":32}},"4":{"start":{"line":34,"column":4},"end":{"line":34,"column":76}},"5":{"start":{"line":35,"column":4},"end":{"line":35,"column":76}},"6":{"start":{"line":36,"column":4},"end":{"line":36,"column":24}},"7":{"start":{"line":37,"column":4},"end":{"line":37,"column":17}},"8":{"start":{"line":45,"column":4},"end":{"line":45,"column":15}},"9":{"start":{"line":53,"column":4},"end":{"line":53,"column":90}},"10":{"start":{"line":55,"column":4},"end":{"line":55,"column":1650}},"11":{"start":{"line":59,"column":4},"end":{"line":59,"column":81}},"12":{"start":{"line":60,"column":4},"end":{"line":60,"column":81}}},"branchMap":{"1":{"line":53,"type":"if","locations":[{"start":{"line":53,"column":4},"end":{"line":53,"column":4}},{"start":{"line":53,"column":4},"end":{"line":53,"column":4}}]}}},"src/models/DAO.sol":{"l":{"32":460,"33":460,"35":460,"36":460,"37":460,"38":460,"41":460,"50":0,"54":171,"64":124,"72":141,"77":141,"78":141,"79":141,"81":141,"82":84,"83":252,"84":252,"88":141,"92":460},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/DAO.sol","s":{"1":460,"2":460,"3":460,"4":460,"5":460,"6":460,"7":460,"8":0,"9":171,"10":124,"11":141,"12":141,"13":141,"14":141,"15":141,"16":84,"17":252,"18":252,"19":141,"20":460},"b":{"1":[460,0],"2":[141,0],"3":[84,57]},"f":{"1":460,"2":0,"3":171,"4":124,"5":141,"6":460},"fnMap":{"1":{"name":"deserialize","line":27,"loc":{"start":{"line":27,"column":2},"end":{"line":42,"column":2}}},"2":{"name":"exists","line":49,"loc":{"start":{"line":49,"column":2},"end":{"line":51,"column":2}}},"3":{"name":"getSummoner","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":55,"column":2}}},"4":{"name":"isSummoner","line":63,"loc":{"start":{"line":63,"column":2},"end":{"line":65,"column":2}}},"5":{"name":"serialize","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":89,"column":2}}},"6":{"name":"_exists","line":91,"loc":{"start":{"line":91,"column":2},"end":{"line":93,"column":2}}}},"statementMap":{"1":{"start":{"line":32,"column":4},"end":{"line":32,"column":22}},"2":{"start":{"line":33,"column":4},"end":{"line":33,"column":32}},"3":{"start":{"line":35,"column":4},"end":{"line":35,"column":903}},"4":{"start":{"line":36,"column":6},"end":{"line":36,"column":66}},"5":{"start":{"line":37,"column":6},"end":{"line":37,"column":90}},"6":{"start":{"line":38,"column":6},"end":{"line":38,"column":72}},"7":{"start":{"line":41,"column":4},"end":{"line":41,"column":17}},"8":{"start":{"line":50,"column":4},"end":{"line":50,"column":25}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":76}},"10":{"start":{"line":64,"column":4},"end":{"line":64,"column":82}},"11":{"start":{"line":72,"column":4},"end":{"line":72,"column":2142}},"12":{"start":{"line":77,"column":4},"end":{"line":77,"column":69}},"13":{"start":{"line":78,"column":4},"end":{"line":78,"column":93}},"14":{"start":{"line":79,"column":4},"end":{"line":79,"column":75}},"15":{"start":{"line":81,"column":4},"end":{"line":81,"column":2530}},"16":{"start":{"line":82,"column":6},"end":{"line":82,"column":2597}},"17":{"start":{"line":83,"column":8},"end":{"line":83,"column":89}},"18":{"start":{"line":84,"column":8},"end":{"line":84,"column":90}},"19":{"start":{"line":88,"column":4},"end":{"line":88,"column":62}},"20":{"start":{"line":92,"column":4},"end":{"line":92,"column":58}}},"branchMap":{"1":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":35,"column":4}},{"start":{"line":35,"column":4},"end":{"line":35,"column":4}}]},"2":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":72,"column":4}},{"start":{"line":72,"column":4},"end":{"line":72,"column":4}}]},"3":{"line":81,"type":"if","locations":[{"start":{"line":81,"column":4},"end":{"line":81,"column":4}},{"start":{"line":81,"column":4},"end":{"line":81,"column":4}}]}}},"src/models/Ecosystem.sol":{"l":{"35":1653,"36":1653,"37":1653,"40":1653,"43":1653,"46":1653,"49":1653,"50":1653,"53":1653,"56":1653,"61":1653,"70":1,"78":162,"80":162,"87":162,"91":162,"95":162,"99":162,"100":162,"104":162,"108":162,"113":162,"117":1816},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Ecosystem.sol","s":{"1":1653,"2":1653,"3":1653,"4":1653,"5":1653,"6":1653,"7":1653,"8":1653,"9":1653,"10":1653,"11":1653,"12":1,"13":162,"14":162,"15":162,"16":162,"17":162,"18":162,"19":162,"20":162,"21":162,"22":162,"23":1816},"b":{"1":[1653,0],"2":[162,0]},"f":{"1":1653,"2":1,"3":162,"4":1816},"fnMap":{"1":{"name":"deserialize","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":62,"column":2}}},"2":{"name":"exists","line":69,"loc":{"start":{"line":69,"column":2},"end":{"line":71,"column":2}}},"3":{"name":"serialize","line":77,"loc":{"start":{"line":77,"column":2},"end":{"line":114,"column":2}}},"4":{"name":"_exists","line":116,"loc":{"start":{"line":116,"column":2},"end":{"line":118,"column":2}}}},"statementMap":{"1":{"start":{"line":35,"column":4},"end":{"line":35,"column":1142}},"2":{"start":{"line":36,"column":6},"end":{"line":36,"column":36}},"3":{"start":{"line":37,"column":6},"end":{"line":37,"column":1217}},"4":{"start":{"line":40,"column":6},"end":{"line":40,"column":1345}},"5":{"start":{"line":43,"column":6},"end":{"line":43,"column":1495}},"6":{"start":{"line":46,"column":6},"end":{"line":46,"column":1623}},"7":{"start":{"line":49,"column":6},"end":{"line":49,"column":49}},"8":{"start":{"line":50,"column":6},"end":{"line":50,"column":1795}},"9":{"start":{"line":53,"column":6},"end":{"line":53,"column":1929}},"10":{"start":{"line":56,"column":6},"end":{"line":56,"column":2065}},"11":{"start":{"line":61,"column":4},"end":{"line":61,"column":17}},"12":{"start":{"line":70,"column":4},"end":{"line":70,"column":31}},"13":{"start":{"line":78,"column":4},"end":{"line":78,"column":50}},"14":{"start":{"line":80,"column":4},"end":{"line":80,"column":2684}},"15":{"start":{"line":87,"column":4},"end":{"line":87,"column":2891}},"16":{"start":{"line":91,"column":4},"end":{"line":91,"column":3018}},"17":{"start":{"line":95,"column":4},"end":{"line":95,"column":3167}},"18":{"start":{"line":99,"column":4},"end":{"line":99,"column":98}},"19":{"start":{"line":100,"column":4},"end":{"line":100,"column":3395}},"20":{"start":{"line":104,"column":4},"end":{"line":104,"column":3528}},"21":{"start":{"line":108,"column":4},"end":{"line":108,"column":3663}},"22":{"start":{"line":113,"column":4},"end":{"line":113,"column":68}},"23":{"start":{"line":117,"column":4},"end":{"line":117,"column":64}}},"branchMap":{"1":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":35,"column":4}},{"start":{"line":35,"column":4},"end":{"line":35,"column":4}}]},"2":{"line":80,"type":"if","locations":[{"start":{"line":80,"column":4},"end":{"line":80,"column":4}},{"start":{"line":80,"column":4},"end":{"line":80,"column":4}}]}}},"src/models/EternalModel.sol":{"l":{"30":6818,"37":1932,"39":1932,"46":11742,"53":4019,"60":0,"67":0,"69":0,"81":4374,"89":789,"97":1386,"105":1284,"113":0,"121":0,"132":0,"139":0,"141":0,"148":0,"155":0,"162":0,"169":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/EternalModel.sol","s":{"1":6818,"2":1932,"3":1932,"4":11742,"5":4019,"6":0,"7":0,"8":0,"9":4374,"10":789,"11":1386,"12":1284,"13":0,"14":0,"15":0},"b":{"1":[1932,0],"2":[0,0],"3":[0,0]},"f":{"1":6818,"2":1932,"3":11742,"4":4019,"5":0,"6":0,"7":4374,"8":789,"9":1386,"10":1284,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0},"fnMap":{"1":{"name":"getUint","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":31,"column":2}}},"2":{"name":"getString","line":36,"loc":{"start":{"line":36,"column":2},"end":{"line":40,"column":2}}},"3":{"name":"getAddress","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":2}}},"4":{"name":"getBool","line":52,"loc":{"start":{"line":52,"column":2},"end":{"line":54,"column":2}}},"5":{"name":"getInt","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":61,"column":2}}},"6":{"name":"getBytes","line":66,"loc":{"start":{"line":66,"column":2},"end":{"line":70,"column":2}}},"7":{"name":"setUint","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":82,"column":2}}},"8":{"name":"setString","line":88,"loc":{"start":{"line":88,"column":2},"end":{"line":90,"column":2}}},"9":{"name":"setAddress","line":96,"loc":{"start":{"line":96,"column":2},"end":{"line":98,"column":2}}},"10":{"name":"setBool","line":104,"loc":{"start":{"line":104,"column":2},"end":{"line":106,"column":2}}},"11":{"name":"setInt","line":112,"loc":{"start":{"line":112,"column":2},"end":{"line":114,"column":2}}},"12":{"name":"setBytes","line":120,"loc":{"start":{"line":120,"column":2},"end":{"line":122,"column":2}}},"13":{"name":"deleteUint","line":131,"loc":{"start":{"line":131,"column":2},"end":{"line":133,"column":2}}},"14":{"name":"deleteString","line":138,"loc":{"start":{"line":138,"column":2},"end":{"line":142,"column":2}}},"15":{"name":"deleteAddress","line":147,"loc":{"start":{"line":147,"column":2},"end":{"line":149,"column":2}}},"16":{"name":"deleteBool","line":154,"loc":{"start":{"line":154,"column":2},"end":{"line":156,"column":2}}},"17":{"name":"deleteInt","line":161,"loc":{"start":{"line":161,"column":2},"end":{"line":163,"column":2}}},"18":{"name":"deleteBytes","line":168,"loc":{"start":{"line":168,"column":2},"end":{"line":170,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":30}},"2":{"start":{"line":37,"column":4},"end":{"line":37,"column":52}},"3":{"start":{"line":39,"column":4},"end":{"line":39,"column":32}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":33}},"5":{"start":{"line":53,"column":4},"end":{"line":53,"column":30}},"6":{"start":{"line":60,"column":4},"end":{"line":60,"column":29}},"7":{"start":{"line":67,"column":4},"end":{"line":67,"column":52}},"8":{"start":{"line":69,"column":4},"end":{"line":69,"column":31}},"9":{"start":{"line":81,"column":4},"end":{"line":81,"column":31}},"10":{"start":{"line":89,"column":4},"end":{"line":89,"column":33}},"11":{"start":{"line":97,"column":4},"end":{"line":97,"column":34}},"12":{"start":{"line":105,"column":4},"end":{"line":105,"column":31}},"13":{"start":{"line":113,"column":4},"end":{"line":113,"column":30}},"14":{"start":{"line":121,"column":4},"end":{"line":121,"column":32}},"15":{"start":{"line":139,"column":4},"end":{"line":139,"column":52}}},"branchMap":{"1":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":37,"column":4}},{"start":{"line":37,"column":4},"end":{"line":37,"column":4}}]},"2":{"line":67,"type":"if","locations":[{"start":{"line":67,"column":4},"end":{"line":67,"column":4}},{"start":{"line":67,"column":4},"end":{"line":67,"column":4}}]},"3":{"line":139,"type":"if","locations":[{"start":{"line":139,"column":4},"end":{"line":139,"column":4}},{"start":{"line":139,"column":4},"end":{"line":139,"column":4}}]}}},"src/models/Token.sol":{"l":{"42":740,"43":740,"45":740,"46":736,"47":736,"48":736,"49":736,"50":736,"51":736,"52":736,"53":736,"54":736,"55":736,"58":740,"62":64,"66":264,"68":264,"69":264,"77":324,"84":324,"85":324,"86":324,"87":324,"88":324,"89":324,"90":324,"91":324,"93":324,"99":177,"103":879},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Token.sol","s":{"1":740,"2":740,"3":740,"4":736,"5":736,"6":736,"7":736,"8":736,"9":736,"10":736,"11":736,"12":736,"13":736,"14":740,"15":64,"16":264,"17":264,"18":264,"19":324,"20":324,"21":324,"22":324,"23":324,"24":324,"25":324,"26":324,"27":324,"28":324,"29":177,"30":879},"b":{"1":[736,4],"2":[264,0],"3":[324,0]},"f":{"1":740,"2":64,"3":264,"4":324,"5":177,"6":879},"fnMap":{"1":{"name":"deserialize","line":37,"loc":{"start":{"line":37,"column":2},"end":{"line":59,"column":2}}},"2":{"name":"exists","line":61,"loc":{"start":{"line":61,"column":2},"end":{"line":63,"column":2}}},"3":{"name":"incrementCounter","line":65,"loc":{"start":{"line":65,"column":2},"end":{"line":70,"column":2}}},"4":{"name":"serialize","line":76,"loc":{"start":{"line":76,"column":2},"end":{"line":94,"column":2}}},"5":{"name":"updateNumberOfTokenHolders","line":96,"loc":{"start":{"line":96,"column":2},"end":{"line":100,"column":2}}},"6":{"name":"_exists","line":102,"loc":{"start":{"line":102,"column":2},"end":{"line":104,"column":2}}}},"statementMap":{"1":{"start":{"line":42,"column":4},"end":{"line":42,"column":22}},"2":{"start":{"line":43,"column":4},"end":{"line":43,"column":32}},"3":{"start":{"line":45,"column":4},"end":{"line":45,"column":1269}},"4":{"start":{"line":46,"column":6},"end":{"line":46,"column":70}},"5":{"start":{"line":47,"column":6},"end":{"line":47,"column":64}},"6":{"start":{"line":48,"column":6},"end":{"line":48,"column":76}},"7":{"start":{"line":49,"column":6},"end":{"line":49,"column":58}},"8":{"start":{"line":50,"column":6},"end":{"line":50,"column":68}},"9":{"start":{"line":51,"column":6},"end":{"line":51,"column":58}},"10":{"start":{"line":52,"column":6},"end":{"line":52,"column":90}},"11":{"start":{"line":53,"column":6},"end":{"line":53,"column":66}},"12":{"start":{"line":54,"column":6},"end":{"line":54,"column":96}},"13":{"start":{"line":55,"column":6},"end":{"line":55,"column":70}},"14":{"start":{"line":58,"column":4},"end":{"line":58,"column":17}},"15":{"start":{"line":62,"column":4},"end":{"line":62,"column":25}},"16":{"start":{"line":66,"column":4},"end":{"line":66,"column":65}},"17":{"start":{"line":68,"column":4},"end":{"line":68,"column":76}},"18":{"start":{"line":69,"column":4},"end":{"line":69,"column":83}},"19":{"start":{"line":77,"column":4},"end":{"line":77,"column":2629}},"20":{"start":{"line":84,"column":4},"end":{"line":84,"column":69}},"21":{"start":{"line":85,"column":4},"end":{"line":85,"column":73}},"22":{"start":{"line":86,"column":4},"end":{"line":86,"column":67}},"23":{"start":{"line":87,"column":4},"end":{"line":87,"column":79}},"24":{"start":{"line":88,"column":4},"end":{"line":88,"column":61}},"25":{"start":{"line":89,"column":4},"end":{"line":89,"column":71}},"26":{"start":{"line":90,"column":4},"end":{"line":90,"column":61}},"27":{"start":{"line":91,"column":4},"end":{"line":91,"column":93}},"28":{"start":{"line":93,"column":4},"end":{"line":93,"column":62}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":92}},"30":{"start":{"line":103,"column":4},"end":{"line":103,"column":58}}},"branchMap":{"1":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":45,"column":4}},{"start":{"line":45,"column":4},"end":{"line":45,"column":4}}]},"2":{"line":66,"type":"if","locations":[{"start":{"line":66,"column":4},"end":{"line":66,"column":4}},{"start":{"line":66,"column":4},"end":{"line":66,"column":4}}]},"3":{"line":77,"type":"if","locations":[{"start":{"line":77,"column":4},"end":{"line":77,"column":4}},{"start":{"line":77,"column":4},"end":{"line":77,"column":4}}]}}},"src/models/TokenHolder.sol":{"l":{"29":280,"30":280,"31":280,"33":280,"34":103,"35":103,"38":280,"46":0,"54":264,"56":264,"57":264,"59":264,"67":280},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/TokenHolder.sol","s":{"1":280,"2":280,"3":280,"4":280,"5":103,"6":103,"7":280,"8":0,"9":264,"10":264,"11":264,"12":264,"13":280},"b":{"1":[103,177],"2":[264,0]},"f":{"1":280,"2":0,"3":264,"4":280},"fnMap":{"1":{"name":"deserialize","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":39,"column":2}}},"2":{"name":"exists","line":41,"loc":{"start":{"line":41,"column":2},"end":{"line":47,"column":2}}},"3":{"name":"serialize","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":60,"column":2}}},"4":{"name":"_exists","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":68,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":28}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":32}},"3":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":1003}},"5":{"start":{"line":34,"column":6},"end":{"line":34,"column":98}},"6":{"start":{"line":35,"column":6},"end":{"line":35,"column":96}},"7":{"start":{"line":38,"column":4},"end":{"line":38,"column":17}},"8":{"start":{"line":46,"column":4},"end":{"line":46,"column":48}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":71}},"10":{"start":{"line":56,"column":4},"end":{"line":56,"column":95}},"11":{"start":{"line":57,"column":4},"end":{"line":57,"column":93}},"12":{"start":{"line":59,"column":4},"end":{"line":59,"column":84}},"13":{"start":{"line":67,"column":4},"end":{"line":67,"column":74}}},"branchMap":{"1":{"line":33,"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":33,"column":4}},{"start":{"line":33,"column":4},"end":{"line":33,"column":4}}]},"2":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":54,"column":4}},{"start":{"line":54,"column":4},"end":{"line":54,"column":4}}]}}},"src/services/Configurator.sol":{"l":{"30":84,"31":84,"32":84,"33":84,"34":84,"35":84,"36":84,"37":84,"38":84,"50":84,"52":84,"55":84,"56":84,"57":84,"58":84,"59":84,"60":84,"63":84,"65":84,"66":84,"91":75,"92":75,"93":75,"94":75,"95":75,"96":75,"97":75,"98":75,"99":75,"100":75,"101":75,"103":75,"104":75,"105":75,"107":75},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/services/Configurator.sol","s":{"1":84,"2":84,"3":84,"4":84,"5":84,"6":84,"7":84,"8":84,"9":84,"10":84,"11":84,"12":84,"13":84,"14":84,"15":84,"16":84,"17":84,"18":84,"19":84,"20":84,"21":75,"22":75,"23":75,"24":75,"25":75,"26":75,"27":75,"28":75,"29":75,"30":75,"31":75,"32":75,"33":75,"34":75,"35":75},"b":{},"f":{"1":84,"2":84,"3":75},"fnMap":{"1":{"name":"buildDAO","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":39,"column":2}}},"2":{"name":"buildEcosystem","line":46,"loc":{"start":{"line":46,"column":2},"end":{"line":67,"column":2}}},"3":{"name":"buildToken","line":82,"loc":{"start":{"line":82,"column":2},"end":{"line":108,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":52}},"2":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":29}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":19}},"5":{"start":{"line":34,"column":4},"end":{"line":34,"column":45}},"6":{"start":{"line":35,"column":4},"end":{"line":35,"column":23}},"7":{"start":{"line":36,"column":4},"end":{"line":36,"column":29}},"8":{"start":{"line":37,"column":4},"end":{"line":37,"column":28}},"9":{"start":{"line":38,"column":4},"end":{"line":38,"column":14}},"10":{"start":{"line":50,"column":4},"end":{"line":50,"column":74}},"11":{"start":{"line":52,"column":4},"end":{"line":52,"column":36}},"12":{"start":{"line":55,"column":4},"end":{"line":55,"column":63}},"13":{"start":{"line":56,"column":4},"end":{"line":56,"column":85}},"14":{"start":{"line":57,"column":4},"end":{"line":57,"column":55}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":67}},"16":{"start":{"line":59,"column":4},"end":{"line":59,"column":71}},"17":{"start":{"line":60,"column":4},"end":{"line":60,"column":59}},"18":{"start":{"line":63,"column":4},"end":{"line":63,"column":63}},"19":{"start":{"line":65,"column":4},"end":{"line":65,"column":40}},"20":{"start":{"line":66,"column":4},"end":{"line":66,"column":20}},"21":{"start":{"line":91,"column":4},"end":{"line":91,"column":60}},"22":{"start":{"line":92,"column":4},"end":{"line":92,"column":21}},"23":{"start":{"line":93,"column":4},"end":{"line":93,"column":31}},"24":{"start":{"line":94,"column":4},"end":{"line":94,"column":33}},"25":{"start":{"line":95,"column":4},"end":{"line":95,"column":15}},"26":{"start":{"line":96,"column":4},"end":{"line":96,"column":19}},"27":{"start":{"line":97,"column":4},"end":{"line":97,"column":32}},"28":{"start":{"line":98,"column":4},"end":{"line":98,"column":47}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":21}},"30":{"start":{"line":100,"column":4},"end":{"line":100,"column":25}},"31":{"start":{"line":101,"column":4},"end":{"line":101,"column":97}},"32":{"start":{"line":103,"column":4},"end":{"line":103,"column":49}},"33":{"start":{"line":104,"column":4},"end":{"line":104,"column":68}},"34":{"start":{"line":105,"column":4},"end":{"line":105,"column":32}},"35":{"start":{"line":107,"column":4},"end":{"line":107,"column":16}}},"branchMap":{}},"src/tokens/ElasticGovernanceToken.sol":{"l":{"29":150,"30":150,"34":6,"35":6,"39":240,"40":240,"44":75,"45":75,"46":75,"47":75,"60":3,"79":6,"80":6,"89":13,"90":13,"91":13,"93":13,"102":1,"103":1,"107":2,"108":2,"109":2,"110":2,"112":2,"113":1,"115":1,"131":3,"132":3,"147":3,"148":3,"156":1,"166":3,"168":3,"170":3,"171":3,"181":6,"182":6,"192":3,"194":3,"209":237,"210":237,"218":1,"222":1,"226":75,"230":75,"239":1,"252":6,"253":6,"257":1,"258":1,"270":6,"271":6,"289":3,"291":3,"293":3,"294":3,"296":3,"299":3,"309":15,"310":15,"312":15,"314":15,"331":3,"332":3,"333":3,"337":6,"338":6,"339":6,"340":6,"341":6,"343":6,"345":6,"346":6,"348":6,"349":6,"350":6,"354":3,"355":3,"356":3,"360":240,"361":240,"362":240,"363":240,"364":240,"366":240,"368":240,"370":240,"371":240,"373":240,"374":240,"375":240,"377":240,"385":9,"386":9,"387":9,"389":9,"390":9,"391":9,"392":9,"394":9,"395":9,"397":9,"398":9,"400":9,"401":9,"402":9,"403":9,"404":9,"406":9,"415":264,"416":264,"417":264,"418":264,"419":264,"420":264,"421":264,"422":264,"423":264,"424":264,"425":264,"427":264,"428":249,"430":15,"433":264,"435":264,"436":264,"438":264,"447":264,"448":177,"451":264,"452":0,"459":830,"463":280,"464":280,"473":31,"474":31},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/tokens/ElasticGovernanceToken.sol","s":{"1":150,"2":6,"3":240,"4":75,"5":75,"6":75,"7":75,"8":3,"9":6,"10":6,"11":13,"12":13,"13":13,"14":13,"15":1,"16":1,"17":2,"18":2,"19":2,"20":2,"21":2,"22":1,"23":1,"24":3,"25":3,"26":3,"27":3,"28":1,"29":3,"30":3,"31":3,"32":3,"33":6,"34":6,"35":3,"36":3,"37":237,"38":237,"39":1,"40":1,"41":75,"42":75,"43":1,"44":6,"45":6,"46":1,"47":1,"48":6,"49":6,"50":3,"51":3,"52":3,"53":3,"54":3,"55":3,"56":15,"57":15,"58":15,"59":15,"60":3,"61":3,"62":3,"63":6,"64":6,"65":6,"66":6,"67":6,"68":6,"69":6,"70":6,"71":6,"72":6,"73":6,"74":3,"75":3,"76":3,"77":240,"78":240,"79":240,"80":240,"81":240,"82":240,"83":240,"84":240,"85":240,"86":240,"87":240,"88":240,"89":240,"90":9,"91":9,"92":9,"93":9,"94":9,"95":9,"96":9,"97":9,"98":9,"99":9,"100":9,"101":9,"102":9,"103":9,"104":9,"105":9,"106":9,"107":264,"108":264,"109":264,"110":264,"111":264,"112":264,"113":264,"114":264,"115":264,"116":264,"117":264,"118":264,"119":249,"120":15,"121":264,"122":264,"123":264,"124":264,"125":264,"126":177,"127":264,"128":0,"129":830,"130":280,"131":280,"132":31,"133":31},"b":{"1":[150,0],"2":[6,0],"3":[240,0],"4":[1,1],"5":[3,0],"6":[3,0],"7":[3,0],"8":[15,0],"9":[15,0],"10":[249,15],"11":[177,87],"12":[0,264]},"f":{"1":150,"2":6,"3":240,"4":75,"5":3,"6":6,"7":13,"8":1,"9":2,"10":3,"11":3,"12":1,"13":3,"14":6,"15":3,"16":237,"17":1,"18":1,"19":75,"20":75,"21":1,"22":6,"23":1,"24":6,"25":3,"26":15,"27":3,"28":6,"29":3,"30":240,"31":9,"32":264,"33":264,"34":830,"35":280,"36":31},"fnMap":{"1":{"name":"onlyDAO","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":31,"column":2}}},"2":{"name":"onlyDAOorBurner","line":33,"loc":{"start":{"line":33,"column":2},"end":{"line":36,"column":2}}},"3":{"name":"onlyDAOorMinter","line":38,"loc":{"start":{"line":38,"column":2},"end":{"line":41,"column":2}}},"4":{"name":"constructor","line":43,"loc":{"start":{"line":43,"column":2},"end":{"line":48,"column":2}}},"5":{"name":"allowance","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":61,"column":2}}},"6":{"name":"approve","line":78,"loc":{"start":{"line":78,"column":2},"end":{"line":81,"column":2}}},"7":{"name":"balanceOf","line":88,"loc":{"start":{"line":88,"column":2},"end":{"line":94,"column":2}}},"8":{"name":"balanceOfInShares","line":101,"loc":{"start":{"line":101,"column":2},"end":{"line":104,"column":2}}},"9":{"name":"balanceOfVoting","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":117,"column":2}}},"10":{"name":"burn","line":128,"loc":{"start":{"line":125,"column":2},"end":{"line":133,"column":2}}},"11":{"name":"burnShares","line":144,"loc":{"start":{"line":141,"column":2},"end":{"line":149,"column":2}}},"12":{"name":"decimals","line":155,"loc":{"start":{"line":155,"column":2},"end":{"line":157,"column":2}}},"13":{"name":"decreaseAllowance","line":165,"loc":{"start":{"line":165,"column":2},"end":{"line":172,"column":2}}},"14":{"name":"increaseAllowance","line":180,"loc":{"start":{"line":180,"column":2},"end":{"line":183,"column":2}}},"15":{"name":"mint","line":191,"loc":{"start":{"line":191,"column":2},"end":{"line":195,"column":2}}},"16":{"name":"mintShares","line":206,"loc":{"start":{"line":203,"column":2},"end":{"line":211,"column":2}}},"17":{"name":"name","line":217,"loc":{"start":{"line":217,"column":2},"end":{"line":219,"column":2}}},"18":{"name":"numberOfTokenHolders","line":221,"loc":{"start":{"line":221,"column":2},"end":{"line":223,"column":2}}},"19":{"name":"setBurner","line":225,"loc":{"start":{"line":225,"column":2},"end":{"line":227,"column":2}}},"20":{"name":"setMinter","line":229,"loc":{"start":{"line":229,"column":2},"end":{"line":231,"column":2}}},"21":{"name":"symbol","line":238,"loc":{"start":{"line":238,"column":2},"end":{"line":240,"column":2}}},"22":{"name":"totalSupply","line":251,"loc":{"start":{"line":251,"column":2},"end":{"line":254,"column":2}}},"23":{"name":"totalSupplyInShares","line":256,"loc":{"start":{"line":256,"column":2},"end":{"line":259,"column":2}}},"24":{"name":"transfer","line":269,"loc":{"start":{"line":269,"column":2},"end":{"line":272,"column":2}}},"25":{"name":"transferFrom","line":284,"loc":{"start":{"line":284,"column":2},"end":{"line":300,"column":2}}},"26":{"name":"_approve","line":304,"loc":{"start":{"line":304,"column":2},"end":{"line":315,"column":2}}},"27":{"name":"_burn","line":330,"loc":{"start":{"line":330,"column":2},"end":{"line":334,"column":2}}},"28":{"name":"_burnShares","line":336,"loc":{"start":{"line":336,"column":2},"end":{"line":351,"column":2}}},"29":{"name":"_mint","line":353,"loc":{"start":{"line":353,"column":2},"end":{"line":357,"column":2}}},"30":{"name":"_mintShares","line":359,"loc":{"start":{"line":359,"column":2},"end":{"line":378,"column":2}}},"31":{"name":"_transfer","line":380,"loc":{"start":{"line":380,"column":2},"end":{"line":407,"column":2}}},"32":{"name":"_updateBalance","line":409,"loc":{"start":{"line":409,"column":2},"end":{"line":439,"column":2}}},"33":{"name":"_updateNumberOfTokenHolders","line":441,"loc":{"start":{"line":441,"column":2},"end":{"line":454,"column":2}}},"34":{"name":"_getEcosystem","line":458,"loc":{"start":{"line":458,"column":2},"end":{"line":460,"column":2}}},"35":{"name":"_getTokenHolder","line":462,"loc":{"start":{"line":462,"column":2},"end":{"line":470,"column":2}}},"36":{"name":"_getToken","line":472,"loc":{"start":{"line":472,"column":2},"end":{"line":475,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":90}},"2":{"start":{"line":34,"column":4},"end":{"line":34,"column":90}},"3":{"start":{"line":39,"column":4},"end":{"line":39,"column":90}},"4":{"start":{"line":44,"column":4},"end":{"line":44,"column":23}},"5":{"start":{"line":45,"column":4},"end":{"line":45,"column":27}},"6":{"start":{"line":46,"column":4},"end":{"line":46,"column":49}},"7":{"start":{"line":47,"column":4},"end":{"line":47,"column":23}},"8":{"start":{"line":60,"column":4},"end":{"line":60,"column":40}},"9":{"start":{"line":79,"column":4},"end":{"line":79,"column":42}},"10":{"start":{"line":80,"column":4},"end":{"line":80,"column":15}},"11":{"start":{"line":89,"column":4},"end":{"line":89,"column":45}},"12":{"start":{"line":90,"column":4},"end":{"line":90,"column":71}},"13":{"start":{"line":91,"column":4},"end":{"line":91,"column":67}},"14":{"start":{"line":93,"column":4},"end":{"line":93,"column":12}},"15":{"start":{"line":102,"column":4},"end":{"line":102,"column":71}},"16":{"start":{"line":103,"column":4},"end":{"line":103,"column":29}},"17":{"start":{"line":107,"column":4},"end":{"line":107,"column":45}},"18":{"start":{"line":108,"column":4},"end":{"line":108,"column":71}},"19":{"start":{"line":109,"column":4},"end":{"line":109,"column":59}},"20":{"start":{"line":110,"column":4},"end":{"line":110,"column":58}},"21":{"start":{"line":112,"column":4},"end":{"line":112,"column":3845}},"22":{"start":{"line":113,"column":6},"end":{"line":113,"column":61}},"23":{"start":{"line":115,"column":6},"end":{"line":115,"column":64}},"24":{"start":{"line":131,"column":4},"end":{"line":131,"column":27}},"25":{"start":{"line":132,"column":4},"end":{"line":132,"column":15}},"26":{"start":{"line":147,"column":4},"end":{"line":147,"column":33}},"27":{"start":{"line":148,"column":4},"end":{"line":148,"column":15}},"28":{"start":{"line":156,"column":4},"end":{"line":156,"column":13}},"29":{"start":{"line":166,"column":4},"end":{"line":166,"column":92}},"30":{"start":{"line":168,"column":4},"end":{"line":168,"column":74}},"31":{"start":{"line":170,"column":4},"end":{"line":170,"column":47}},"32":{"start":{"line":171,"column":4},"end":{"line":171,"column":15}},"33":{"start":{"line":181,"column":4},"end":{"line":181,"column":95}},"34":{"start":{"line":182,"column":4},"end":{"line":182,"column":15}},"35":{"start":{"line":192,"column":4},"end":{"line":192,"column":27}},"36":{"start":{"line":194,"column":4},"end":{"line":194,"column":15}},"37":{"start":{"line":209,"column":4},"end":{"line":209,"column":33}},"38":{"start":{"line":210,"column":4},"end":{"line":210,"column":15}},"39":{"start":{"line":218,"column":4},"end":{"line":218,"column":27}},"40":{"start":{"line":222,"column":4},"end":{"line":222,"column":43}},"41":{"start":{"line":226,"column":4},"end":{"line":226,"column":19}},"42":{"start":{"line":230,"column":4},"end":{"line":230,"column":19}},"43":{"start":{"line":239,"column":4},"end":{"line":239,"column":29}},"44":{"start":{"line":252,"column":4},"end":{"line":252,"column":45}},"45":{"start":{"line":253,"column":4},"end":{"line":253,"column":56}},"46":{"start":{"line":257,"column":4},"end":{"line":257,"column":45}},"47":{"start":{"line":258,"column":4},"end":{"line":258,"column":23}},"48":{"start":{"line":270,"column":4},"end":{"line":270,"column":38}},"49":{"start":{"line":271,"column":4},"end":{"line":271,"column":15}},"50":{"start":{"line":289,"column":4},"end":{"line":289,"column":97}},"51":{"start":{"line":291,"column":4},"end":{"line":291,"column":33}},"52":{"start":{"line":293,"column":4},"end":{"line":293,"column":9096}},"53":{"start":{"line":294,"column":6},"end":{"line":294,"column":91}},"54":{"start":{"line":296,"column":6},"end":{"line":296,"column":68}},"55":{"start":{"line":299,"column":4},"end":{"line":299,"column":15}},"56":{"start":{"line":309,"column":4},"end":{"line":309,"column":72}},"57":{"start":{"line":310,"column":4},"end":{"line":310,"column":72}},"58":{"start":{"line":312,"column":4},"end":{"line":312,"column":42}},"59":{"start":{"line":314,"column":4},"end":{"line":314,"column":44}},"60":{"start":{"line":331,"column":4},"end":{"line":331,"column":45}},"61":{"start":{"line":332,"column":4},"end":{"line":332,"column":76}},"62":{"start":{"line":333,"column":4},"end":{"line":333,"column":37}},"63":{"start":{"line":337,"column":4},"end":{"line":337,"column":57}},"64":{"start":{"line":338,"column":4},"end":{"line":338,"column":59}},"65":{"start":{"line":339,"column":4},"end":{"line":339,"column":84}},"66":{"start":{"line":340,"column":4},"end":{"line":340,"column":71}},"67":{"start":{"line":341,"column":4},"end":{"line":341,"column":52}},"68":{"start":{"line":343,"column":4},"end":{"line":343,"column":72}},"69":{"start":{"line":345,"column":4},"end":{"line":345,"column":58}},"70":{"start":{"line":346,"column":4},"end":{"line":346,"column":32}},"71":{"start":{"line":348,"column":4},"end":{"line":348,"column":83}},"72":{"start":{"line":349,"column":4},"end":{"line":349,"column":44}},"73":{"start":{"line":350,"column":4},"end":{"line":350,"column":84}},"74":{"start":{"line":354,"column":4},"end":{"line":354,"column":45}},"75":{"start":{"line":355,"column":4},"end":{"line":355,"column":76}},"76":{"start":{"line":356,"column":4},"end":{"line":356,"column":37}},"77":{"start":{"line":360,"column":4},"end":{"line":360,"column":57}},"78":{"start":{"line":361,"column":4},"end":{"line":361,"column":59}},"79":{"start":{"line":362,"column":4},"end":{"line":362,"column":84}},"80":{"start":{"line":363,"column":4},"end":{"line":363,"column":71}},"81":{"start":{"line":364,"column":4},"end":{"line":364,"column":52}},"82":{"start":{"line":366,"column":4},"end":{"line":366,"column":66}},"83":{"start":{"line":368,"column":4},"end":{"line":368,"column":71}},"84":{"start":{"line":370,"column":4},"end":{"line":370,"column":58}},"85":{"start":{"line":371,"column":4},"end":{"line":371,"column":32}},"86":{"start":{"line":373,"column":4},"end":{"line":373,"column":83}},"87":{"start":{"line":374,"column":4},"end":{"line":374,"column":44}},"88":{"start":{"line":375,"column":4},"end":{"line":375,"column":84}},"89":{"start":{"line":377,"column":4},"end":{"line":377,"column":47}},"90":{"start":{"line":385,"column":4},"end":{"line":385,"column":57}},"91":{"start":{"line":386,"column":4},"end":{"line":386,"column":59}},"92":{"start":{"line":387,"column":4},"end":{"line":387,"column":84}},"93":{"start":{"line":389,"column":4},"end":{"line":389,"column":72}},"94":{"start":{"line":390,"column":4},"end":{"line":390,"column":68}},"95":{"start":{"line":391,"column":4},"end":{"line":391,"column":60}},"96":{"start":{"line":392,"column":4},"end":{"line":392,"column":56}},"97":{"start":{"line":394,"column":4},"end":{"line":394,"column":76}},"98":{"start":{"line":395,"column":4},"end":{"line":395,"column":65}},"99":{"start":{"line":397,"column":4},"end":{"line":397,"column":79}},"100":{"start":{"line":398,"column":4},"end":{"line":398,"column":74}},"101":{"start":{"line":400,"column":4},"end":{"line":400,"column":83}},"102":{"start":{"line":401,"column":4},"end":{"line":401,"column":48}},"103":{"start":{"line":402,"column":4},"end":{"line":402,"column":46}},"104":{"start":{"line":403,"column":4},"end":{"line":403,"column":92}},"105":{"start":{"line":404,"column":4},"end":{"line":404,"column":88}},"106":{"start":{"line":406,"column":4},"end":{"line":406,"column":37}},"107":{"start":{"line":415,"column":4},"end":{"line":415,"column":57}},"108":{"start":{"line":416,"column":4},"end":{"line":416,"column":35}},"109":{"start":{"line":417,"column":4},"end":{"line":417,"column":37}},"110":{"start":{"line":418,"column":4},"end":{"line":418,"column":32}},"111":{"start":{"line":419,"column":4},"end":{"line":419,"column":39}},"112":{"start":{"line":420,"column":4},"end":{"line":420,"column":23}},"113":{"start":{"line":421,"column":4},"end":{"line":421,"column":23}},"114":{"start":{"line":422,"column":4},"end":{"line":422,"column":25}},"115":{"start":{"line":423,"column":4},"end":{"line":423,"column":37}},"116":{"start":{"line":424,"column":4},"end":{"line":424,"column":51}},"117":{"start":{"line":425,"column":4},"end":{"line":425,"column":63}},"118":{"start":{"line":427,"column":4},"end":{"line":427,"column":14371}},"119":{"start":{"line":428,"column":6},"end":{"line":428,"column":74}},"120":{"start":{"line":430,"column":6},"end":{"line":430,"column":74}},"121":{"start":{"line":433,"column":4},"end":{"line":433,"column":39}},"122":{"start":{"line":435,"column":4},"end":{"line":435,"column":60}},"123":{"start":{"line":436,"column":4},"end":{"line":436,"column":62}},"124":{"start":{"line":438,"column":4},"end":{"line":438,"column":23}},"125":{"start":{"line":447,"column":4},"end":{"line":447,"column":14957}},"126":{"start":{"line":448,"column":6},"end":{"line":448,"column":96}},"127":{"start":{"line":451,"column":4},"end":{"line":451,"column":15128}},"128":{"start":{"line":452,"column":6},"end":{"line":452,"column":96}},"129":{"start":{"line":459,"column":4},"end":{"line":459,"column":67}},"130":{"start":{"line":463,"column":4},"end":{"line":463,"column":57}},"131":{"start":{"line":464,"column":4},"end":{"line":464,"column":15631}},"132":{"start":{"line":473,"column":4},"end":{"line":473,"column":57}},"133":{"start":{"line":474,"column":4},"end":{"line":474,"column":83}}},"branchMap":{"1":{"line":29,"type":"if","locations":[{"start":{"line":29,"column":4},"end":{"line":29,"column":4}},{"start":{"line":29,"column":4},"end":{"line":29,"column":4}}]},"2":{"line":34,"type":"if","locations":[{"start":{"line":34,"column":4},"end":{"line":34,"column":4}},{"start":{"line":34,"column":4},"end":{"line":34,"column":4}}]},"3":{"line":39,"type":"if","locations":[{"start":{"line":39,"column":4},"end":{"line":39,"column":4}},{"start":{"line":39,"column":4},"end":{"line":39,"column":4}}]},"4":{"line":112,"type":"if","locations":[{"start":{"line":112,"column":4},"end":{"line":112,"column":4}},{"start":{"line":112,"column":4},"end":{"line":112,"column":4}}]},"5":{"line":168,"type":"if","locations":[{"start":{"line":168,"column":4},"end":{"line":168,"column":4}},{"start":{"line":168,"column":4},"end":{"line":168,"column":4}}]},"6":{"line":289,"type":"if","locations":[{"start":{"line":289,"column":4},"end":{"line":289,"column":4}},{"start":{"line":289,"column":4},"end":{"line":289,"column":4}}]},"7":{"line":293,"type":"if","locations":[{"start":{"line":293,"column":4},"end":{"line":293,"column":4}},{"start":{"line":293,"column":4},"end":{"line":293,"column":4}}]},"8":{"line":309,"type":"if","locations":[{"start":{"line":309,"column":4},"end":{"line":309,"column":4}},{"start":{"line":309,"column":4},"end":{"line":309,"column":4}}]},"9":{"line":310,"type":"if","locations":[{"start":{"line":310,"column":4},"end":{"line":310,"column":4}},{"start":{"line":310,"column":4},"end":{"line":310,"column":4}}]},"10":{"line":427,"type":"if","locations":[{"start":{"line":427,"column":4},"end":{"line":427,"column":4}},{"start":{"line":427,"column":4},"end":{"line":427,"column":4}}]},"11":{"line":447,"type":"if","locations":[{"start":{"line":447,"column":4},"end":{"line":447,"column":4}},{"start":{"line":447,"column":4},"end":{"line":447,"column":4}}]},"12":{"line":451,"type":"if","locations":[{"start":{"line":451,"column":4},"end":{"line":451,"column":4}},{"start":{"line":451,"column":4},"end":{"line":451,"column":4}}]}}}} \ No newline at end of file +{"src/core/ElasticDAO.sol":{"l":{"24":0,"25":0,"26":0,"29":0,"30":0,"32":0,"33":0,"36":0,"37":0,"38":0,"41":0,"42":0,"45":0,"46":0,"49":0,"50":0,"51":0,"52":0,"54":0,"55":0,"58":0,"59":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"76":0,"77":0,"78":0,"83":0,"84":0,"85":0,"88":0,"89":0,"91":0,"102":0,"103":0,"105":0,"116":0,"117":0,"118":0,"120":0,"124":0,"126":0,"131":0,"132":0,"141":0,"151":0,"154":0,"155":0,"158":0,"159":0,"160":0,"161":0,"164":0,"168":0,"169":0,"170":0,"171":0,"175":0,"187":0,"189":0,"190":0,"191":0,"195":0,"197":0,"198":0,"199":0,"200":0,"202":0,"204":0,"205":0,"207":0,"208":0,"214":0,"218":0,"224":0,"225":0,"229":0,"233":0,"234":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAO.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0},"fnMap":{"1":{"name":"onlyAfterSummoning","line":23,"loc":{"start":{"line":23,"column":2},"end":{"line":27,"column":2}}},"2":{"name":"onlyAfterTokenInitialized","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":34,"column":2}}},"3":{"name":"onlyBeforeSummoning","line":35,"loc":{"start":{"line":35,"column":2},"end":{"line":39,"column":2}}},"4":{"name":"onlyController","line":40,"loc":{"start":{"line":40,"column":2},"end":{"line":43,"column":2}}},"5":{"name":"onlyDeployer","line":44,"loc":{"start":{"line":44,"column":2},"end":{"line":47,"column":2}}},"6":{"name":"onlySummoners","line":48,"loc":{"start":{"line":48,"column":2},"end":{"line":56,"column":2}}},"7":{"name":"onlyWhenOpen","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":60,"column":2}}},"8":{"name":"constructor","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":79,"column":2}}},"9":{"name":"exit","line":81,"loc":{"start":{"line":81,"column":2},"end":{"line":92,"column":2}}},"10":{"name":"initializeToken","line":101,"loc":{"start":{"line":94,"column":2},"end":{"line":121,"column":2}}},"11":{"name":"join","line":123,"loc":{"start":{"line":123,"column":2},"end":{"line":165,"column":2}}},"12":{"name":"setController","line":167,"loc":{"start":{"line":167,"column":2},"end":{"line":172,"column":2}}},"13":{"name":"setMaxVotingLambda","line":174,"loc":{"start":{"line":174,"column":2},"end":{"line":176,"column":2}}},"14":{"name":"seedSummoning","line":185,"loc":{"start":{"line":180,"column":2},"end":{"line":192,"column":2}}},"15":{"name":"summon","line":194,"loc":{"start":{"line":194,"column":2},"end":{"line":209,"column":2}}},"16":{"name":"getDAO","line":213,"loc":{"start":{"line":213,"column":2},"end":{"line":215,"column":2}}},"17":{"name":"getEcosystem","line":217,"loc":{"start":{"line":217,"column":2},"end":{"line":219,"column":2}}},"18":{"name":"_getDAO","line":223,"loc":{"start":{"line":223,"column":2},"end":{"line":226,"column":2}}},"19":{"name":"_getEcosystem","line":228,"loc":{"start":{"line":228,"column":2},"end":{"line":230,"column":2}}},"20":{"name":"_getToken","line":232,"loc":{"start":{"line":232,"column":2},"end":{"line":236,"column":2}}},"21":{"name":null,"line":240,"loc":{"start":{"line":240,"column":2},"end":{"line":240,"column":31}}}},"statementMap":{"1":{"start":{"line":24,"column":4},"end":{"line":24,"column":39}},"2":{"start":{"line":25,"column":4},"end":{"line":25,"column":60}},"3":{"start":{"line":29,"column":4},"end":{"line":29,"column":57}},"4":{"start":{"line":30,"column":4},"end":{"line":30,"column":911}},"5":{"start":{"line":32,"column":4},"end":{"line":32,"column":77}},"6":{"start":{"line":36,"column":4},"end":{"line":36,"column":39}},"7":{"start":{"line":37,"column":4},"end":{"line":37,"column":73}},"8":{"start":{"line":41,"column":4},"end":{"line":41,"column":67}},"9":{"start":{"line":45,"column":4},"end":{"line":45,"column":63}},"10":{"start":{"line":49,"column":4},"end":{"line":49,"column":57}},"11":{"start":{"line":50,"column":4},"end":{"line":50,"column":52}},"12":{"start":{"line":51,"column":4},"end":{"line":51,"column":79}},"13":{"start":{"line":52,"column":4},"end":{"line":52,"column":64}},"14":{"start":{"line":54,"column":4},"end":{"line":54,"column":55}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":71}},"16":{"start":{"line":69,"column":4},"end":{"line":69,"column":49}},"17":{"start":{"line":70,"column":4},"end":{"line":70,"column":27}},"18":{"start":{"line":71,"column":4},"end":{"line":71,"column":24}},"19":{"start":{"line":72,"column":4},"end":{"line":72,"column":98}},"20":{"start":{"line":73,"column":4},"end":{"line":73,"column":40}},"21":{"start":{"line":74,"column":4},"end":{"line":74,"column":25}},"22":{"start":{"line":76,"column":4},"end":{"line":76,"column":74}},"23":{"start":{"line":77,"column":4},"end":{"line":77,"column":79}},"24":{"start":{"line":78,"column":4},"end":{"line":78,"column":74}},"25":{"start":{"line":83,"column":4},"end":{"line":83,"column":45}},"26":{"start":{"line":84,"column":4},"end":{"line":84,"column":77}},"27":{"start":{"line":85,"column":4},"end":{"line":85,"column":53}},"28":{"start":{"line":88,"column":4},"end":{"line":88,"column":72}},"29":{"start":{"line":89,"column":4},"end":{"line":89,"column":86}},"30":{"start":{"line":91,"column":4},"end":{"line":91,"column":41}},"31":{"start":{"line":102,"column":4},"end":{"line":102,"column":88}},"32":{"start":{"line":103,"column":4},"end":{"line":103,"column":57}},"33":{"start":{"line":105,"column":4},"end":{"line":105,"column":3531}},"34":{"start":{"line":116,"column":4},"end":{"line":116,"column":77}},"35":{"start":{"line":117,"column":4},"end":{"line":117,"column":38}},"36":{"start":{"line":118,"column":4},"end":{"line":118,"column":38}},"37":{"start":{"line":120,"column":4},"end":{"line":120,"column":51}},"38":{"start":{"line":124,"column":4},"end":{"line":124,"column":45}},"39":{"start":{"line":126,"column":4},"end":{"line":126,"column":4115}},"40":{"start":{"line":131,"column":4},"end":{"line":131,"column":77}},"41":{"start":{"line":132,"column":4},"end":{"line":132,"column":4326}},"42":{"start":{"line":141,"column":4},"end":{"line":141,"column":4772}},"43":{"start":{"line":151,"column":4},"end":{"line":151,"column":67}},"44":{"start":{"line":154,"column":4},"end":{"line":154,"column":65}},"45":{"start":{"line":155,"column":4},"end":{"line":155,"column":72}},"46":{"start":{"line":158,"column":4},"end":{"line":158,"column":57}},"47":{"start":{"line":159,"column":4},"end":{"line":159,"column":59}},"48":{"start":{"line":160,"column":4},"end":{"line":160,"column":18}},"49":{"start":{"line":161,"column":4},"end":{"line":161,"column":32}},"50":{"start":{"line":164,"column":4},"end":{"line":164,"column":53}},"51":{"start":{"line":168,"column":4},"end":{"line":168,"column":27}},"52":{"start":{"line":169,"column":4},"end":{"line":169,"column":83}},"53":{"start":{"line":170,"column":4},"end":{"line":170,"column":38}},"54":{"start":{"line":171,"column":4},"end":{"line":171,"column":38}},"55":{"start":{"line":175,"column":4},"end":{"line":175,"column":37}},"56":{"start":{"line":187,"column":4},"end":{"line":187,"column":45}},"57":{"start":{"line":189,"column":4},"end":{"line":189,"column":30}},"58":{"start":{"line":190,"column":4},"end":{"line":190,"column":62}},"59":{"start":{"line":191,"column":4},"end":{"line":191,"column":73}},"60":{"start":{"line":195,"column":4},"end":{"line":195,"column":98}},"61":{"start":{"line":197,"column":4},"end":{"line":197,"column":57}},"62":{"start":{"line":198,"column":4},"end":{"line":198,"column":52}},"63":{"start":{"line":199,"column":4},"end":{"line":199,"column":79}},"64":{"start":{"line":200,"column":4},"end":{"line":200,"column":6715}},"65":{"start":{"line":202,"column":4},"end":{"line":202,"column":77}},"66":{"start":{"line":204,"column":4},"end":{"line":204,"column":6835}},"67":{"start":{"line":205,"column":6},"end":{"line":205,"column":76}},"68":{"start":{"line":207,"column":4},"end":{"line":207,"column":22}},"69":{"start":{"line":208,"column":4},"end":{"line":208,"column":29}},"70":{"start":{"line":214,"column":4},"end":{"line":214,"column":20}},"71":{"start":{"line":218,"column":4},"end":{"line":218,"column":26}},"72":{"start":{"line":224,"column":4},"end":{"line":224,"column":57}},"73":{"start":{"line":225,"column":4},"end":{"line":225,"column":79}},"74":{"start":{"line":229,"column":4},"end":{"line":229,"column":70}},"75":{"start":{"line":233,"column":4},"end":{"line":233,"column":57}},"76":{"start":{"line":234,"column":4},"end":{"line":234,"column":7878}}},"branchMap":{"1":{"line":25,"type":"if","locations":[{"start":{"line":25,"column":4},"end":{"line":25,"column":4}},{"start":{"line":25,"column":4},"end":{"line":25,"column":4}}]},"2":{"line":32,"type":"if","locations":[{"start":{"line":32,"column":4},"end":{"line":32,"column":4}},{"start":{"line":32,"column":4},"end":{"line":32,"column":4}}]},"3":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":37,"column":4}},{"start":{"line":37,"column":4},"end":{"line":37,"column":4}}]},"4":{"line":41,"type":"if","locations":[{"start":{"line":41,"column":4},"end":{"line":41,"column":4}},{"start":{"line":41,"column":4},"end":{"line":41,"column":4}}]},"5":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":45,"column":4}},{"start":{"line":45,"column":4},"end":{"line":45,"column":4}}]},"6":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":54,"column":4}},{"start":{"line":54,"column":4},"end":{"line":54,"column":4}}]},"7":{"line":58,"type":"if","locations":[{"start":{"line":58,"column":4},"end":{"line":58,"column":4}},{"start":{"line":58,"column":4},"end":{"line":58,"column":4}}]},"8":{"line":102,"type":"if","locations":[{"start":{"line":102,"column":4},"end":{"line":102,"column":4}},{"start":{"line":102,"column":4},"end":{"line":102,"column":4}}]},"9":{"line":126,"type":"if","locations":[{"start":{"line":126,"column":4},"end":{"line":126,"column":4}},{"start":{"line":126,"column":4},"end":{"line":126,"column":4}}]},"10":{"line":151,"type":"if","locations":[{"start":{"line":151,"column":4},"end":{"line":151,"column":4}},{"start":{"line":151,"column":4},"end":{"line":151,"column":4}}]},"11":{"line":195,"type":"if","locations":[{"start":{"line":195,"column":4},"end":{"line":195,"column":4}},{"start":{"line":195,"column":4},"end":{"line":195,"column":4}}]}}},"src/core/ElasticDAOFactory.sol":{"l":{"21":0,"22":0,"26":0,"27":0,"46":0,"50":0,"52":0,"53":0,"54":0,"58":0,"59":0,"63":0,"65":0,"66":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAOFactory.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0},"b":{"1":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0},"fnMap":{"1":{"name":"onlyDeployer","line":20,"loc":{"start":{"line":20,"column":2},"end":{"line":23,"column":2}}},"2":{"name":"constructor","line":25,"loc":{"start":{"line":25,"column":2},"end":{"line":28,"column":2}}},"3":{"name":"deployDAOAndToken","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":55,"column":2}}},"4":{"name":"updateFeeAddress","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":60,"column":2}}},"5":{"name":"collectFees","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":67,"column":2}}},"6":{"name":null,"line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":71,"column":31}}}},"statementMap":{"1":{"start":{"line":21,"column":4},"end":{"line":21,"column":63}},"2":{"start":{"line":26,"column":4},"end":{"line":26,"column":24}},"3":{"start":{"line":27,"column":4},"end":{"line":27,"column":49}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":1354}},"5":{"start":{"line":50,"column":4},"end":{"line":50,"column":96}},"6":{"start":{"line":52,"column":4},"end":{"line":52,"column":49}},"7":{"start":{"line":53,"column":4},"end":{"line":53,"column":55}},"8":{"start":{"line":54,"column":4},"end":{"line":54,"column":41}},"9":{"start":{"line":58,"column":4},"end":{"line":58,"column":37}},"10":{"start":{"line":59,"column":4},"end":{"line":59,"column":40}},"11":{"start":{"line":63,"column":4},"end":{"line":63,"column":42}},"12":{"start":{"line":65,"column":4},"end":{"line":65,"column":30}},"13":{"start":{"line":66,"column":4},"end":{"line":66,"column":51}}},"branchMap":{"1":{"line":21,"type":"if","locations":[{"start":{"line":21,"column":4},"end":{"line":21,"column":4}},{"start":{"line":21,"column":4},"end":{"line":21,"column":4}}]}}},"src/interfaces/IElasticToken.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IElasticToken.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/interfaces/IERC20.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IERC20.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/libraries/ElasticMath.sol":{"l":{"18":0,"42":0,"44":0,"47":0,"50":0,"53":0,"56":0,"59":0,"62":0,"65":0,"68":0,"76":0,"94":0,"107":0,"124":0,"134":0,"144":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/ElasticMath.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0},"b":{},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0},"fnMap":{"1":{"name":"capitalDelta","line":13,"loc":{"start":{"line":13,"column":2},"end":{"line":19,"column":2}}},"2":{"name":"deltaE","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":69,"column":2}}},"3":{"name":"lambdaFromT","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":77,"column":2}}},"4":{"name":"mDash","line":89,"loc":{"start":{"line":89,"column":2},"end":{"line":95,"column":2}}},"5":{"name":"revamp","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":108,"column":2}}},"6":{"name":"t","line":119,"loc":{"start":{"line":119,"column":2},"end":{"line":125,"column":2}}},"7":{"name":"wmul","line":133,"loc":{"start":{"line":133,"column":2},"end":{"line":135,"column":2}}},"8":{"name":"wdiv","line":143,"loc":{"start":{"line":143,"column":2},"end":{"line":145,"column":2}}}},"statementMap":{"1":{"start":{"line":18,"column":4},"end":{"line":18,"column":53}},"2":{"start":{"line":42,"column":4},"end":{"line":42,"column":58}},"3":{"start":{"line":44,"column":4},"end":{"line":44,"column":42}},"4":{"start":{"line":47,"column":4},"end":{"line":47,"column":34}},"5":{"start":{"line":50,"column":4},"end":{"line":50,"column":31}},"6":{"start":{"line":53,"column":4},"end":{"line":53,"column":44}},"7":{"start":{"line":56,"column":4},"end":{"line":56,"column":26}},"8":{"start":{"line":59,"column":4},"end":{"line":59,"column":35}},"9":{"start":{"line":62,"column":4},"end":{"line":62,"column":34}},"10":{"start":{"line":65,"column":4},"end":{"line":65,"column":27}},"11":{"start":{"line":68,"column":4},"end":{"line":68,"column":22}},"12":{"start":{"line":76,"column":4},"end":{"line":76,"column":30}},"13":{"start":{"line":94,"column":4},"end":{"line":94,"column":44}},"14":{"start":{"line":107,"column":4},"end":{"line":107,"column":57}},"15":{"start":{"line":124,"column":4},"end":{"line":124,"column":35}},"16":{"start":{"line":134,"column":4},"end":{"line":134,"column":90}},"17":{"start":{"line":144,"column":4},"end":{"line":144,"column":72}}},"branchMap":{}},"src/libraries/SafeMath.sol":{"l":{"29":0,"30":0,"32":0,"46":0,"64":0,"65":0,"67":0,"84":0,"85":0,"88":0,"89":0,"91":0,"107":0,"127":0,"128":0,"131":0,"147":0,"167":0,"168":0,"172":0,"173":0,"175":0,"177":0,"179":0,"180":0,"181":0,"189":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/SafeMath.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0},"fnMap":{"1":{"name":"add","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":33,"column":2}}},"2":{"name":"sub","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":2}}},"3":{"name":"sub","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":68,"column":2}}},"4":{"name":"mul","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":92,"column":2}}},"5":{"name":"div","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":108,"column":2}}},"6":{"name":"div","line":122,"loc":{"start":{"line":122,"column":2},"end":{"line":132,"column":2}}},"7":{"name":"mod","line":146,"loc":{"start":{"line":146,"column":2},"end":{"line":148,"column":2}}},"8":{"name":"mod","line":162,"loc":{"start":{"line":162,"column":2},"end":{"line":169,"column":2}}},"9":{"name":"pow","line":171,"loc":{"start":{"line":171,"column":2},"end":{"line":183,"column":2}}},"10":{"name":"max","line":188,"loc":{"start":{"line":188,"column":2},"end":{"line":190,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":21}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":49}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":12}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":54}},"5":{"start":{"line":64,"column":4},"end":{"line":64,"column":32}},"6":{"start":{"line":65,"column":4},"end":{"line":65,"column":21}},"7":{"start":{"line":67,"column":4},"end":{"line":67,"column":12}},"8":{"start":{"line":84,"column":4},"end":{"line":84,"column":2356}},"9":{"start":{"line":85,"column":6},"end":{"line":85,"column":14}},"10":{"start":{"line":88,"column":4},"end":{"line":88,"column":21}},"11":{"start":{"line":89,"column":4},"end":{"line":89,"column":59}},"12":{"start":{"line":91,"column":4},"end":{"line":91,"column":12}},"13":{"start":{"line":107,"column":4},"end":{"line":107,"column":50}},"14":{"start":{"line":127,"column":4},"end":{"line":127,"column":31}},"15":{"start":{"line":128,"column":4},"end":{"line":128,"column":21}},"16":{"start":{"line":131,"column":4},"end":{"line":131,"column":12}},"17":{"start":{"line":147,"column":4},"end":{"line":147,"column":48}},"18":{"start":{"line":167,"column":4},"end":{"line":167,"column":32}},"19":{"start":{"line":168,"column":4},"end":{"line":168,"column":16}},"20":{"start":{"line":172,"column":4},"end":{"line":172,"column":5030}},"21":{"start":{"line":173,"column":6},"end":{"line":173,"column":14}},"22":{"start":{"line":174,"column":11},"end":{"line":174,"column":5078}},"23":{"start":{"line":175,"column":6},"end":{"line":175,"column":17}},"24":{"start":{"line":176,"column":11},"end":{"line":176,"column":5129}},"25":{"start":{"line":177,"column":6},"end":{"line":177,"column":14}},"26":{"start":{"line":179,"column":6},"end":{"line":179,"column":22}},"27":{"start":{"line":180,"column":6},"end":{"line":180,"column":71}},"28":{"start":{"line":180,"column":55},"end":{"line":180,"column":70}},"29":{"start":{"line":181,"column":6},"end":{"line":181,"column":14}},"30":{"start":{"line":189,"column":4},"end":{"line":189,"column":25}}},"branchMap":{"1":{"line":30,"type":"if","locations":[{"start":{"line":30,"column":4},"end":{"line":30,"column":4}},{"start":{"line":30,"column":4},"end":{"line":30,"column":4}}]},"2":{"line":64,"type":"if","locations":[{"start":{"line":64,"column":4},"end":{"line":64,"column":4}},{"start":{"line":64,"column":4},"end":{"line":64,"column":4}}]},"3":{"line":84,"type":"if","locations":[{"start":{"line":84,"column":4},"end":{"line":84,"column":4}},{"start":{"line":84,"column":4},"end":{"line":84,"column":4}}]},"4":{"line":89,"type":"if","locations":[{"start":{"line":89,"column":4},"end":{"line":89,"column":4}},{"start":{"line":89,"column":4},"end":{"line":89,"column":4}}]},"5":{"line":127,"type":"if","locations":[{"start":{"line":127,"column":4},"end":{"line":127,"column":4}},{"start":{"line":127,"column":4},"end":{"line":127,"column":4}}]},"6":{"line":167,"type":"if","locations":[{"start":{"line":167,"column":4},"end":{"line":167,"column":4}},{"start":{"line":167,"column":4},"end":{"line":167,"column":4}}]},"7":{"line":172,"type":"if","locations":[{"start":{"line":172,"column":4},"end":{"line":172,"column":4}},{"start":{"line":172,"column":4},"end":{"line":172,"column":4}}]},"8":{"line":174,"type":"if","locations":[{"start":{"line":174,"column":11},"end":{"line":174,"column":11}},{"start":{"line":174,"column":11},"end":{"line":174,"column":11}}]},"9":{"line":176,"type":"if","locations":[{"start":{"line":176,"column":11},"end":{"line":176,"column":11}},{"start":{"line":176,"column":11},"end":{"line":176,"column":11}}]}}},"src/models/Balance.sol":{"l":{"35":0,"36":0,"37":0,"38":0,"41":0,"42":0,"44":0,"51":0,"52":0,"53":0,"55":0,"64":0,"72":0,"74":0,"80":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Balance.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0},"b":{"1":[0,0]},"f":{"1":0,"2":0,"3":0},"fnMap":{"1":{"name":"deserialize","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":56,"column":2}}},"2":{"name":"exists","line":58,"loc":{"start":{"line":58,"column":2},"end":{"line":65,"column":2}}},"3":{"name":"serialize","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":95,"column":2}}}},"statementMap":{"1":{"start":{"line":35,"column":4},"end":{"line":35,"column":36}},"2":{"start":{"line":36,"column":4},"end":{"line":36,"column":32}},"3":{"start":{"line":37,"column":4},"end":{"line":37,"column":38}},"4":{"start":{"line":38,"column":4},"end":{"line":38,"column":1214}},"5":{"start":{"line":41,"column":4},"end":{"line":41,"column":24}},"6":{"start":{"line":42,"column":4},"end":{"line":42,"column":36}},"7":{"start":{"line":44,"column":4},"end":{"line":44,"column":1419}},"8":{"start":{"line":51,"column":4},"end":{"line":51,"column":36}},"9":{"start":{"line":52,"column":4},"end":{"line":52,"column":34}},"10":{"start":{"line":53,"column":4},"end":{"line":53,"column":34}},"11":{"start":{"line":55,"column":4},"end":{"line":55,"column":17}},"12":{"start":{"line":64,"column":4},"end":{"line":64,"column":15}},"13":{"start":{"line":72,"column":4},"end":{"line":72,"column":71}},"14":{"start":{"line":74,"column":4},"end":{"line":74,"column":2167}},"15":{"start":{"line":80,"column":4},"end":{"line":80,"column":2333}},"16":{"start":{"line":85,"column":4},"end":{"line":85,"column":57}},"17":{"start":{"line":86,"column":4},"end":{"line":86,"column":54}},"18":{"start":{"line":87,"column":4},"end":{"line":87,"column":50}},"19":{"start":{"line":88,"column":4},"end":{"line":88,"column":34}},"20":{"start":{"line":89,"column":4},"end":{"line":89,"column":34}},"21":{"start":{"line":90,"column":4},"end":{"line":90,"column":50}},"22":{"start":{"line":91,"column":4},"end":{"line":91,"column":42}},"23":{"start":{"line":92,"column":4},"end":{"line":92,"column":2815}}},"branchMap":{"1":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":72,"column":4}},{"start":{"line":72,"column":4},"end":{"line":72,"column":4}}]}}},"src/models/BalanceMultipliers.sol":{"l":{"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"45":0,"53":0,"55":0,"59":0,"60":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/BalanceMultipliers.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0},"b":{"1":[0,0]},"f":{"1":0,"2":0,"3":0},"fnMap":{"1":{"name":"deserialize","line":26,"loc":{"start":{"line":26,"column":2},"end":{"line":38,"column":2}}},"2":{"name":"exists","line":40,"loc":{"start":{"line":40,"column":2},"end":{"line":46,"column":2}}},"3":{"name":"serialize","line":52,"loc":{"start":{"line":52,"column":2},"end":{"line":61,"column":2}}}},"statementMap":{"1":{"start":{"line":31,"column":4},"end":{"line":31,"column":36}},"2":{"start":{"line":32,"column":4},"end":{"line":32,"column":32}},"3":{"start":{"line":33,"column":4},"end":{"line":33,"column":32}},"4":{"start":{"line":34,"column":4},"end":{"line":34,"column":76}},"5":{"start":{"line":35,"column":4},"end":{"line":35,"column":76}},"6":{"start":{"line":36,"column":4},"end":{"line":36,"column":24}},"7":{"start":{"line":37,"column":4},"end":{"line":37,"column":17}},"8":{"start":{"line":45,"column":4},"end":{"line":45,"column":15}},"9":{"start":{"line":53,"column":4},"end":{"line":53,"column":90}},"10":{"start":{"line":55,"column":4},"end":{"line":55,"column":1650}},"11":{"start":{"line":59,"column":4},"end":{"line":59,"column":81}},"12":{"start":{"line":60,"column":4},"end":{"line":60,"column":81}}},"branchMap":{"1":{"line":53,"type":"if","locations":[{"start":{"line":53,"column":4},"end":{"line":53,"column":4}},{"start":{"line":53,"column":4},"end":{"line":53,"column":4}}]}}},"src/models/DAO.sol":{"l":{"32":0,"33":0,"35":0,"36":0,"37":0,"38":0,"41":0,"50":0,"54":0,"64":0,"72":0,"77":0,"78":0,"79":0,"81":0,"82":0,"83":0,"84":0,"88":0,"92":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/DAO.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0},"fnMap":{"1":{"name":"deserialize","line":27,"loc":{"start":{"line":27,"column":2},"end":{"line":42,"column":2}}},"2":{"name":"exists","line":49,"loc":{"start":{"line":49,"column":2},"end":{"line":51,"column":2}}},"3":{"name":"getSummoner","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":55,"column":2}}},"4":{"name":"isSummoner","line":63,"loc":{"start":{"line":63,"column":2},"end":{"line":65,"column":2}}},"5":{"name":"serialize","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":89,"column":2}}},"6":{"name":"_exists","line":91,"loc":{"start":{"line":91,"column":2},"end":{"line":93,"column":2}}}},"statementMap":{"1":{"start":{"line":32,"column":4},"end":{"line":32,"column":22}},"2":{"start":{"line":33,"column":4},"end":{"line":33,"column":32}},"3":{"start":{"line":35,"column":4},"end":{"line":35,"column":903}},"4":{"start":{"line":36,"column":6},"end":{"line":36,"column":66}},"5":{"start":{"line":37,"column":6},"end":{"line":37,"column":90}},"6":{"start":{"line":38,"column":6},"end":{"line":38,"column":72}},"7":{"start":{"line":41,"column":4},"end":{"line":41,"column":17}},"8":{"start":{"line":50,"column":4},"end":{"line":50,"column":25}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":76}},"10":{"start":{"line":64,"column":4},"end":{"line":64,"column":82}},"11":{"start":{"line":72,"column":4},"end":{"line":72,"column":2142}},"12":{"start":{"line":77,"column":4},"end":{"line":77,"column":69}},"13":{"start":{"line":78,"column":4},"end":{"line":78,"column":93}},"14":{"start":{"line":79,"column":4},"end":{"line":79,"column":75}},"15":{"start":{"line":81,"column":4},"end":{"line":81,"column":2530}},"16":{"start":{"line":82,"column":6},"end":{"line":82,"column":2597}},"17":{"start":{"line":83,"column":8},"end":{"line":83,"column":89}},"18":{"start":{"line":84,"column":8},"end":{"line":84,"column":90}},"19":{"start":{"line":88,"column":4},"end":{"line":88,"column":62}},"20":{"start":{"line":92,"column":4},"end":{"line":92,"column":58}}},"branchMap":{"1":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":35,"column":4}},{"start":{"line":35,"column":4},"end":{"line":35,"column":4}}]},"2":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":72,"column":4}},{"start":{"line":72,"column":4},"end":{"line":72,"column":4}}]},"3":{"line":81,"type":"if","locations":[{"start":{"line":81,"column":4},"end":{"line":81,"column":4}},{"start":{"line":81,"column":4},"end":{"line":81,"column":4}}]}}},"src/models/Ecosystem.sol":{"l":{"35":0,"36":0,"37":0,"40":0,"43":0,"46":0,"49":0,"50":0,"53":0,"56":0,"61":0,"70":0,"78":0,"80":0,"87":0,"91":0,"95":0,"99":0,"100":0,"104":0,"108":0,"113":0,"117":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Ecosystem.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0},"b":{"1":[0,0],"2":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0},"fnMap":{"1":{"name":"deserialize","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":62,"column":2}}},"2":{"name":"exists","line":69,"loc":{"start":{"line":69,"column":2},"end":{"line":71,"column":2}}},"3":{"name":"serialize","line":77,"loc":{"start":{"line":77,"column":2},"end":{"line":114,"column":2}}},"4":{"name":"_exists","line":116,"loc":{"start":{"line":116,"column":2},"end":{"line":118,"column":2}}}},"statementMap":{"1":{"start":{"line":35,"column":4},"end":{"line":35,"column":1142}},"2":{"start":{"line":36,"column":6},"end":{"line":36,"column":36}},"3":{"start":{"line":37,"column":6},"end":{"line":37,"column":1217}},"4":{"start":{"line":40,"column":6},"end":{"line":40,"column":1345}},"5":{"start":{"line":43,"column":6},"end":{"line":43,"column":1495}},"6":{"start":{"line":46,"column":6},"end":{"line":46,"column":1623}},"7":{"start":{"line":49,"column":6},"end":{"line":49,"column":49}},"8":{"start":{"line":50,"column":6},"end":{"line":50,"column":1795}},"9":{"start":{"line":53,"column":6},"end":{"line":53,"column":1929}},"10":{"start":{"line":56,"column":6},"end":{"line":56,"column":2065}},"11":{"start":{"line":61,"column":4},"end":{"line":61,"column":17}},"12":{"start":{"line":70,"column":4},"end":{"line":70,"column":31}},"13":{"start":{"line":78,"column":4},"end":{"line":78,"column":50}},"14":{"start":{"line":80,"column":4},"end":{"line":80,"column":2684}},"15":{"start":{"line":87,"column":4},"end":{"line":87,"column":2891}},"16":{"start":{"line":91,"column":4},"end":{"line":91,"column":3018}},"17":{"start":{"line":95,"column":4},"end":{"line":95,"column":3167}},"18":{"start":{"line":99,"column":4},"end":{"line":99,"column":98}},"19":{"start":{"line":100,"column":4},"end":{"line":100,"column":3395}},"20":{"start":{"line":104,"column":4},"end":{"line":104,"column":3528}},"21":{"start":{"line":108,"column":4},"end":{"line":108,"column":3663}},"22":{"start":{"line":113,"column":4},"end":{"line":113,"column":68}},"23":{"start":{"line":117,"column":4},"end":{"line":117,"column":64}}},"branchMap":{"1":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":35,"column":4}},{"start":{"line":35,"column":4},"end":{"line":35,"column":4}}]},"2":{"line":80,"type":"if","locations":[{"start":{"line":80,"column":4},"end":{"line":80,"column":4}},{"start":{"line":80,"column":4},"end":{"line":80,"column":4}}]}}},"src/models/EternalModel.sol":{"l":{"30":0,"37":0,"39":0,"46":0,"53":0,"60":0,"67":0,"69":0,"81":0,"89":0,"97":0,"105":0,"113":0,"121":0,"132":0,"139":0,"141":0,"148":0,"155":0,"162":0,"169":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/EternalModel.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0},"fnMap":{"1":{"name":"getUint","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":31,"column":2}}},"2":{"name":"getString","line":36,"loc":{"start":{"line":36,"column":2},"end":{"line":40,"column":2}}},"3":{"name":"getAddress","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":2}}},"4":{"name":"getBool","line":52,"loc":{"start":{"line":52,"column":2},"end":{"line":54,"column":2}}},"5":{"name":"getInt","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":61,"column":2}}},"6":{"name":"getBytes","line":66,"loc":{"start":{"line":66,"column":2},"end":{"line":70,"column":2}}},"7":{"name":"setUint","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":82,"column":2}}},"8":{"name":"setString","line":88,"loc":{"start":{"line":88,"column":2},"end":{"line":90,"column":2}}},"9":{"name":"setAddress","line":96,"loc":{"start":{"line":96,"column":2},"end":{"line":98,"column":2}}},"10":{"name":"setBool","line":104,"loc":{"start":{"line":104,"column":2},"end":{"line":106,"column":2}}},"11":{"name":"setInt","line":112,"loc":{"start":{"line":112,"column":2},"end":{"line":114,"column":2}}},"12":{"name":"setBytes","line":120,"loc":{"start":{"line":120,"column":2},"end":{"line":122,"column":2}}},"13":{"name":"deleteUint","line":131,"loc":{"start":{"line":131,"column":2},"end":{"line":133,"column":2}}},"14":{"name":"deleteString","line":138,"loc":{"start":{"line":138,"column":2},"end":{"line":142,"column":2}}},"15":{"name":"deleteAddress","line":147,"loc":{"start":{"line":147,"column":2},"end":{"line":149,"column":2}}},"16":{"name":"deleteBool","line":154,"loc":{"start":{"line":154,"column":2},"end":{"line":156,"column":2}}},"17":{"name":"deleteInt","line":161,"loc":{"start":{"line":161,"column":2},"end":{"line":163,"column":2}}},"18":{"name":"deleteBytes","line":168,"loc":{"start":{"line":168,"column":2},"end":{"line":170,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":30}},"2":{"start":{"line":37,"column":4},"end":{"line":37,"column":52}},"3":{"start":{"line":39,"column":4},"end":{"line":39,"column":32}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":33}},"5":{"start":{"line":53,"column":4},"end":{"line":53,"column":30}},"6":{"start":{"line":60,"column":4},"end":{"line":60,"column":29}},"7":{"start":{"line":67,"column":4},"end":{"line":67,"column":52}},"8":{"start":{"line":69,"column":4},"end":{"line":69,"column":31}},"9":{"start":{"line":81,"column":4},"end":{"line":81,"column":31}},"10":{"start":{"line":89,"column":4},"end":{"line":89,"column":33}},"11":{"start":{"line":97,"column":4},"end":{"line":97,"column":34}},"12":{"start":{"line":105,"column":4},"end":{"line":105,"column":31}},"13":{"start":{"line":113,"column":4},"end":{"line":113,"column":30}},"14":{"start":{"line":121,"column":4},"end":{"line":121,"column":32}},"15":{"start":{"line":139,"column":4},"end":{"line":139,"column":52}}},"branchMap":{"1":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":37,"column":4}},{"start":{"line":37,"column":4},"end":{"line":37,"column":4}}]},"2":{"line":67,"type":"if","locations":[{"start":{"line":67,"column":4},"end":{"line":67,"column":4}},{"start":{"line":67,"column":4},"end":{"line":67,"column":4}}]},"3":{"line":139,"type":"if","locations":[{"start":{"line":139,"column":4},"end":{"line":139,"column":4}},{"start":{"line":139,"column":4},"end":{"line":139,"column":4}}]}}},"src/models/Token.sol":{"l":{"42":0,"43":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"58":0,"62":0,"66":0,"68":0,"69":0,"77":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"93":0,"99":0,"103":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Token.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0},"fnMap":{"1":{"name":"deserialize","line":37,"loc":{"start":{"line":37,"column":2},"end":{"line":59,"column":2}}},"2":{"name":"exists","line":61,"loc":{"start":{"line":61,"column":2},"end":{"line":63,"column":2}}},"3":{"name":"incrementCounter","line":65,"loc":{"start":{"line":65,"column":2},"end":{"line":70,"column":2}}},"4":{"name":"serialize","line":76,"loc":{"start":{"line":76,"column":2},"end":{"line":94,"column":2}}},"5":{"name":"updateNumberOfTokenHolders","line":96,"loc":{"start":{"line":96,"column":2},"end":{"line":100,"column":2}}},"6":{"name":"_exists","line":102,"loc":{"start":{"line":102,"column":2},"end":{"line":104,"column":2}}}},"statementMap":{"1":{"start":{"line":42,"column":4},"end":{"line":42,"column":22}},"2":{"start":{"line":43,"column":4},"end":{"line":43,"column":32}},"3":{"start":{"line":45,"column":4},"end":{"line":45,"column":1269}},"4":{"start":{"line":46,"column":6},"end":{"line":46,"column":70}},"5":{"start":{"line":47,"column":6},"end":{"line":47,"column":64}},"6":{"start":{"line":48,"column":6},"end":{"line":48,"column":76}},"7":{"start":{"line":49,"column":6},"end":{"line":49,"column":58}},"8":{"start":{"line":50,"column":6},"end":{"line":50,"column":68}},"9":{"start":{"line":51,"column":6},"end":{"line":51,"column":58}},"10":{"start":{"line":52,"column":6},"end":{"line":52,"column":90}},"11":{"start":{"line":53,"column":6},"end":{"line":53,"column":66}},"12":{"start":{"line":54,"column":6},"end":{"line":54,"column":96}},"13":{"start":{"line":55,"column":6},"end":{"line":55,"column":70}},"14":{"start":{"line":58,"column":4},"end":{"line":58,"column":17}},"15":{"start":{"line":62,"column":4},"end":{"line":62,"column":25}},"16":{"start":{"line":66,"column":4},"end":{"line":66,"column":65}},"17":{"start":{"line":68,"column":4},"end":{"line":68,"column":76}},"18":{"start":{"line":69,"column":4},"end":{"line":69,"column":83}},"19":{"start":{"line":77,"column":4},"end":{"line":77,"column":2629}},"20":{"start":{"line":84,"column":4},"end":{"line":84,"column":69}},"21":{"start":{"line":85,"column":4},"end":{"line":85,"column":73}},"22":{"start":{"line":86,"column":4},"end":{"line":86,"column":67}},"23":{"start":{"line":87,"column":4},"end":{"line":87,"column":79}},"24":{"start":{"line":88,"column":4},"end":{"line":88,"column":61}},"25":{"start":{"line":89,"column":4},"end":{"line":89,"column":71}},"26":{"start":{"line":90,"column":4},"end":{"line":90,"column":61}},"27":{"start":{"line":91,"column":4},"end":{"line":91,"column":93}},"28":{"start":{"line":93,"column":4},"end":{"line":93,"column":62}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":92}},"30":{"start":{"line":103,"column":4},"end":{"line":103,"column":58}}},"branchMap":{"1":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":45,"column":4}},{"start":{"line":45,"column":4},"end":{"line":45,"column":4}}]},"2":{"line":66,"type":"if","locations":[{"start":{"line":66,"column":4},"end":{"line":66,"column":4}},{"start":{"line":66,"column":4},"end":{"line":66,"column":4}}]},"3":{"line":77,"type":"if","locations":[{"start":{"line":77,"column":4},"end":{"line":77,"column":4}},{"start":{"line":77,"column":4},"end":{"line":77,"column":4}}]}}},"src/models/TokenHolder.sol":{"l":{"29":0,"30":0,"31":0,"33":0,"34":0,"35":0,"38":0,"46":0,"54":0,"56":0,"57":0,"59":0,"67":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/TokenHolder.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0},"b":{"1":[0,0],"2":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0},"fnMap":{"1":{"name":"deserialize","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":39,"column":2}}},"2":{"name":"exists","line":41,"loc":{"start":{"line":41,"column":2},"end":{"line":47,"column":2}}},"3":{"name":"serialize","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":60,"column":2}}},"4":{"name":"_exists","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":68,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":28}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":32}},"3":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":1003}},"5":{"start":{"line":34,"column":6},"end":{"line":34,"column":98}},"6":{"start":{"line":35,"column":6},"end":{"line":35,"column":96}},"7":{"start":{"line":38,"column":4},"end":{"line":38,"column":17}},"8":{"start":{"line":46,"column":4},"end":{"line":46,"column":48}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":71}},"10":{"start":{"line":56,"column":4},"end":{"line":56,"column":95}},"11":{"start":{"line":57,"column":4},"end":{"line":57,"column":93}},"12":{"start":{"line":59,"column":4},"end":{"line":59,"column":84}},"13":{"start":{"line":67,"column":4},"end":{"line":67,"column":74}}},"branchMap":{"1":{"line":33,"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":33,"column":4}},{"start":{"line":33,"column":4},"end":{"line":33,"column":4}}]},"2":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":54,"column":4}},{"start":{"line":54,"column":4},"end":{"line":54,"column":4}}]}}},"src/services/Configurator.sol":{"l":{"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"50":0,"52":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"63":0,"65":0,"66":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"103":0,"104":0,"105":0,"107":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/services/Configurator.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0},"b":{},"f":{"1":0,"2":0,"3":0},"fnMap":{"1":{"name":"buildDAO","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":39,"column":2}}},"2":{"name":"buildEcosystem","line":46,"loc":{"start":{"line":46,"column":2},"end":{"line":67,"column":2}}},"3":{"name":"buildToken","line":82,"loc":{"start":{"line":82,"column":2},"end":{"line":108,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":52}},"2":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":29}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":19}},"5":{"start":{"line":34,"column":4},"end":{"line":34,"column":45}},"6":{"start":{"line":35,"column":4},"end":{"line":35,"column":23}},"7":{"start":{"line":36,"column":4},"end":{"line":36,"column":29}},"8":{"start":{"line":37,"column":4},"end":{"line":37,"column":28}},"9":{"start":{"line":38,"column":4},"end":{"line":38,"column":14}},"10":{"start":{"line":50,"column":4},"end":{"line":50,"column":74}},"11":{"start":{"line":52,"column":4},"end":{"line":52,"column":36}},"12":{"start":{"line":55,"column":4},"end":{"line":55,"column":63}},"13":{"start":{"line":56,"column":4},"end":{"line":56,"column":85}},"14":{"start":{"line":57,"column":4},"end":{"line":57,"column":55}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":67}},"16":{"start":{"line":59,"column":4},"end":{"line":59,"column":71}},"17":{"start":{"line":60,"column":4},"end":{"line":60,"column":59}},"18":{"start":{"line":63,"column":4},"end":{"line":63,"column":63}},"19":{"start":{"line":65,"column":4},"end":{"line":65,"column":40}},"20":{"start":{"line":66,"column":4},"end":{"line":66,"column":20}},"21":{"start":{"line":91,"column":4},"end":{"line":91,"column":60}},"22":{"start":{"line":92,"column":4},"end":{"line":92,"column":21}},"23":{"start":{"line":93,"column":4},"end":{"line":93,"column":31}},"24":{"start":{"line":94,"column":4},"end":{"line":94,"column":33}},"25":{"start":{"line":95,"column":4},"end":{"line":95,"column":15}},"26":{"start":{"line":96,"column":4},"end":{"line":96,"column":19}},"27":{"start":{"line":97,"column":4},"end":{"line":97,"column":32}},"28":{"start":{"line":98,"column":4},"end":{"line":98,"column":47}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":21}},"30":{"start":{"line":100,"column":4},"end":{"line":100,"column":25}},"31":{"start":{"line":101,"column":4},"end":{"line":101,"column":97}},"32":{"start":{"line":103,"column":4},"end":{"line":103,"column":49}},"33":{"start":{"line":104,"column":4},"end":{"line":104,"column":68}},"34":{"start":{"line":105,"column":4},"end":{"line":105,"column":32}},"35":{"start":{"line":107,"column":4},"end":{"line":107,"column":16}}},"branchMap":{}},"src/tokens/ElasticGovernanceToken.sol":{"l":{"29":0,"30":0,"34":0,"35":0,"39":0,"40":0,"44":0,"45":0,"46":0,"47":0,"60":0,"79":0,"80":0,"89":0,"90":0,"91":0,"93":0,"102":0,"103":0,"107":0,"108":0,"109":0,"110":0,"112":0,"113":0,"115":0,"131":0,"132":0,"147":0,"148":0,"156":0,"166":0,"168":0,"170":0,"171":0,"181":0,"182":0,"192":0,"194":0,"209":0,"210":0,"218":0,"222":0,"226":0,"230":0,"239":0,"252":0,"253":0,"257":0,"258":0,"270":0,"271":0,"289":0,"291":0,"293":0,"294":0,"296":0,"299":0,"309":0,"310":0,"312":0,"314":0,"318":0,"319":0,"320":0,"324":0,"325":0,"326":0,"327":0,"328":0,"330":0,"332":0,"333":0,"335":0,"336":0,"337":0,"341":0,"342":0,"343":0,"347":0,"348":0,"349":0,"350":0,"351":0,"353":0,"355":0,"357":0,"358":0,"360":0,"361":0,"362":0,"364":0,"372":0,"373":0,"374":0,"376":0,"377":0,"378":0,"379":0,"381":0,"382":0,"384":0,"385":0,"387":0,"388":0,"389":0,"390":0,"391":0,"393":0,"402":0,"403":0,"404":0,"405":0,"406":0,"407":0,"408":0,"409":0,"410":0,"411":0,"412":0,"414":0,"415":0,"417":0,"420":0,"422":0,"423":0,"425":0,"434":0,"435":0,"438":0,"439":0,"446":0,"450":0,"451":0,"460":0,"461":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/tokens/ElasticGovernanceToken.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0},"fnMap":{"1":{"name":"onlyDAO","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":31,"column":2}}},"2":{"name":"onlyDAOorBurner","line":33,"loc":{"start":{"line":33,"column":2},"end":{"line":36,"column":2}}},"3":{"name":"onlyDAOorMinter","line":38,"loc":{"start":{"line":38,"column":2},"end":{"line":41,"column":2}}},"4":{"name":"constructor","line":43,"loc":{"start":{"line":43,"column":2},"end":{"line":48,"column":2}}},"5":{"name":"allowance","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":61,"column":2}}},"6":{"name":"approve","line":78,"loc":{"start":{"line":78,"column":2},"end":{"line":81,"column":2}}},"7":{"name":"balanceOf","line":88,"loc":{"start":{"line":88,"column":2},"end":{"line":94,"column":2}}},"8":{"name":"balanceOfInShares","line":101,"loc":{"start":{"line":101,"column":2},"end":{"line":104,"column":2}}},"9":{"name":"balanceOfVoting","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":117,"column":2}}},"10":{"name":"burn","line":128,"loc":{"start":{"line":125,"column":2},"end":{"line":133,"column":2}}},"11":{"name":"burnShares","line":144,"loc":{"start":{"line":141,"column":2},"end":{"line":149,"column":2}}},"12":{"name":"decimals","line":155,"loc":{"start":{"line":155,"column":2},"end":{"line":157,"column":2}}},"13":{"name":"decreaseAllowance","line":165,"loc":{"start":{"line":165,"column":2},"end":{"line":172,"column":2}}},"14":{"name":"increaseAllowance","line":180,"loc":{"start":{"line":180,"column":2},"end":{"line":183,"column":2}}},"15":{"name":"mint","line":191,"loc":{"start":{"line":191,"column":2},"end":{"line":195,"column":2}}},"16":{"name":"mintShares","line":206,"loc":{"start":{"line":203,"column":2},"end":{"line":211,"column":2}}},"17":{"name":"name","line":217,"loc":{"start":{"line":217,"column":2},"end":{"line":219,"column":2}}},"18":{"name":"numberOfTokenHolders","line":221,"loc":{"start":{"line":221,"column":2},"end":{"line":223,"column":2}}},"19":{"name":"setBurner","line":225,"loc":{"start":{"line":225,"column":2},"end":{"line":227,"column":2}}},"20":{"name":"setMinter","line":229,"loc":{"start":{"line":229,"column":2},"end":{"line":231,"column":2}}},"21":{"name":"symbol","line":238,"loc":{"start":{"line":238,"column":2},"end":{"line":240,"column":2}}},"22":{"name":"totalSupply","line":251,"loc":{"start":{"line":251,"column":2},"end":{"line":254,"column":2}}},"23":{"name":"totalSupplyInShares","line":256,"loc":{"start":{"line":256,"column":2},"end":{"line":259,"column":2}}},"24":{"name":"transfer","line":269,"loc":{"start":{"line":269,"column":2},"end":{"line":272,"column":2}}},"25":{"name":"transferFrom","line":284,"loc":{"start":{"line":284,"column":2},"end":{"line":300,"column":2}}},"26":{"name":"_approve","line":304,"loc":{"start":{"line":304,"column":2},"end":{"line":315,"column":2}}},"27":{"name":"_burn","line":317,"loc":{"start":{"line":317,"column":2},"end":{"line":321,"column":2}}},"28":{"name":"_burnShares","line":323,"loc":{"start":{"line":323,"column":2},"end":{"line":338,"column":2}}},"29":{"name":"_mint","line":340,"loc":{"start":{"line":340,"column":2},"end":{"line":344,"column":2}}},"30":{"name":"_mintShares","line":346,"loc":{"start":{"line":346,"column":2},"end":{"line":365,"column":2}}},"31":{"name":"_transfer","line":367,"loc":{"start":{"line":367,"column":2},"end":{"line":394,"column":2}}},"32":{"name":"_updateBalance","line":396,"loc":{"start":{"line":396,"column":2},"end":{"line":426,"column":2}}},"33":{"name":"_updateNumberOfTokenHolders","line":428,"loc":{"start":{"line":428,"column":2},"end":{"line":441,"column":2}}},"34":{"name":"_getEcosystem","line":445,"loc":{"start":{"line":445,"column":2},"end":{"line":447,"column":2}}},"35":{"name":"_getTokenHolder","line":449,"loc":{"start":{"line":449,"column":2},"end":{"line":457,"column":2}}},"36":{"name":"_getToken","line":459,"loc":{"start":{"line":459,"column":2},"end":{"line":462,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":90}},"2":{"start":{"line":34,"column":4},"end":{"line":34,"column":90}},"3":{"start":{"line":39,"column":4},"end":{"line":39,"column":90}},"4":{"start":{"line":44,"column":4},"end":{"line":44,"column":23}},"5":{"start":{"line":45,"column":4},"end":{"line":45,"column":27}},"6":{"start":{"line":46,"column":4},"end":{"line":46,"column":49}},"7":{"start":{"line":47,"column":4},"end":{"line":47,"column":23}},"8":{"start":{"line":60,"column":4},"end":{"line":60,"column":40}},"9":{"start":{"line":79,"column":4},"end":{"line":79,"column":42}},"10":{"start":{"line":80,"column":4},"end":{"line":80,"column":15}},"11":{"start":{"line":89,"column":4},"end":{"line":89,"column":45}},"12":{"start":{"line":90,"column":4},"end":{"line":90,"column":71}},"13":{"start":{"line":91,"column":4},"end":{"line":91,"column":67}},"14":{"start":{"line":93,"column":4},"end":{"line":93,"column":12}},"15":{"start":{"line":102,"column":4},"end":{"line":102,"column":71}},"16":{"start":{"line":103,"column":4},"end":{"line":103,"column":29}},"17":{"start":{"line":107,"column":4},"end":{"line":107,"column":45}},"18":{"start":{"line":108,"column":4},"end":{"line":108,"column":71}},"19":{"start":{"line":109,"column":4},"end":{"line":109,"column":59}},"20":{"start":{"line":110,"column":4},"end":{"line":110,"column":58}},"21":{"start":{"line":112,"column":4},"end":{"line":112,"column":3845}},"22":{"start":{"line":113,"column":6},"end":{"line":113,"column":61}},"23":{"start":{"line":115,"column":6},"end":{"line":115,"column":64}},"24":{"start":{"line":131,"column":4},"end":{"line":131,"column":27}},"25":{"start":{"line":132,"column":4},"end":{"line":132,"column":15}},"26":{"start":{"line":147,"column":4},"end":{"line":147,"column":33}},"27":{"start":{"line":148,"column":4},"end":{"line":148,"column":15}},"28":{"start":{"line":156,"column":4},"end":{"line":156,"column":13}},"29":{"start":{"line":166,"column":4},"end":{"line":166,"column":92}},"30":{"start":{"line":168,"column":4},"end":{"line":168,"column":74}},"31":{"start":{"line":170,"column":4},"end":{"line":170,"column":47}},"32":{"start":{"line":171,"column":4},"end":{"line":171,"column":15}},"33":{"start":{"line":181,"column":4},"end":{"line":181,"column":95}},"34":{"start":{"line":182,"column":4},"end":{"line":182,"column":15}},"35":{"start":{"line":192,"column":4},"end":{"line":192,"column":27}},"36":{"start":{"line":194,"column":4},"end":{"line":194,"column":15}},"37":{"start":{"line":209,"column":4},"end":{"line":209,"column":33}},"38":{"start":{"line":210,"column":4},"end":{"line":210,"column":15}},"39":{"start":{"line":218,"column":4},"end":{"line":218,"column":27}},"40":{"start":{"line":222,"column":4},"end":{"line":222,"column":43}},"41":{"start":{"line":226,"column":4},"end":{"line":226,"column":19}},"42":{"start":{"line":230,"column":4},"end":{"line":230,"column":19}},"43":{"start":{"line":239,"column":4},"end":{"line":239,"column":29}},"44":{"start":{"line":252,"column":4},"end":{"line":252,"column":45}},"45":{"start":{"line":253,"column":4},"end":{"line":253,"column":56}},"46":{"start":{"line":257,"column":4},"end":{"line":257,"column":45}},"47":{"start":{"line":258,"column":4},"end":{"line":258,"column":23}},"48":{"start":{"line":270,"column":4},"end":{"line":270,"column":38}},"49":{"start":{"line":271,"column":4},"end":{"line":271,"column":15}},"50":{"start":{"line":289,"column":4},"end":{"line":289,"column":97}},"51":{"start":{"line":291,"column":4},"end":{"line":291,"column":33}},"52":{"start":{"line":293,"column":4},"end":{"line":293,"column":9096}},"53":{"start":{"line":294,"column":6},"end":{"line":294,"column":91}},"54":{"start":{"line":296,"column":6},"end":{"line":296,"column":68}},"55":{"start":{"line":299,"column":4},"end":{"line":299,"column":15}},"56":{"start":{"line":309,"column":4},"end":{"line":309,"column":72}},"57":{"start":{"line":310,"column":4},"end":{"line":310,"column":72}},"58":{"start":{"line":312,"column":4},"end":{"line":312,"column":42}},"59":{"start":{"line":314,"column":4},"end":{"line":314,"column":44}},"60":{"start":{"line":318,"column":4},"end":{"line":318,"column":45}},"61":{"start":{"line":319,"column":4},"end":{"line":319,"column":76}},"62":{"start":{"line":320,"column":4},"end":{"line":320,"column":37}},"63":{"start":{"line":324,"column":4},"end":{"line":324,"column":57}},"64":{"start":{"line":325,"column":4},"end":{"line":325,"column":59}},"65":{"start":{"line":326,"column":4},"end":{"line":326,"column":84}},"66":{"start":{"line":327,"column":4},"end":{"line":327,"column":71}},"67":{"start":{"line":328,"column":4},"end":{"line":328,"column":52}},"68":{"start":{"line":330,"column":4},"end":{"line":330,"column":72}},"69":{"start":{"line":332,"column":4},"end":{"line":332,"column":58}},"70":{"start":{"line":333,"column":4},"end":{"line":333,"column":32}},"71":{"start":{"line":335,"column":4},"end":{"line":335,"column":83}},"72":{"start":{"line":336,"column":4},"end":{"line":336,"column":44}},"73":{"start":{"line":337,"column":4},"end":{"line":337,"column":84}},"74":{"start":{"line":341,"column":4},"end":{"line":341,"column":45}},"75":{"start":{"line":342,"column":4},"end":{"line":342,"column":76}},"76":{"start":{"line":343,"column":4},"end":{"line":343,"column":37}},"77":{"start":{"line":347,"column":4},"end":{"line":347,"column":57}},"78":{"start":{"line":348,"column":4},"end":{"line":348,"column":59}},"79":{"start":{"line":349,"column":4},"end":{"line":349,"column":84}},"80":{"start":{"line":350,"column":4},"end":{"line":350,"column":71}},"81":{"start":{"line":351,"column":4},"end":{"line":351,"column":52}},"82":{"start":{"line":353,"column":4},"end":{"line":353,"column":66}},"83":{"start":{"line":355,"column":4},"end":{"line":355,"column":71}},"84":{"start":{"line":357,"column":4},"end":{"line":357,"column":58}},"85":{"start":{"line":358,"column":4},"end":{"line":358,"column":32}},"86":{"start":{"line":360,"column":4},"end":{"line":360,"column":83}},"87":{"start":{"line":361,"column":4},"end":{"line":361,"column":44}},"88":{"start":{"line":362,"column":4},"end":{"line":362,"column":84}},"89":{"start":{"line":364,"column":4},"end":{"line":364,"column":47}},"90":{"start":{"line":372,"column":4},"end":{"line":372,"column":57}},"91":{"start":{"line":373,"column":4},"end":{"line":373,"column":59}},"92":{"start":{"line":374,"column":4},"end":{"line":374,"column":84}},"93":{"start":{"line":376,"column":4},"end":{"line":376,"column":72}},"94":{"start":{"line":377,"column":4},"end":{"line":377,"column":68}},"95":{"start":{"line":378,"column":4},"end":{"line":378,"column":60}},"96":{"start":{"line":379,"column":4},"end":{"line":379,"column":56}},"97":{"start":{"line":381,"column":4},"end":{"line":381,"column":76}},"98":{"start":{"line":382,"column":4},"end":{"line":382,"column":65}},"99":{"start":{"line":384,"column":4},"end":{"line":384,"column":79}},"100":{"start":{"line":385,"column":4},"end":{"line":385,"column":74}},"101":{"start":{"line":387,"column":4},"end":{"line":387,"column":83}},"102":{"start":{"line":388,"column":4},"end":{"line":388,"column":48}},"103":{"start":{"line":389,"column":4},"end":{"line":389,"column":46}},"104":{"start":{"line":390,"column":4},"end":{"line":390,"column":92}},"105":{"start":{"line":391,"column":4},"end":{"line":391,"column":88}},"106":{"start":{"line":393,"column":4},"end":{"line":393,"column":37}},"107":{"start":{"line":402,"column":4},"end":{"line":402,"column":57}},"108":{"start":{"line":403,"column":4},"end":{"line":403,"column":35}},"109":{"start":{"line":404,"column":4},"end":{"line":404,"column":37}},"110":{"start":{"line":405,"column":4},"end":{"line":405,"column":32}},"111":{"start":{"line":406,"column":4},"end":{"line":406,"column":39}},"112":{"start":{"line":407,"column":4},"end":{"line":407,"column":23}},"113":{"start":{"line":408,"column":4},"end":{"line":408,"column":23}},"114":{"start":{"line":409,"column":4},"end":{"line":409,"column":25}},"115":{"start":{"line":410,"column":4},"end":{"line":410,"column":37}},"116":{"start":{"line":411,"column":4},"end":{"line":411,"column":51}},"117":{"start":{"line":412,"column":4},"end":{"line":412,"column":63}},"118":{"start":{"line":414,"column":4},"end":{"line":414,"column":13874}},"119":{"start":{"line":415,"column":6},"end":{"line":415,"column":74}},"120":{"start":{"line":417,"column":6},"end":{"line":417,"column":74}},"121":{"start":{"line":420,"column":4},"end":{"line":420,"column":39}},"122":{"start":{"line":422,"column":4},"end":{"line":422,"column":60}},"123":{"start":{"line":423,"column":4},"end":{"line":423,"column":62}},"124":{"start":{"line":425,"column":4},"end":{"line":425,"column":23}},"125":{"start":{"line":434,"column":4},"end":{"line":434,"column":14460}},"126":{"start":{"line":435,"column":6},"end":{"line":435,"column":96}},"127":{"start":{"line":438,"column":4},"end":{"line":438,"column":14631}},"128":{"start":{"line":439,"column":6},"end":{"line":439,"column":96}},"129":{"start":{"line":446,"column":4},"end":{"line":446,"column":67}},"130":{"start":{"line":450,"column":4},"end":{"line":450,"column":57}},"131":{"start":{"line":451,"column":4},"end":{"line":451,"column":15134}},"132":{"start":{"line":460,"column":4},"end":{"line":460,"column":57}},"133":{"start":{"line":461,"column":4},"end":{"line":461,"column":83}}},"branchMap":{"1":{"line":29,"type":"if","locations":[{"start":{"line":29,"column":4},"end":{"line":29,"column":4}},{"start":{"line":29,"column":4},"end":{"line":29,"column":4}}]},"2":{"line":34,"type":"if","locations":[{"start":{"line":34,"column":4},"end":{"line":34,"column":4}},{"start":{"line":34,"column":4},"end":{"line":34,"column":4}}]},"3":{"line":39,"type":"if","locations":[{"start":{"line":39,"column":4},"end":{"line":39,"column":4}},{"start":{"line":39,"column":4},"end":{"line":39,"column":4}}]},"4":{"line":112,"type":"if","locations":[{"start":{"line":112,"column":4},"end":{"line":112,"column":4}},{"start":{"line":112,"column":4},"end":{"line":112,"column":4}}]},"5":{"line":168,"type":"if","locations":[{"start":{"line":168,"column":4},"end":{"line":168,"column":4}},{"start":{"line":168,"column":4},"end":{"line":168,"column":4}}]},"6":{"line":289,"type":"if","locations":[{"start":{"line":289,"column":4},"end":{"line":289,"column":4}},{"start":{"line":289,"column":4},"end":{"line":289,"column":4}}]},"7":{"line":293,"type":"if","locations":[{"start":{"line":293,"column":4},"end":{"line":293,"column":4}},{"start":{"line":293,"column":4},"end":{"line":293,"column":4}}]},"8":{"line":309,"type":"if","locations":[{"start":{"line":309,"column":4},"end":{"line":309,"column":4}},{"start":{"line":309,"column":4},"end":{"line":309,"column":4}}]},"9":{"line":310,"type":"if","locations":[{"start":{"line":310,"column":4},"end":{"line":310,"column":4}},{"start":{"line":310,"column":4},"end":{"line":310,"column":4}}]},"10":{"line":414,"type":"if","locations":[{"start":{"line":414,"column":4},"end":{"line":414,"column":4}},{"start":{"line":414,"column":4},"end":{"line":414,"column":4}}]},"11":{"line":434,"type":"if","locations":[{"start":{"line":434,"column":4},"end":{"line":434,"column":4}},{"start":{"line":434,"column":4},"end":{"line":434,"column":4}}]},"12":{"line":438,"type":"if","locations":[{"start":{"line":438,"column":4},"end":{"line":438,"column":4}},{"start":{"line":438,"column":4},"end":{"line":438,"column":4}}]}}}} \ No newline at end of file diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index 550f2c1..9bbe14f 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -12,9 +12,9 @@ import '../models/Token.sol'; import '../services/Configurator.sol'; contract ElasticDAO { - address internal controller; address internal deployer; address internal ecosystemModelAddress; + address public controller; address[] public summoners; uint256 public maxVotingLambda; diff --git a/src/models/DAO.sol b/src/models/DAO.sol index d9459dd..428a56c 100644 --- a/src/models/DAO.sol +++ b/src/models/DAO.sol @@ -42,7 +42,7 @@ contract DAO is EternalModel { } /** - * @dev checks if @param _uuid and @param _name exist + * @dev checks if @param _uuid exists * @param _uuid - address of the unique user ID * @return recordExists bool */ diff --git a/test/elasticDAOFactoryTest.js b/test/elasticDAOFactoryTest.js index acf0a9d..7dedcb9 100644 --- a/test/elasticDAOFactoryTest.js +++ b/test/elasticDAOFactoryTest.js @@ -1,7 +1,7 @@ const { ethers } = require('ethers'); const { expect } = require('chai'); -const { newDAO } = require('./helpers'); +const { newDAO, signers, summonedDAO } = require('./helpers'); describe('ElasticDAO: Factory', () => { it('Should allow a DAO to be deployed using the factory', async () => { @@ -9,4 +9,46 @@ describe('ElasticDAO: Factory', () => { expect(dao.uuid).to.not.equal(ethers.constants.AddressZero); expect(dao.ecosystem.governanceTokenAddress).to.not.equal(ethers.constants.AddressZero); }); + + it('Should updateFeeAddress', async () => { + const dao = await summonedDAO(); + const { agent, summoner2 } = await signers(); + + dao.sdk.changeSigner(agent); + + const tx = await dao.sdk.elasticDAOFactory.updateFeeAddress(summoner2.address); + const logs = await tx.wait(1); + + expect(logs.events[0].event).to.equal('FeeAddressUpdated'); + expect(logs.events[0].args.feeReceiver).to.equal(summoner2.address); + }); + + it('Should not updateFeeAddress when caller is not deployer', async () => { + const dao = await summonedDAO(); + const { summoner2 } = await signers(); + + dao.sdk.changeSigner(summoner2); + + await expect(dao.sdk.elasticDAOFactory.updateFeeAddress(summoner2.address)).to.be.revertedWith( + 'ElasticDAO: Only deployer', + ); + }); + + it('Should collectFees to the feeAddress', async () => { + const dao = await summonedDAO(); + const { agent } = await signers(); + + dao.sdk.changeSigner(agent); + + await dao.sdk.elasticDAOFactory.updateFeeAddress(agent.address); + + const feeAmountToCollect = await agent.provider.getBalance(dao.sdk.elasticDAOFactory.address); + + const tx = await dao.sdk.elasticDAOFactory.collectFees(); + const logs = await tx.wait(1); + + expect(logs.events[0].event).to.equal('FeesCollected'); + expect(logs.events[0].args.treasuryAddress).to.equal(agent.address); + expect(logs.events[0].args.amount).to.equal(feeAmountToCollect); + }); }); diff --git a/test/elasticDAOTests.js b/test/elasticDAOTests.js index f7b96e3..1f6ffef 100644 --- a/test/elasticDAOTests.js +++ b/test/elasticDAOTests.js @@ -1,5 +1,6 @@ const { expect } = require('chai'); const { ethers } = require('ethers'); +const { deployments } = require('hardhat'); const hre = require('hardhat').ethers; const { ethBalance, SDK, signers, summoners, summonedDAO } = require('./helpers'); @@ -186,4 +187,74 @@ describe('ElasticDAO: Core', () => { ), ).to.be.revertedWith('ElasticDAO: DAO must not be summoned'); }); + + it('Should not allow the caller to setController if not controller', async () => { + dao = await summonedDAO(); + + const { summoner1 } = await signers(); + dao.sdk.changeSigner(summoner1); + + await expect(dao.elasticDAO.contract.setController(summoner1.address)).to.be.revertedWith( + 'ElasticDAO: Only controller', + ); + }); + + it('Should allow the controller to setController', async () => { + dao = await summonedDAO(); + const { summoner1, agent } = await signers(); + dao.sdk.changeSigner(agent); + + await dao.elasticDAO.contract.setController(summoner1.address); + + const controller = await dao.elasticDAO.getController(); + expect(controller).to.equal(summoner1.address); + }); + + it('Should allow the controller to setMaxVotingLambda', async () => { + dao = await summonedDAO(); + const { agent } = await signers(); + dao.sdk.changeSigner(agent); + + await dao.elasticDAO.contract.setMaxVotingLambda(dao.toEthersBigNumber(5, 18)); + + const maxVotingLambda = await dao.elasticDAO.getMaxVotingLambda(); + expect(maxVotingLambda).to.equal(dao.toEthersBigNumber(5, 18)); + }); + + it('Should not allow the caller to setMaxVotingLambda if not controller', async () => { + dao = await summonedDAO(); + const { summoner1 } = await signers(); + dao.sdk.changeSigner(summoner1); + + await expect( + dao.elasticDAO.contract.setMaxVotingLambda(dao.toEthersBigNumber(5, 18)), + ).to.be.revertedWith('ElasticDAO: Only controller'); + }); + + it('Should getDAO', async () => { + const getDAO = await dao.elasticDAO.contract.getDAO(); + + expect(getDAO.uuid.toLowerCase()).to.equal(dao.id); + }); + + it('Should getEcosystem', async () => { + const getEcosystem = await dao.elasticDAO.contract.getEcosystem(); + + expect(getEcosystem.daoAddress.toLowerCase()).to.equal(dao.id); + }); + + it('Should check to see if a instance record exists by daoAddress', async () => { + const { agent } = await signers(); + const DAOModel = await deployments.get('DAO'); + const DAOModelInstance = new ethers.Contract(DAOModel.address, DAOModel.abi, agent); + const ecosystem = await dao.elasticDAO.contract.getEcosystem(); + const recordDoesntExist = await DAOModelInstance.exists( + ethers.constants.AddressZero, + ecosystem, + ); + const recordExists = await DAOModelInstance.exists(dao.uuid, ecosystem); + + expect(recordDoesntExist).to.equal(false); + expect(recordExists).to.equal(true); + }); }); From 2e8f4da6405f166c38a4a7c604680a7f912cb900 Mon Sep 17 00:00:00 2001 From: alleycatdev Date: Sat, 6 Feb 2021 21:14:56 -0500 Subject: [PATCH 020/118] removes balance multiplier and balance models --- coverage.json | 2 +- deploy/balance.js | 14 ---- deploy/balanceMultipliers.js | 16 ----- deploy/initialDeployment.js | 8 --- package.json | 6 +- src/libraries/ElasticMath.sol | 2 - src/models/Balance.sol | 96 --------------------------- src/models/BalanceMultipliers.sol | 62 ----------------- src/models/Ecosystem.sol | 16 ----- src/models/EternalModel.sol | 6 -- src/services/Configurator.sol | 2 - src/tokens/ElasticGovernanceToken.sol | 13 +--- test/capitalDeltaTest.js | 2 - test/ecosystemTests.js | 6 -- test/elasticDAOTests.js | 9 +-- test/env.js | 14 +--- yarn.lock | 17 ++--- 17 files changed, 18 insertions(+), 273 deletions(-) delete mode 100644 deploy/balance.js delete mode 100644 deploy/balanceMultipliers.js delete mode 100644 src/models/Balance.sol delete mode 100644 src/models/BalanceMultipliers.sol diff --git a/coverage.json b/coverage.json index ff552cd..a4b07d2 100644 --- a/coverage.json +++ b/coverage.json @@ -1 +1 @@ -{"src/core/ElasticDAO.sol":{"l":{"24":0,"25":0,"26":0,"29":0,"30":0,"32":0,"33":0,"36":0,"37":0,"38":0,"41":0,"42":0,"45":0,"46":0,"49":0,"50":0,"51":0,"52":0,"54":0,"55":0,"58":0,"59":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"76":0,"77":0,"78":0,"83":0,"84":0,"85":0,"88":0,"89":0,"91":0,"102":0,"103":0,"105":0,"116":0,"117":0,"118":0,"120":0,"124":0,"126":0,"131":0,"132":0,"141":0,"151":0,"154":0,"155":0,"158":0,"159":0,"160":0,"161":0,"164":0,"168":0,"169":0,"170":0,"171":0,"175":0,"187":0,"189":0,"190":0,"191":0,"195":0,"197":0,"198":0,"199":0,"200":0,"202":0,"204":0,"205":0,"207":0,"208":0,"214":0,"218":0,"224":0,"225":0,"229":0,"233":0,"234":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAO.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0},"fnMap":{"1":{"name":"onlyAfterSummoning","line":23,"loc":{"start":{"line":23,"column":2},"end":{"line":27,"column":2}}},"2":{"name":"onlyAfterTokenInitialized","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":34,"column":2}}},"3":{"name":"onlyBeforeSummoning","line":35,"loc":{"start":{"line":35,"column":2},"end":{"line":39,"column":2}}},"4":{"name":"onlyController","line":40,"loc":{"start":{"line":40,"column":2},"end":{"line":43,"column":2}}},"5":{"name":"onlyDeployer","line":44,"loc":{"start":{"line":44,"column":2},"end":{"line":47,"column":2}}},"6":{"name":"onlySummoners","line":48,"loc":{"start":{"line":48,"column":2},"end":{"line":56,"column":2}}},"7":{"name":"onlyWhenOpen","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":60,"column":2}}},"8":{"name":"constructor","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":79,"column":2}}},"9":{"name":"exit","line":81,"loc":{"start":{"line":81,"column":2},"end":{"line":92,"column":2}}},"10":{"name":"initializeToken","line":101,"loc":{"start":{"line":94,"column":2},"end":{"line":121,"column":2}}},"11":{"name":"join","line":123,"loc":{"start":{"line":123,"column":2},"end":{"line":165,"column":2}}},"12":{"name":"setController","line":167,"loc":{"start":{"line":167,"column":2},"end":{"line":172,"column":2}}},"13":{"name":"setMaxVotingLambda","line":174,"loc":{"start":{"line":174,"column":2},"end":{"line":176,"column":2}}},"14":{"name":"seedSummoning","line":185,"loc":{"start":{"line":180,"column":2},"end":{"line":192,"column":2}}},"15":{"name":"summon","line":194,"loc":{"start":{"line":194,"column":2},"end":{"line":209,"column":2}}},"16":{"name":"getDAO","line":213,"loc":{"start":{"line":213,"column":2},"end":{"line":215,"column":2}}},"17":{"name":"getEcosystem","line":217,"loc":{"start":{"line":217,"column":2},"end":{"line":219,"column":2}}},"18":{"name":"_getDAO","line":223,"loc":{"start":{"line":223,"column":2},"end":{"line":226,"column":2}}},"19":{"name":"_getEcosystem","line":228,"loc":{"start":{"line":228,"column":2},"end":{"line":230,"column":2}}},"20":{"name":"_getToken","line":232,"loc":{"start":{"line":232,"column":2},"end":{"line":236,"column":2}}},"21":{"name":null,"line":240,"loc":{"start":{"line":240,"column":2},"end":{"line":240,"column":31}}}},"statementMap":{"1":{"start":{"line":24,"column":4},"end":{"line":24,"column":39}},"2":{"start":{"line":25,"column":4},"end":{"line":25,"column":60}},"3":{"start":{"line":29,"column":4},"end":{"line":29,"column":57}},"4":{"start":{"line":30,"column":4},"end":{"line":30,"column":911}},"5":{"start":{"line":32,"column":4},"end":{"line":32,"column":77}},"6":{"start":{"line":36,"column":4},"end":{"line":36,"column":39}},"7":{"start":{"line":37,"column":4},"end":{"line":37,"column":73}},"8":{"start":{"line":41,"column":4},"end":{"line":41,"column":67}},"9":{"start":{"line":45,"column":4},"end":{"line":45,"column":63}},"10":{"start":{"line":49,"column":4},"end":{"line":49,"column":57}},"11":{"start":{"line":50,"column":4},"end":{"line":50,"column":52}},"12":{"start":{"line":51,"column":4},"end":{"line":51,"column":79}},"13":{"start":{"line":52,"column":4},"end":{"line":52,"column":64}},"14":{"start":{"line":54,"column":4},"end":{"line":54,"column":55}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":71}},"16":{"start":{"line":69,"column":4},"end":{"line":69,"column":49}},"17":{"start":{"line":70,"column":4},"end":{"line":70,"column":27}},"18":{"start":{"line":71,"column":4},"end":{"line":71,"column":24}},"19":{"start":{"line":72,"column":4},"end":{"line":72,"column":98}},"20":{"start":{"line":73,"column":4},"end":{"line":73,"column":40}},"21":{"start":{"line":74,"column":4},"end":{"line":74,"column":25}},"22":{"start":{"line":76,"column":4},"end":{"line":76,"column":74}},"23":{"start":{"line":77,"column":4},"end":{"line":77,"column":79}},"24":{"start":{"line":78,"column":4},"end":{"line":78,"column":74}},"25":{"start":{"line":83,"column":4},"end":{"line":83,"column":45}},"26":{"start":{"line":84,"column":4},"end":{"line":84,"column":77}},"27":{"start":{"line":85,"column":4},"end":{"line":85,"column":53}},"28":{"start":{"line":88,"column":4},"end":{"line":88,"column":72}},"29":{"start":{"line":89,"column":4},"end":{"line":89,"column":86}},"30":{"start":{"line":91,"column":4},"end":{"line":91,"column":41}},"31":{"start":{"line":102,"column":4},"end":{"line":102,"column":88}},"32":{"start":{"line":103,"column":4},"end":{"line":103,"column":57}},"33":{"start":{"line":105,"column":4},"end":{"line":105,"column":3531}},"34":{"start":{"line":116,"column":4},"end":{"line":116,"column":77}},"35":{"start":{"line":117,"column":4},"end":{"line":117,"column":38}},"36":{"start":{"line":118,"column":4},"end":{"line":118,"column":38}},"37":{"start":{"line":120,"column":4},"end":{"line":120,"column":51}},"38":{"start":{"line":124,"column":4},"end":{"line":124,"column":45}},"39":{"start":{"line":126,"column":4},"end":{"line":126,"column":4115}},"40":{"start":{"line":131,"column":4},"end":{"line":131,"column":77}},"41":{"start":{"line":132,"column":4},"end":{"line":132,"column":4326}},"42":{"start":{"line":141,"column":4},"end":{"line":141,"column":4772}},"43":{"start":{"line":151,"column":4},"end":{"line":151,"column":67}},"44":{"start":{"line":154,"column":4},"end":{"line":154,"column":65}},"45":{"start":{"line":155,"column":4},"end":{"line":155,"column":72}},"46":{"start":{"line":158,"column":4},"end":{"line":158,"column":57}},"47":{"start":{"line":159,"column":4},"end":{"line":159,"column":59}},"48":{"start":{"line":160,"column":4},"end":{"line":160,"column":18}},"49":{"start":{"line":161,"column":4},"end":{"line":161,"column":32}},"50":{"start":{"line":164,"column":4},"end":{"line":164,"column":53}},"51":{"start":{"line":168,"column":4},"end":{"line":168,"column":27}},"52":{"start":{"line":169,"column":4},"end":{"line":169,"column":83}},"53":{"start":{"line":170,"column":4},"end":{"line":170,"column":38}},"54":{"start":{"line":171,"column":4},"end":{"line":171,"column":38}},"55":{"start":{"line":175,"column":4},"end":{"line":175,"column":37}},"56":{"start":{"line":187,"column":4},"end":{"line":187,"column":45}},"57":{"start":{"line":189,"column":4},"end":{"line":189,"column":30}},"58":{"start":{"line":190,"column":4},"end":{"line":190,"column":62}},"59":{"start":{"line":191,"column":4},"end":{"line":191,"column":73}},"60":{"start":{"line":195,"column":4},"end":{"line":195,"column":98}},"61":{"start":{"line":197,"column":4},"end":{"line":197,"column":57}},"62":{"start":{"line":198,"column":4},"end":{"line":198,"column":52}},"63":{"start":{"line":199,"column":4},"end":{"line":199,"column":79}},"64":{"start":{"line":200,"column":4},"end":{"line":200,"column":6715}},"65":{"start":{"line":202,"column":4},"end":{"line":202,"column":77}},"66":{"start":{"line":204,"column":4},"end":{"line":204,"column":6835}},"67":{"start":{"line":205,"column":6},"end":{"line":205,"column":76}},"68":{"start":{"line":207,"column":4},"end":{"line":207,"column":22}},"69":{"start":{"line":208,"column":4},"end":{"line":208,"column":29}},"70":{"start":{"line":214,"column":4},"end":{"line":214,"column":20}},"71":{"start":{"line":218,"column":4},"end":{"line":218,"column":26}},"72":{"start":{"line":224,"column":4},"end":{"line":224,"column":57}},"73":{"start":{"line":225,"column":4},"end":{"line":225,"column":79}},"74":{"start":{"line":229,"column":4},"end":{"line":229,"column":70}},"75":{"start":{"line":233,"column":4},"end":{"line":233,"column":57}},"76":{"start":{"line":234,"column":4},"end":{"line":234,"column":7878}}},"branchMap":{"1":{"line":25,"type":"if","locations":[{"start":{"line":25,"column":4},"end":{"line":25,"column":4}},{"start":{"line":25,"column":4},"end":{"line":25,"column":4}}]},"2":{"line":32,"type":"if","locations":[{"start":{"line":32,"column":4},"end":{"line":32,"column":4}},{"start":{"line":32,"column":4},"end":{"line":32,"column":4}}]},"3":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":37,"column":4}},{"start":{"line":37,"column":4},"end":{"line":37,"column":4}}]},"4":{"line":41,"type":"if","locations":[{"start":{"line":41,"column":4},"end":{"line":41,"column":4}},{"start":{"line":41,"column":4},"end":{"line":41,"column":4}}]},"5":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":45,"column":4}},{"start":{"line":45,"column":4},"end":{"line":45,"column":4}}]},"6":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":54,"column":4}},{"start":{"line":54,"column":4},"end":{"line":54,"column":4}}]},"7":{"line":58,"type":"if","locations":[{"start":{"line":58,"column":4},"end":{"line":58,"column":4}},{"start":{"line":58,"column":4},"end":{"line":58,"column":4}}]},"8":{"line":102,"type":"if","locations":[{"start":{"line":102,"column":4},"end":{"line":102,"column":4}},{"start":{"line":102,"column":4},"end":{"line":102,"column":4}}]},"9":{"line":126,"type":"if","locations":[{"start":{"line":126,"column":4},"end":{"line":126,"column":4}},{"start":{"line":126,"column":4},"end":{"line":126,"column":4}}]},"10":{"line":151,"type":"if","locations":[{"start":{"line":151,"column":4},"end":{"line":151,"column":4}},{"start":{"line":151,"column":4},"end":{"line":151,"column":4}}]},"11":{"line":195,"type":"if","locations":[{"start":{"line":195,"column":4},"end":{"line":195,"column":4}},{"start":{"line":195,"column":4},"end":{"line":195,"column":4}}]}}},"src/core/ElasticDAOFactory.sol":{"l":{"21":0,"22":0,"26":0,"27":0,"46":0,"50":0,"52":0,"53":0,"54":0,"58":0,"59":0,"63":0,"65":0,"66":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAOFactory.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0},"b":{"1":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0},"fnMap":{"1":{"name":"onlyDeployer","line":20,"loc":{"start":{"line":20,"column":2},"end":{"line":23,"column":2}}},"2":{"name":"constructor","line":25,"loc":{"start":{"line":25,"column":2},"end":{"line":28,"column":2}}},"3":{"name":"deployDAOAndToken","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":55,"column":2}}},"4":{"name":"updateFeeAddress","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":60,"column":2}}},"5":{"name":"collectFees","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":67,"column":2}}},"6":{"name":null,"line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":71,"column":31}}}},"statementMap":{"1":{"start":{"line":21,"column":4},"end":{"line":21,"column":63}},"2":{"start":{"line":26,"column":4},"end":{"line":26,"column":24}},"3":{"start":{"line":27,"column":4},"end":{"line":27,"column":49}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":1354}},"5":{"start":{"line":50,"column":4},"end":{"line":50,"column":96}},"6":{"start":{"line":52,"column":4},"end":{"line":52,"column":49}},"7":{"start":{"line":53,"column":4},"end":{"line":53,"column":55}},"8":{"start":{"line":54,"column":4},"end":{"line":54,"column":41}},"9":{"start":{"line":58,"column":4},"end":{"line":58,"column":37}},"10":{"start":{"line":59,"column":4},"end":{"line":59,"column":40}},"11":{"start":{"line":63,"column":4},"end":{"line":63,"column":42}},"12":{"start":{"line":65,"column":4},"end":{"line":65,"column":30}},"13":{"start":{"line":66,"column":4},"end":{"line":66,"column":51}}},"branchMap":{"1":{"line":21,"type":"if","locations":[{"start":{"line":21,"column":4},"end":{"line":21,"column":4}},{"start":{"line":21,"column":4},"end":{"line":21,"column":4}}]}}},"src/interfaces/IElasticToken.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IElasticToken.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/interfaces/IERC20.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IERC20.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/libraries/ElasticMath.sol":{"l":{"18":0,"42":0,"44":0,"47":0,"50":0,"53":0,"56":0,"59":0,"62":0,"65":0,"68":0,"76":0,"94":0,"107":0,"124":0,"134":0,"144":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/ElasticMath.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0},"b":{},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0},"fnMap":{"1":{"name":"capitalDelta","line":13,"loc":{"start":{"line":13,"column":2},"end":{"line":19,"column":2}}},"2":{"name":"deltaE","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":69,"column":2}}},"3":{"name":"lambdaFromT","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":77,"column":2}}},"4":{"name":"mDash","line":89,"loc":{"start":{"line":89,"column":2},"end":{"line":95,"column":2}}},"5":{"name":"revamp","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":108,"column":2}}},"6":{"name":"t","line":119,"loc":{"start":{"line":119,"column":2},"end":{"line":125,"column":2}}},"7":{"name":"wmul","line":133,"loc":{"start":{"line":133,"column":2},"end":{"line":135,"column":2}}},"8":{"name":"wdiv","line":143,"loc":{"start":{"line":143,"column":2},"end":{"line":145,"column":2}}}},"statementMap":{"1":{"start":{"line":18,"column":4},"end":{"line":18,"column":53}},"2":{"start":{"line":42,"column":4},"end":{"line":42,"column":58}},"3":{"start":{"line":44,"column":4},"end":{"line":44,"column":42}},"4":{"start":{"line":47,"column":4},"end":{"line":47,"column":34}},"5":{"start":{"line":50,"column":4},"end":{"line":50,"column":31}},"6":{"start":{"line":53,"column":4},"end":{"line":53,"column":44}},"7":{"start":{"line":56,"column":4},"end":{"line":56,"column":26}},"8":{"start":{"line":59,"column":4},"end":{"line":59,"column":35}},"9":{"start":{"line":62,"column":4},"end":{"line":62,"column":34}},"10":{"start":{"line":65,"column":4},"end":{"line":65,"column":27}},"11":{"start":{"line":68,"column":4},"end":{"line":68,"column":22}},"12":{"start":{"line":76,"column":4},"end":{"line":76,"column":30}},"13":{"start":{"line":94,"column":4},"end":{"line":94,"column":44}},"14":{"start":{"line":107,"column":4},"end":{"line":107,"column":57}},"15":{"start":{"line":124,"column":4},"end":{"line":124,"column":35}},"16":{"start":{"line":134,"column":4},"end":{"line":134,"column":90}},"17":{"start":{"line":144,"column":4},"end":{"line":144,"column":72}}},"branchMap":{}},"src/libraries/SafeMath.sol":{"l":{"29":0,"30":0,"32":0,"46":0,"64":0,"65":0,"67":0,"84":0,"85":0,"88":0,"89":0,"91":0,"107":0,"127":0,"128":0,"131":0,"147":0,"167":0,"168":0,"172":0,"173":0,"175":0,"177":0,"179":0,"180":0,"181":0,"189":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/SafeMath.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0},"fnMap":{"1":{"name":"add","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":33,"column":2}}},"2":{"name":"sub","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":2}}},"3":{"name":"sub","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":68,"column":2}}},"4":{"name":"mul","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":92,"column":2}}},"5":{"name":"div","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":108,"column":2}}},"6":{"name":"div","line":122,"loc":{"start":{"line":122,"column":2},"end":{"line":132,"column":2}}},"7":{"name":"mod","line":146,"loc":{"start":{"line":146,"column":2},"end":{"line":148,"column":2}}},"8":{"name":"mod","line":162,"loc":{"start":{"line":162,"column":2},"end":{"line":169,"column":2}}},"9":{"name":"pow","line":171,"loc":{"start":{"line":171,"column":2},"end":{"line":183,"column":2}}},"10":{"name":"max","line":188,"loc":{"start":{"line":188,"column":2},"end":{"line":190,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":21}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":49}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":12}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":54}},"5":{"start":{"line":64,"column":4},"end":{"line":64,"column":32}},"6":{"start":{"line":65,"column":4},"end":{"line":65,"column":21}},"7":{"start":{"line":67,"column":4},"end":{"line":67,"column":12}},"8":{"start":{"line":84,"column":4},"end":{"line":84,"column":2356}},"9":{"start":{"line":85,"column":6},"end":{"line":85,"column":14}},"10":{"start":{"line":88,"column":4},"end":{"line":88,"column":21}},"11":{"start":{"line":89,"column":4},"end":{"line":89,"column":59}},"12":{"start":{"line":91,"column":4},"end":{"line":91,"column":12}},"13":{"start":{"line":107,"column":4},"end":{"line":107,"column":50}},"14":{"start":{"line":127,"column":4},"end":{"line":127,"column":31}},"15":{"start":{"line":128,"column":4},"end":{"line":128,"column":21}},"16":{"start":{"line":131,"column":4},"end":{"line":131,"column":12}},"17":{"start":{"line":147,"column":4},"end":{"line":147,"column":48}},"18":{"start":{"line":167,"column":4},"end":{"line":167,"column":32}},"19":{"start":{"line":168,"column":4},"end":{"line":168,"column":16}},"20":{"start":{"line":172,"column":4},"end":{"line":172,"column":5030}},"21":{"start":{"line":173,"column":6},"end":{"line":173,"column":14}},"22":{"start":{"line":174,"column":11},"end":{"line":174,"column":5078}},"23":{"start":{"line":175,"column":6},"end":{"line":175,"column":17}},"24":{"start":{"line":176,"column":11},"end":{"line":176,"column":5129}},"25":{"start":{"line":177,"column":6},"end":{"line":177,"column":14}},"26":{"start":{"line":179,"column":6},"end":{"line":179,"column":22}},"27":{"start":{"line":180,"column":6},"end":{"line":180,"column":71}},"28":{"start":{"line":180,"column":55},"end":{"line":180,"column":70}},"29":{"start":{"line":181,"column":6},"end":{"line":181,"column":14}},"30":{"start":{"line":189,"column":4},"end":{"line":189,"column":25}}},"branchMap":{"1":{"line":30,"type":"if","locations":[{"start":{"line":30,"column":4},"end":{"line":30,"column":4}},{"start":{"line":30,"column":4},"end":{"line":30,"column":4}}]},"2":{"line":64,"type":"if","locations":[{"start":{"line":64,"column":4},"end":{"line":64,"column":4}},{"start":{"line":64,"column":4},"end":{"line":64,"column":4}}]},"3":{"line":84,"type":"if","locations":[{"start":{"line":84,"column":4},"end":{"line":84,"column":4}},{"start":{"line":84,"column":4},"end":{"line":84,"column":4}}]},"4":{"line":89,"type":"if","locations":[{"start":{"line":89,"column":4},"end":{"line":89,"column":4}},{"start":{"line":89,"column":4},"end":{"line":89,"column":4}}]},"5":{"line":127,"type":"if","locations":[{"start":{"line":127,"column":4},"end":{"line":127,"column":4}},{"start":{"line":127,"column":4},"end":{"line":127,"column":4}}]},"6":{"line":167,"type":"if","locations":[{"start":{"line":167,"column":4},"end":{"line":167,"column":4}},{"start":{"line":167,"column":4},"end":{"line":167,"column":4}}]},"7":{"line":172,"type":"if","locations":[{"start":{"line":172,"column":4},"end":{"line":172,"column":4}},{"start":{"line":172,"column":4},"end":{"line":172,"column":4}}]},"8":{"line":174,"type":"if","locations":[{"start":{"line":174,"column":11},"end":{"line":174,"column":11}},{"start":{"line":174,"column":11},"end":{"line":174,"column":11}}]},"9":{"line":176,"type":"if","locations":[{"start":{"line":176,"column":11},"end":{"line":176,"column":11}},{"start":{"line":176,"column":11},"end":{"line":176,"column":11}}]}}},"src/models/Balance.sol":{"l":{"35":0,"36":0,"37":0,"38":0,"41":0,"42":0,"44":0,"51":0,"52":0,"53":0,"55":0,"64":0,"72":0,"74":0,"80":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Balance.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0},"b":{"1":[0,0]},"f":{"1":0,"2":0,"3":0},"fnMap":{"1":{"name":"deserialize","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":56,"column":2}}},"2":{"name":"exists","line":58,"loc":{"start":{"line":58,"column":2},"end":{"line":65,"column":2}}},"3":{"name":"serialize","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":95,"column":2}}}},"statementMap":{"1":{"start":{"line":35,"column":4},"end":{"line":35,"column":36}},"2":{"start":{"line":36,"column":4},"end":{"line":36,"column":32}},"3":{"start":{"line":37,"column":4},"end":{"line":37,"column":38}},"4":{"start":{"line":38,"column":4},"end":{"line":38,"column":1214}},"5":{"start":{"line":41,"column":4},"end":{"line":41,"column":24}},"6":{"start":{"line":42,"column":4},"end":{"line":42,"column":36}},"7":{"start":{"line":44,"column":4},"end":{"line":44,"column":1419}},"8":{"start":{"line":51,"column":4},"end":{"line":51,"column":36}},"9":{"start":{"line":52,"column":4},"end":{"line":52,"column":34}},"10":{"start":{"line":53,"column":4},"end":{"line":53,"column":34}},"11":{"start":{"line":55,"column":4},"end":{"line":55,"column":17}},"12":{"start":{"line":64,"column":4},"end":{"line":64,"column":15}},"13":{"start":{"line":72,"column":4},"end":{"line":72,"column":71}},"14":{"start":{"line":74,"column":4},"end":{"line":74,"column":2167}},"15":{"start":{"line":80,"column":4},"end":{"line":80,"column":2333}},"16":{"start":{"line":85,"column":4},"end":{"line":85,"column":57}},"17":{"start":{"line":86,"column":4},"end":{"line":86,"column":54}},"18":{"start":{"line":87,"column":4},"end":{"line":87,"column":50}},"19":{"start":{"line":88,"column":4},"end":{"line":88,"column":34}},"20":{"start":{"line":89,"column":4},"end":{"line":89,"column":34}},"21":{"start":{"line":90,"column":4},"end":{"line":90,"column":50}},"22":{"start":{"line":91,"column":4},"end":{"line":91,"column":42}},"23":{"start":{"line":92,"column":4},"end":{"line":92,"column":2815}}},"branchMap":{"1":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":72,"column":4}},{"start":{"line":72,"column":4},"end":{"line":72,"column":4}}]}}},"src/models/BalanceMultipliers.sol":{"l":{"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"45":0,"53":0,"55":0,"59":0,"60":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/BalanceMultipliers.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0},"b":{"1":[0,0]},"f":{"1":0,"2":0,"3":0},"fnMap":{"1":{"name":"deserialize","line":26,"loc":{"start":{"line":26,"column":2},"end":{"line":38,"column":2}}},"2":{"name":"exists","line":40,"loc":{"start":{"line":40,"column":2},"end":{"line":46,"column":2}}},"3":{"name":"serialize","line":52,"loc":{"start":{"line":52,"column":2},"end":{"line":61,"column":2}}}},"statementMap":{"1":{"start":{"line":31,"column":4},"end":{"line":31,"column":36}},"2":{"start":{"line":32,"column":4},"end":{"line":32,"column":32}},"3":{"start":{"line":33,"column":4},"end":{"line":33,"column":32}},"4":{"start":{"line":34,"column":4},"end":{"line":34,"column":76}},"5":{"start":{"line":35,"column":4},"end":{"line":35,"column":76}},"6":{"start":{"line":36,"column":4},"end":{"line":36,"column":24}},"7":{"start":{"line":37,"column":4},"end":{"line":37,"column":17}},"8":{"start":{"line":45,"column":4},"end":{"line":45,"column":15}},"9":{"start":{"line":53,"column":4},"end":{"line":53,"column":90}},"10":{"start":{"line":55,"column":4},"end":{"line":55,"column":1650}},"11":{"start":{"line":59,"column":4},"end":{"line":59,"column":81}},"12":{"start":{"line":60,"column":4},"end":{"line":60,"column":81}}},"branchMap":{"1":{"line":53,"type":"if","locations":[{"start":{"line":53,"column":4},"end":{"line":53,"column":4}},{"start":{"line":53,"column":4},"end":{"line":53,"column":4}}]}}},"src/models/DAO.sol":{"l":{"32":0,"33":0,"35":0,"36":0,"37":0,"38":0,"41":0,"50":0,"54":0,"64":0,"72":0,"77":0,"78":0,"79":0,"81":0,"82":0,"83":0,"84":0,"88":0,"92":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/DAO.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0},"fnMap":{"1":{"name":"deserialize","line":27,"loc":{"start":{"line":27,"column":2},"end":{"line":42,"column":2}}},"2":{"name":"exists","line":49,"loc":{"start":{"line":49,"column":2},"end":{"line":51,"column":2}}},"3":{"name":"getSummoner","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":55,"column":2}}},"4":{"name":"isSummoner","line":63,"loc":{"start":{"line":63,"column":2},"end":{"line":65,"column":2}}},"5":{"name":"serialize","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":89,"column":2}}},"6":{"name":"_exists","line":91,"loc":{"start":{"line":91,"column":2},"end":{"line":93,"column":2}}}},"statementMap":{"1":{"start":{"line":32,"column":4},"end":{"line":32,"column":22}},"2":{"start":{"line":33,"column":4},"end":{"line":33,"column":32}},"3":{"start":{"line":35,"column":4},"end":{"line":35,"column":903}},"4":{"start":{"line":36,"column":6},"end":{"line":36,"column":66}},"5":{"start":{"line":37,"column":6},"end":{"line":37,"column":90}},"6":{"start":{"line":38,"column":6},"end":{"line":38,"column":72}},"7":{"start":{"line":41,"column":4},"end":{"line":41,"column":17}},"8":{"start":{"line":50,"column":4},"end":{"line":50,"column":25}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":76}},"10":{"start":{"line":64,"column":4},"end":{"line":64,"column":82}},"11":{"start":{"line":72,"column":4},"end":{"line":72,"column":2142}},"12":{"start":{"line":77,"column":4},"end":{"line":77,"column":69}},"13":{"start":{"line":78,"column":4},"end":{"line":78,"column":93}},"14":{"start":{"line":79,"column":4},"end":{"line":79,"column":75}},"15":{"start":{"line":81,"column":4},"end":{"line":81,"column":2530}},"16":{"start":{"line":82,"column":6},"end":{"line":82,"column":2597}},"17":{"start":{"line":83,"column":8},"end":{"line":83,"column":89}},"18":{"start":{"line":84,"column":8},"end":{"line":84,"column":90}},"19":{"start":{"line":88,"column":4},"end":{"line":88,"column":62}},"20":{"start":{"line":92,"column":4},"end":{"line":92,"column":58}}},"branchMap":{"1":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":35,"column":4}},{"start":{"line":35,"column":4},"end":{"line":35,"column":4}}]},"2":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":72,"column":4}},{"start":{"line":72,"column":4},"end":{"line":72,"column":4}}]},"3":{"line":81,"type":"if","locations":[{"start":{"line":81,"column":4},"end":{"line":81,"column":4}},{"start":{"line":81,"column":4},"end":{"line":81,"column":4}}]}}},"src/models/Ecosystem.sol":{"l":{"35":0,"36":0,"37":0,"40":0,"43":0,"46":0,"49":0,"50":0,"53":0,"56":0,"61":0,"70":0,"78":0,"80":0,"87":0,"91":0,"95":0,"99":0,"100":0,"104":0,"108":0,"113":0,"117":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Ecosystem.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0},"b":{"1":[0,0],"2":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0},"fnMap":{"1":{"name":"deserialize","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":62,"column":2}}},"2":{"name":"exists","line":69,"loc":{"start":{"line":69,"column":2},"end":{"line":71,"column":2}}},"3":{"name":"serialize","line":77,"loc":{"start":{"line":77,"column":2},"end":{"line":114,"column":2}}},"4":{"name":"_exists","line":116,"loc":{"start":{"line":116,"column":2},"end":{"line":118,"column":2}}}},"statementMap":{"1":{"start":{"line":35,"column":4},"end":{"line":35,"column":1142}},"2":{"start":{"line":36,"column":6},"end":{"line":36,"column":36}},"3":{"start":{"line":37,"column":6},"end":{"line":37,"column":1217}},"4":{"start":{"line":40,"column":6},"end":{"line":40,"column":1345}},"5":{"start":{"line":43,"column":6},"end":{"line":43,"column":1495}},"6":{"start":{"line":46,"column":6},"end":{"line":46,"column":1623}},"7":{"start":{"line":49,"column":6},"end":{"line":49,"column":49}},"8":{"start":{"line":50,"column":6},"end":{"line":50,"column":1795}},"9":{"start":{"line":53,"column":6},"end":{"line":53,"column":1929}},"10":{"start":{"line":56,"column":6},"end":{"line":56,"column":2065}},"11":{"start":{"line":61,"column":4},"end":{"line":61,"column":17}},"12":{"start":{"line":70,"column":4},"end":{"line":70,"column":31}},"13":{"start":{"line":78,"column":4},"end":{"line":78,"column":50}},"14":{"start":{"line":80,"column":4},"end":{"line":80,"column":2684}},"15":{"start":{"line":87,"column":4},"end":{"line":87,"column":2891}},"16":{"start":{"line":91,"column":4},"end":{"line":91,"column":3018}},"17":{"start":{"line":95,"column":4},"end":{"line":95,"column":3167}},"18":{"start":{"line":99,"column":4},"end":{"line":99,"column":98}},"19":{"start":{"line":100,"column":4},"end":{"line":100,"column":3395}},"20":{"start":{"line":104,"column":4},"end":{"line":104,"column":3528}},"21":{"start":{"line":108,"column":4},"end":{"line":108,"column":3663}},"22":{"start":{"line":113,"column":4},"end":{"line":113,"column":68}},"23":{"start":{"line":117,"column":4},"end":{"line":117,"column":64}}},"branchMap":{"1":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":35,"column":4}},{"start":{"line":35,"column":4},"end":{"line":35,"column":4}}]},"2":{"line":80,"type":"if","locations":[{"start":{"line":80,"column":4},"end":{"line":80,"column":4}},{"start":{"line":80,"column":4},"end":{"line":80,"column":4}}]}}},"src/models/EternalModel.sol":{"l":{"30":0,"37":0,"39":0,"46":0,"53":0,"60":0,"67":0,"69":0,"81":0,"89":0,"97":0,"105":0,"113":0,"121":0,"132":0,"139":0,"141":0,"148":0,"155":0,"162":0,"169":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/EternalModel.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0},"fnMap":{"1":{"name":"getUint","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":31,"column":2}}},"2":{"name":"getString","line":36,"loc":{"start":{"line":36,"column":2},"end":{"line":40,"column":2}}},"3":{"name":"getAddress","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":2}}},"4":{"name":"getBool","line":52,"loc":{"start":{"line":52,"column":2},"end":{"line":54,"column":2}}},"5":{"name":"getInt","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":61,"column":2}}},"6":{"name":"getBytes","line":66,"loc":{"start":{"line":66,"column":2},"end":{"line":70,"column":2}}},"7":{"name":"setUint","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":82,"column":2}}},"8":{"name":"setString","line":88,"loc":{"start":{"line":88,"column":2},"end":{"line":90,"column":2}}},"9":{"name":"setAddress","line":96,"loc":{"start":{"line":96,"column":2},"end":{"line":98,"column":2}}},"10":{"name":"setBool","line":104,"loc":{"start":{"line":104,"column":2},"end":{"line":106,"column":2}}},"11":{"name":"setInt","line":112,"loc":{"start":{"line":112,"column":2},"end":{"line":114,"column":2}}},"12":{"name":"setBytes","line":120,"loc":{"start":{"line":120,"column":2},"end":{"line":122,"column":2}}},"13":{"name":"deleteUint","line":131,"loc":{"start":{"line":131,"column":2},"end":{"line":133,"column":2}}},"14":{"name":"deleteString","line":138,"loc":{"start":{"line":138,"column":2},"end":{"line":142,"column":2}}},"15":{"name":"deleteAddress","line":147,"loc":{"start":{"line":147,"column":2},"end":{"line":149,"column":2}}},"16":{"name":"deleteBool","line":154,"loc":{"start":{"line":154,"column":2},"end":{"line":156,"column":2}}},"17":{"name":"deleteInt","line":161,"loc":{"start":{"line":161,"column":2},"end":{"line":163,"column":2}}},"18":{"name":"deleteBytes","line":168,"loc":{"start":{"line":168,"column":2},"end":{"line":170,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":30}},"2":{"start":{"line":37,"column":4},"end":{"line":37,"column":52}},"3":{"start":{"line":39,"column":4},"end":{"line":39,"column":32}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":33}},"5":{"start":{"line":53,"column":4},"end":{"line":53,"column":30}},"6":{"start":{"line":60,"column":4},"end":{"line":60,"column":29}},"7":{"start":{"line":67,"column":4},"end":{"line":67,"column":52}},"8":{"start":{"line":69,"column":4},"end":{"line":69,"column":31}},"9":{"start":{"line":81,"column":4},"end":{"line":81,"column":31}},"10":{"start":{"line":89,"column":4},"end":{"line":89,"column":33}},"11":{"start":{"line":97,"column":4},"end":{"line":97,"column":34}},"12":{"start":{"line":105,"column":4},"end":{"line":105,"column":31}},"13":{"start":{"line":113,"column":4},"end":{"line":113,"column":30}},"14":{"start":{"line":121,"column":4},"end":{"line":121,"column":32}},"15":{"start":{"line":139,"column":4},"end":{"line":139,"column":52}}},"branchMap":{"1":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":37,"column":4}},{"start":{"line":37,"column":4},"end":{"line":37,"column":4}}]},"2":{"line":67,"type":"if","locations":[{"start":{"line":67,"column":4},"end":{"line":67,"column":4}},{"start":{"line":67,"column":4},"end":{"line":67,"column":4}}]},"3":{"line":139,"type":"if","locations":[{"start":{"line":139,"column":4},"end":{"line":139,"column":4}},{"start":{"line":139,"column":4},"end":{"line":139,"column":4}}]}}},"src/models/Token.sol":{"l":{"42":0,"43":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"58":0,"62":0,"66":0,"68":0,"69":0,"77":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"93":0,"99":0,"103":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Token.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0},"fnMap":{"1":{"name":"deserialize","line":37,"loc":{"start":{"line":37,"column":2},"end":{"line":59,"column":2}}},"2":{"name":"exists","line":61,"loc":{"start":{"line":61,"column":2},"end":{"line":63,"column":2}}},"3":{"name":"incrementCounter","line":65,"loc":{"start":{"line":65,"column":2},"end":{"line":70,"column":2}}},"4":{"name":"serialize","line":76,"loc":{"start":{"line":76,"column":2},"end":{"line":94,"column":2}}},"5":{"name":"updateNumberOfTokenHolders","line":96,"loc":{"start":{"line":96,"column":2},"end":{"line":100,"column":2}}},"6":{"name":"_exists","line":102,"loc":{"start":{"line":102,"column":2},"end":{"line":104,"column":2}}}},"statementMap":{"1":{"start":{"line":42,"column":4},"end":{"line":42,"column":22}},"2":{"start":{"line":43,"column":4},"end":{"line":43,"column":32}},"3":{"start":{"line":45,"column":4},"end":{"line":45,"column":1269}},"4":{"start":{"line":46,"column":6},"end":{"line":46,"column":70}},"5":{"start":{"line":47,"column":6},"end":{"line":47,"column":64}},"6":{"start":{"line":48,"column":6},"end":{"line":48,"column":76}},"7":{"start":{"line":49,"column":6},"end":{"line":49,"column":58}},"8":{"start":{"line":50,"column":6},"end":{"line":50,"column":68}},"9":{"start":{"line":51,"column":6},"end":{"line":51,"column":58}},"10":{"start":{"line":52,"column":6},"end":{"line":52,"column":90}},"11":{"start":{"line":53,"column":6},"end":{"line":53,"column":66}},"12":{"start":{"line":54,"column":6},"end":{"line":54,"column":96}},"13":{"start":{"line":55,"column":6},"end":{"line":55,"column":70}},"14":{"start":{"line":58,"column":4},"end":{"line":58,"column":17}},"15":{"start":{"line":62,"column":4},"end":{"line":62,"column":25}},"16":{"start":{"line":66,"column":4},"end":{"line":66,"column":65}},"17":{"start":{"line":68,"column":4},"end":{"line":68,"column":76}},"18":{"start":{"line":69,"column":4},"end":{"line":69,"column":83}},"19":{"start":{"line":77,"column":4},"end":{"line":77,"column":2629}},"20":{"start":{"line":84,"column":4},"end":{"line":84,"column":69}},"21":{"start":{"line":85,"column":4},"end":{"line":85,"column":73}},"22":{"start":{"line":86,"column":4},"end":{"line":86,"column":67}},"23":{"start":{"line":87,"column":4},"end":{"line":87,"column":79}},"24":{"start":{"line":88,"column":4},"end":{"line":88,"column":61}},"25":{"start":{"line":89,"column":4},"end":{"line":89,"column":71}},"26":{"start":{"line":90,"column":4},"end":{"line":90,"column":61}},"27":{"start":{"line":91,"column":4},"end":{"line":91,"column":93}},"28":{"start":{"line":93,"column":4},"end":{"line":93,"column":62}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":92}},"30":{"start":{"line":103,"column":4},"end":{"line":103,"column":58}}},"branchMap":{"1":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":45,"column":4}},{"start":{"line":45,"column":4},"end":{"line":45,"column":4}}]},"2":{"line":66,"type":"if","locations":[{"start":{"line":66,"column":4},"end":{"line":66,"column":4}},{"start":{"line":66,"column":4},"end":{"line":66,"column":4}}]},"3":{"line":77,"type":"if","locations":[{"start":{"line":77,"column":4},"end":{"line":77,"column":4}},{"start":{"line":77,"column":4},"end":{"line":77,"column":4}}]}}},"src/models/TokenHolder.sol":{"l":{"29":0,"30":0,"31":0,"33":0,"34":0,"35":0,"38":0,"46":0,"54":0,"56":0,"57":0,"59":0,"67":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/TokenHolder.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0},"b":{"1":[0,0],"2":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0},"fnMap":{"1":{"name":"deserialize","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":39,"column":2}}},"2":{"name":"exists","line":41,"loc":{"start":{"line":41,"column":2},"end":{"line":47,"column":2}}},"3":{"name":"serialize","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":60,"column":2}}},"4":{"name":"_exists","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":68,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":28}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":32}},"3":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":1003}},"5":{"start":{"line":34,"column":6},"end":{"line":34,"column":98}},"6":{"start":{"line":35,"column":6},"end":{"line":35,"column":96}},"7":{"start":{"line":38,"column":4},"end":{"line":38,"column":17}},"8":{"start":{"line":46,"column":4},"end":{"line":46,"column":48}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":71}},"10":{"start":{"line":56,"column":4},"end":{"line":56,"column":95}},"11":{"start":{"line":57,"column":4},"end":{"line":57,"column":93}},"12":{"start":{"line":59,"column":4},"end":{"line":59,"column":84}},"13":{"start":{"line":67,"column":4},"end":{"line":67,"column":74}}},"branchMap":{"1":{"line":33,"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":33,"column":4}},{"start":{"line":33,"column":4},"end":{"line":33,"column":4}}]},"2":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":54,"column":4}},{"start":{"line":54,"column":4},"end":{"line":54,"column":4}}]}}},"src/services/Configurator.sol":{"l":{"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"50":0,"52":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"63":0,"65":0,"66":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"103":0,"104":0,"105":0,"107":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/services/Configurator.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0},"b":{},"f":{"1":0,"2":0,"3":0},"fnMap":{"1":{"name":"buildDAO","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":39,"column":2}}},"2":{"name":"buildEcosystem","line":46,"loc":{"start":{"line":46,"column":2},"end":{"line":67,"column":2}}},"3":{"name":"buildToken","line":82,"loc":{"start":{"line":82,"column":2},"end":{"line":108,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":52}},"2":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":29}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":19}},"5":{"start":{"line":34,"column":4},"end":{"line":34,"column":45}},"6":{"start":{"line":35,"column":4},"end":{"line":35,"column":23}},"7":{"start":{"line":36,"column":4},"end":{"line":36,"column":29}},"8":{"start":{"line":37,"column":4},"end":{"line":37,"column":28}},"9":{"start":{"line":38,"column":4},"end":{"line":38,"column":14}},"10":{"start":{"line":50,"column":4},"end":{"line":50,"column":74}},"11":{"start":{"line":52,"column":4},"end":{"line":52,"column":36}},"12":{"start":{"line":55,"column":4},"end":{"line":55,"column":63}},"13":{"start":{"line":56,"column":4},"end":{"line":56,"column":85}},"14":{"start":{"line":57,"column":4},"end":{"line":57,"column":55}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":67}},"16":{"start":{"line":59,"column":4},"end":{"line":59,"column":71}},"17":{"start":{"line":60,"column":4},"end":{"line":60,"column":59}},"18":{"start":{"line":63,"column":4},"end":{"line":63,"column":63}},"19":{"start":{"line":65,"column":4},"end":{"line":65,"column":40}},"20":{"start":{"line":66,"column":4},"end":{"line":66,"column":20}},"21":{"start":{"line":91,"column":4},"end":{"line":91,"column":60}},"22":{"start":{"line":92,"column":4},"end":{"line":92,"column":21}},"23":{"start":{"line":93,"column":4},"end":{"line":93,"column":31}},"24":{"start":{"line":94,"column":4},"end":{"line":94,"column":33}},"25":{"start":{"line":95,"column":4},"end":{"line":95,"column":15}},"26":{"start":{"line":96,"column":4},"end":{"line":96,"column":19}},"27":{"start":{"line":97,"column":4},"end":{"line":97,"column":32}},"28":{"start":{"line":98,"column":4},"end":{"line":98,"column":47}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":21}},"30":{"start":{"line":100,"column":4},"end":{"line":100,"column":25}},"31":{"start":{"line":101,"column":4},"end":{"line":101,"column":97}},"32":{"start":{"line":103,"column":4},"end":{"line":103,"column":49}},"33":{"start":{"line":104,"column":4},"end":{"line":104,"column":68}},"34":{"start":{"line":105,"column":4},"end":{"line":105,"column":32}},"35":{"start":{"line":107,"column":4},"end":{"line":107,"column":16}}},"branchMap":{}},"src/tokens/ElasticGovernanceToken.sol":{"l":{"29":0,"30":0,"34":0,"35":0,"39":0,"40":0,"44":0,"45":0,"46":0,"47":0,"60":0,"79":0,"80":0,"89":0,"90":0,"91":0,"93":0,"102":0,"103":0,"107":0,"108":0,"109":0,"110":0,"112":0,"113":0,"115":0,"131":0,"132":0,"147":0,"148":0,"156":0,"166":0,"168":0,"170":0,"171":0,"181":0,"182":0,"192":0,"194":0,"209":0,"210":0,"218":0,"222":0,"226":0,"230":0,"239":0,"252":0,"253":0,"257":0,"258":0,"270":0,"271":0,"289":0,"291":0,"293":0,"294":0,"296":0,"299":0,"309":0,"310":0,"312":0,"314":0,"318":0,"319":0,"320":0,"324":0,"325":0,"326":0,"327":0,"328":0,"330":0,"332":0,"333":0,"335":0,"336":0,"337":0,"341":0,"342":0,"343":0,"347":0,"348":0,"349":0,"350":0,"351":0,"353":0,"355":0,"357":0,"358":0,"360":0,"361":0,"362":0,"364":0,"372":0,"373":0,"374":0,"376":0,"377":0,"378":0,"379":0,"381":0,"382":0,"384":0,"385":0,"387":0,"388":0,"389":0,"390":0,"391":0,"393":0,"402":0,"403":0,"404":0,"405":0,"406":0,"407":0,"408":0,"409":0,"410":0,"411":0,"412":0,"414":0,"415":0,"417":0,"420":0,"422":0,"423":0,"425":0,"434":0,"435":0,"438":0,"439":0,"446":0,"450":0,"451":0,"460":0,"461":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/tokens/ElasticGovernanceToken.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":0,"108":0,"109":0,"110":0,"111":0,"112":0,"113":0,"114":0,"115":0,"116":0,"117":0,"118":0,"119":0,"120":0,"121":0,"122":0,"123":0,"124":0,"125":0,"126":0,"127":0,"128":0,"129":0,"130":0,"131":0,"132":0,"133":0},"b":{"1":[0,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[0,0],"11":[0,0],"12":[0,0]},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0},"fnMap":{"1":{"name":"onlyDAO","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":31,"column":2}}},"2":{"name":"onlyDAOorBurner","line":33,"loc":{"start":{"line":33,"column":2},"end":{"line":36,"column":2}}},"3":{"name":"onlyDAOorMinter","line":38,"loc":{"start":{"line":38,"column":2},"end":{"line":41,"column":2}}},"4":{"name":"constructor","line":43,"loc":{"start":{"line":43,"column":2},"end":{"line":48,"column":2}}},"5":{"name":"allowance","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":61,"column":2}}},"6":{"name":"approve","line":78,"loc":{"start":{"line":78,"column":2},"end":{"line":81,"column":2}}},"7":{"name":"balanceOf","line":88,"loc":{"start":{"line":88,"column":2},"end":{"line":94,"column":2}}},"8":{"name":"balanceOfInShares","line":101,"loc":{"start":{"line":101,"column":2},"end":{"line":104,"column":2}}},"9":{"name":"balanceOfVoting","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":117,"column":2}}},"10":{"name":"burn","line":128,"loc":{"start":{"line":125,"column":2},"end":{"line":133,"column":2}}},"11":{"name":"burnShares","line":144,"loc":{"start":{"line":141,"column":2},"end":{"line":149,"column":2}}},"12":{"name":"decimals","line":155,"loc":{"start":{"line":155,"column":2},"end":{"line":157,"column":2}}},"13":{"name":"decreaseAllowance","line":165,"loc":{"start":{"line":165,"column":2},"end":{"line":172,"column":2}}},"14":{"name":"increaseAllowance","line":180,"loc":{"start":{"line":180,"column":2},"end":{"line":183,"column":2}}},"15":{"name":"mint","line":191,"loc":{"start":{"line":191,"column":2},"end":{"line":195,"column":2}}},"16":{"name":"mintShares","line":206,"loc":{"start":{"line":203,"column":2},"end":{"line":211,"column":2}}},"17":{"name":"name","line":217,"loc":{"start":{"line":217,"column":2},"end":{"line":219,"column":2}}},"18":{"name":"numberOfTokenHolders","line":221,"loc":{"start":{"line":221,"column":2},"end":{"line":223,"column":2}}},"19":{"name":"setBurner","line":225,"loc":{"start":{"line":225,"column":2},"end":{"line":227,"column":2}}},"20":{"name":"setMinter","line":229,"loc":{"start":{"line":229,"column":2},"end":{"line":231,"column":2}}},"21":{"name":"symbol","line":238,"loc":{"start":{"line":238,"column":2},"end":{"line":240,"column":2}}},"22":{"name":"totalSupply","line":251,"loc":{"start":{"line":251,"column":2},"end":{"line":254,"column":2}}},"23":{"name":"totalSupplyInShares","line":256,"loc":{"start":{"line":256,"column":2},"end":{"line":259,"column":2}}},"24":{"name":"transfer","line":269,"loc":{"start":{"line":269,"column":2},"end":{"line":272,"column":2}}},"25":{"name":"transferFrom","line":284,"loc":{"start":{"line":284,"column":2},"end":{"line":300,"column":2}}},"26":{"name":"_approve","line":304,"loc":{"start":{"line":304,"column":2},"end":{"line":315,"column":2}}},"27":{"name":"_burn","line":317,"loc":{"start":{"line":317,"column":2},"end":{"line":321,"column":2}}},"28":{"name":"_burnShares","line":323,"loc":{"start":{"line":323,"column":2},"end":{"line":338,"column":2}}},"29":{"name":"_mint","line":340,"loc":{"start":{"line":340,"column":2},"end":{"line":344,"column":2}}},"30":{"name":"_mintShares","line":346,"loc":{"start":{"line":346,"column":2},"end":{"line":365,"column":2}}},"31":{"name":"_transfer","line":367,"loc":{"start":{"line":367,"column":2},"end":{"line":394,"column":2}}},"32":{"name":"_updateBalance","line":396,"loc":{"start":{"line":396,"column":2},"end":{"line":426,"column":2}}},"33":{"name":"_updateNumberOfTokenHolders","line":428,"loc":{"start":{"line":428,"column":2},"end":{"line":441,"column":2}}},"34":{"name":"_getEcosystem","line":445,"loc":{"start":{"line":445,"column":2},"end":{"line":447,"column":2}}},"35":{"name":"_getTokenHolder","line":449,"loc":{"start":{"line":449,"column":2},"end":{"line":457,"column":2}}},"36":{"name":"_getToken","line":459,"loc":{"start":{"line":459,"column":2},"end":{"line":462,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":90}},"2":{"start":{"line":34,"column":4},"end":{"line":34,"column":90}},"3":{"start":{"line":39,"column":4},"end":{"line":39,"column":90}},"4":{"start":{"line":44,"column":4},"end":{"line":44,"column":23}},"5":{"start":{"line":45,"column":4},"end":{"line":45,"column":27}},"6":{"start":{"line":46,"column":4},"end":{"line":46,"column":49}},"7":{"start":{"line":47,"column":4},"end":{"line":47,"column":23}},"8":{"start":{"line":60,"column":4},"end":{"line":60,"column":40}},"9":{"start":{"line":79,"column":4},"end":{"line":79,"column":42}},"10":{"start":{"line":80,"column":4},"end":{"line":80,"column":15}},"11":{"start":{"line":89,"column":4},"end":{"line":89,"column":45}},"12":{"start":{"line":90,"column":4},"end":{"line":90,"column":71}},"13":{"start":{"line":91,"column":4},"end":{"line":91,"column":67}},"14":{"start":{"line":93,"column":4},"end":{"line":93,"column":12}},"15":{"start":{"line":102,"column":4},"end":{"line":102,"column":71}},"16":{"start":{"line":103,"column":4},"end":{"line":103,"column":29}},"17":{"start":{"line":107,"column":4},"end":{"line":107,"column":45}},"18":{"start":{"line":108,"column":4},"end":{"line":108,"column":71}},"19":{"start":{"line":109,"column":4},"end":{"line":109,"column":59}},"20":{"start":{"line":110,"column":4},"end":{"line":110,"column":58}},"21":{"start":{"line":112,"column":4},"end":{"line":112,"column":3845}},"22":{"start":{"line":113,"column":6},"end":{"line":113,"column":61}},"23":{"start":{"line":115,"column":6},"end":{"line":115,"column":64}},"24":{"start":{"line":131,"column":4},"end":{"line":131,"column":27}},"25":{"start":{"line":132,"column":4},"end":{"line":132,"column":15}},"26":{"start":{"line":147,"column":4},"end":{"line":147,"column":33}},"27":{"start":{"line":148,"column":4},"end":{"line":148,"column":15}},"28":{"start":{"line":156,"column":4},"end":{"line":156,"column":13}},"29":{"start":{"line":166,"column":4},"end":{"line":166,"column":92}},"30":{"start":{"line":168,"column":4},"end":{"line":168,"column":74}},"31":{"start":{"line":170,"column":4},"end":{"line":170,"column":47}},"32":{"start":{"line":171,"column":4},"end":{"line":171,"column":15}},"33":{"start":{"line":181,"column":4},"end":{"line":181,"column":95}},"34":{"start":{"line":182,"column":4},"end":{"line":182,"column":15}},"35":{"start":{"line":192,"column":4},"end":{"line":192,"column":27}},"36":{"start":{"line":194,"column":4},"end":{"line":194,"column":15}},"37":{"start":{"line":209,"column":4},"end":{"line":209,"column":33}},"38":{"start":{"line":210,"column":4},"end":{"line":210,"column":15}},"39":{"start":{"line":218,"column":4},"end":{"line":218,"column":27}},"40":{"start":{"line":222,"column":4},"end":{"line":222,"column":43}},"41":{"start":{"line":226,"column":4},"end":{"line":226,"column":19}},"42":{"start":{"line":230,"column":4},"end":{"line":230,"column":19}},"43":{"start":{"line":239,"column":4},"end":{"line":239,"column":29}},"44":{"start":{"line":252,"column":4},"end":{"line":252,"column":45}},"45":{"start":{"line":253,"column":4},"end":{"line":253,"column":56}},"46":{"start":{"line":257,"column":4},"end":{"line":257,"column":45}},"47":{"start":{"line":258,"column":4},"end":{"line":258,"column":23}},"48":{"start":{"line":270,"column":4},"end":{"line":270,"column":38}},"49":{"start":{"line":271,"column":4},"end":{"line":271,"column":15}},"50":{"start":{"line":289,"column":4},"end":{"line":289,"column":97}},"51":{"start":{"line":291,"column":4},"end":{"line":291,"column":33}},"52":{"start":{"line":293,"column":4},"end":{"line":293,"column":9096}},"53":{"start":{"line":294,"column":6},"end":{"line":294,"column":91}},"54":{"start":{"line":296,"column":6},"end":{"line":296,"column":68}},"55":{"start":{"line":299,"column":4},"end":{"line":299,"column":15}},"56":{"start":{"line":309,"column":4},"end":{"line":309,"column":72}},"57":{"start":{"line":310,"column":4},"end":{"line":310,"column":72}},"58":{"start":{"line":312,"column":4},"end":{"line":312,"column":42}},"59":{"start":{"line":314,"column":4},"end":{"line":314,"column":44}},"60":{"start":{"line":318,"column":4},"end":{"line":318,"column":45}},"61":{"start":{"line":319,"column":4},"end":{"line":319,"column":76}},"62":{"start":{"line":320,"column":4},"end":{"line":320,"column":37}},"63":{"start":{"line":324,"column":4},"end":{"line":324,"column":57}},"64":{"start":{"line":325,"column":4},"end":{"line":325,"column":59}},"65":{"start":{"line":326,"column":4},"end":{"line":326,"column":84}},"66":{"start":{"line":327,"column":4},"end":{"line":327,"column":71}},"67":{"start":{"line":328,"column":4},"end":{"line":328,"column":52}},"68":{"start":{"line":330,"column":4},"end":{"line":330,"column":72}},"69":{"start":{"line":332,"column":4},"end":{"line":332,"column":58}},"70":{"start":{"line":333,"column":4},"end":{"line":333,"column":32}},"71":{"start":{"line":335,"column":4},"end":{"line":335,"column":83}},"72":{"start":{"line":336,"column":4},"end":{"line":336,"column":44}},"73":{"start":{"line":337,"column":4},"end":{"line":337,"column":84}},"74":{"start":{"line":341,"column":4},"end":{"line":341,"column":45}},"75":{"start":{"line":342,"column":4},"end":{"line":342,"column":76}},"76":{"start":{"line":343,"column":4},"end":{"line":343,"column":37}},"77":{"start":{"line":347,"column":4},"end":{"line":347,"column":57}},"78":{"start":{"line":348,"column":4},"end":{"line":348,"column":59}},"79":{"start":{"line":349,"column":4},"end":{"line":349,"column":84}},"80":{"start":{"line":350,"column":4},"end":{"line":350,"column":71}},"81":{"start":{"line":351,"column":4},"end":{"line":351,"column":52}},"82":{"start":{"line":353,"column":4},"end":{"line":353,"column":66}},"83":{"start":{"line":355,"column":4},"end":{"line":355,"column":71}},"84":{"start":{"line":357,"column":4},"end":{"line":357,"column":58}},"85":{"start":{"line":358,"column":4},"end":{"line":358,"column":32}},"86":{"start":{"line":360,"column":4},"end":{"line":360,"column":83}},"87":{"start":{"line":361,"column":4},"end":{"line":361,"column":44}},"88":{"start":{"line":362,"column":4},"end":{"line":362,"column":84}},"89":{"start":{"line":364,"column":4},"end":{"line":364,"column":47}},"90":{"start":{"line":372,"column":4},"end":{"line":372,"column":57}},"91":{"start":{"line":373,"column":4},"end":{"line":373,"column":59}},"92":{"start":{"line":374,"column":4},"end":{"line":374,"column":84}},"93":{"start":{"line":376,"column":4},"end":{"line":376,"column":72}},"94":{"start":{"line":377,"column":4},"end":{"line":377,"column":68}},"95":{"start":{"line":378,"column":4},"end":{"line":378,"column":60}},"96":{"start":{"line":379,"column":4},"end":{"line":379,"column":56}},"97":{"start":{"line":381,"column":4},"end":{"line":381,"column":76}},"98":{"start":{"line":382,"column":4},"end":{"line":382,"column":65}},"99":{"start":{"line":384,"column":4},"end":{"line":384,"column":79}},"100":{"start":{"line":385,"column":4},"end":{"line":385,"column":74}},"101":{"start":{"line":387,"column":4},"end":{"line":387,"column":83}},"102":{"start":{"line":388,"column":4},"end":{"line":388,"column":48}},"103":{"start":{"line":389,"column":4},"end":{"line":389,"column":46}},"104":{"start":{"line":390,"column":4},"end":{"line":390,"column":92}},"105":{"start":{"line":391,"column":4},"end":{"line":391,"column":88}},"106":{"start":{"line":393,"column":4},"end":{"line":393,"column":37}},"107":{"start":{"line":402,"column":4},"end":{"line":402,"column":57}},"108":{"start":{"line":403,"column":4},"end":{"line":403,"column":35}},"109":{"start":{"line":404,"column":4},"end":{"line":404,"column":37}},"110":{"start":{"line":405,"column":4},"end":{"line":405,"column":32}},"111":{"start":{"line":406,"column":4},"end":{"line":406,"column":39}},"112":{"start":{"line":407,"column":4},"end":{"line":407,"column":23}},"113":{"start":{"line":408,"column":4},"end":{"line":408,"column":23}},"114":{"start":{"line":409,"column":4},"end":{"line":409,"column":25}},"115":{"start":{"line":410,"column":4},"end":{"line":410,"column":37}},"116":{"start":{"line":411,"column":4},"end":{"line":411,"column":51}},"117":{"start":{"line":412,"column":4},"end":{"line":412,"column":63}},"118":{"start":{"line":414,"column":4},"end":{"line":414,"column":13874}},"119":{"start":{"line":415,"column":6},"end":{"line":415,"column":74}},"120":{"start":{"line":417,"column":6},"end":{"line":417,"column":74}},"121":{"start":{"line":420,"column":4},"end":{"line":420,"column":39}},"122":{"start":{"line":422,"column":4},"end":{"line":422,"column":60}},"123":{"start":{"line":423,"column":4},"end":{"line":423,"column":62}},"124":{"start":{"line":425,"column":4},"end":{"line":425,"column":23}},"125":{"start":{"line":434,"column":4},"end":{"line":434,"column":14460}},"126":{"start":{"line":435,"column":6},"end":{"line":435,"column":96}},"127":{"start":{"line":438,"column":4},"end":{"line":438,"column":14631}},"128":{"start":{"line":439,"column":6},"end":{"line":439,"column":96}},"129":{"start":{"line":446,"column":4},"end":{"line":446,"column":67}},"130":{"start":{"line":450,"column":4},"end":{"line":450,"column":57}},"131":{"start":{"line":451,"column":4},"end":{"line":451,"column":15134}},"132":{"start":{"line":460,"column":4},"end":{"line":460,"column":57}},"133":{"start":{"line":461,"column":4},"end":{"line":461,"column":83}}},"branchMap":{"1":{"line":29,"type":"if","locations":[{"start":{"line":29,"column":4},"end":{"line":29,"column":4}},{"start":{"line":29,"column":4},"end":{"line":29,"column":4}}]},"2":{"line":34,"type":"if","locations":[{"start":{"line":34,"column":4},"end":{"line":34,"column":4}},{"start":{"line":34,"column":4},"end":{"line":34,"column":4}}]},"3":{"line":39,"type":"if","locations":[{"start":{"line":39,"column":4},"end":{"line":39,"column":4}},{"start":{"line":39,"column":4},"end":{"line":39,"column":4}}]},"4":{"line":112,"type":"if","locations":[{"start":{"line":112,"column":4},"end":{"line":112,"column":4}},{"start":{"line":112,"column":4},"end":{"line":112,"column":4}}]},"5":{"line":168,"type":"if","locations":[{"start":{"line":168,"column":4},"end":{"line":168,"column":4}},{"start":{"line":168,"column":4},"end":{"line":168,"column":4}}]},"6":{"line":289,"type":"if","locations":[{"start":{"line":289,"column":4},"end":{"line":289,"column":4}},{"start":{"line":289,"column":4},"end":{"line":289,"column":4}}]},"7":{"line":293,"type":"if","locations":[{"start":{"line":293,"column":4},"end":{"line":293,"column":4}},{"start":{"line":293,"column":4},"end":{"line":293,"column":4}}]},"8":{"line":309,"type":"if","locations":[{"start":{"line":309,"column":4},"end":{"line":309,"column":4}},{"start":{"line":309,"column":4},"end":{"line":309,"column":4}}]},"9":{"line":310,"type":"if","locations":[{"start":{"line":310,"column":4},"end":{"line":310,"column":4}},{"start":{"line":310,"column":4},"end":{"line":310,"column":4}}]},"10":{"line":414,"type":"if","locations":[{"start":{"line":414,"column":4},"end":{"line":414,"column":4}},{"start":{"line":414,"column":4},"end":{"line":414,"column":4}}]},"11":{"line":434,"type":"if","locations":[{"start":{"line":434,"column":4},"end":{"line":434,"column":4}},{"start":{"line":434,"column":4},"end":{"line":434,"column":4}}]},"12":{"line":438,"type":"if","locations":[{"start":{"line":438,"column":4},"end":{"line":438,"column":4}},{"start":{"line":438,"column":4},"end":{"line":438,"column":4}}]}}}} \ No newline at end of file +{"src/core/ElasticDAO.sol":{"l":{"24":0,"25":0,"26":0,"29":46,"30":46,"32":46,"33":45,"36":325,"37":325,"38":325,"41":0,"42":0,"45":58,"46":57,"49":267,"50":267,"51":267,"52":267,"54":267,"55":265,"58":0,"59":0,"69":87,"70":87,"71":87,"72":87,"73":87,"74":87,"76":87,"77":87,"78":87,"83":0,"84":0,"85":0,"88":0,"89":0,"91":0,"102":57,"103":57,"105":57,"116":57,"117":57,"118":57,"120":57,"124":0,"126":0,"131":0,"132":0,"141":0,"151":0,"154":0,"155":0,"158":0,"159":0,"160":0,"161":0,"164":0,"168":0,"169":0,"170":0,"171":0,"175":0,"187":45,"189":45,"190":45,"191":45,"195":219,"197":218,"198":218,"199":218,"200":218,"202":218,"204":218,"205":652,"207":217,"208":217,"214":1,"218":2,"224":326,"225":326,"229":1007,"233":45,"234":45},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAO.sol","s":{"1":0,"2":0,"3":46,"4":46,"5":46,"6":325,"7":325,"8":0,"9":58,"10":267,"11":267,"12":267,"13":267,"14":267,"15":0,"16":87,"17":87,"18":87,"19":87,"20":87,"21":87,"22":87,"23":87,"24":87,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":57,"32":57,"33":57,"34":57,"35":57,"36":57,"37":57,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":45,"57":45,"58":45,"59":45,"60":219,"61":218,"62":218,"63":218,"64":218,"65":218,"66":218,"67":652,"68":217,"69":217,"70":1,"71":2,"72":326,"73":326,"74":1007,"75":45,"76":45},"b":{"1":[0,0],"2":[45,1],"3":[325,0],"4":[0,0],"5":[57,1],"6":[265,2],"7":[0,0],"8":[57,0],"9":[0,0],"10":[0,0],"11":[218,1]},"f":{"1":0,"2":46,"3":325,"4":0,"5":58,"6":267,"7":0,"8":87,"9":0,"10":57,"11":0,"12":0,"13":0,"14":45,"15":219,"16":1,"17":2,"18":326,"19":1007,"20":45,"21":0},"fnMap":{"1":{"name":"onlyAfterSummoning","line":23,"loc":{"start":{"line":23,"column":2},"end":{"line":27,"column":2}}},"2":{"name":"onlyAfterTokenInitialized","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":34,"column":2}}},"3":{"name":"onlyBeforeSummoning","line":35,"loc":{"start":{"line":35,"column":2},"end":{"line":39,"column":2}}},"4":{"name":"onlyController","line":40,"loc":{"start":{"line":40,"column":2},"end":{"line":43,"column":2}}},"5":{"name":"onlyDeployer","line":44,"loc":{"start":{"line":44,"column":2},"end":{"line":47,"column":2}}},"6":{"name":"onlySummoners","line":48,"loc":{"start":{"line":48,"column":2},"end":{"line":56,"column":2}}},"7":{"name":"onlyWhenOpen","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":60,"column":2}}},"8":{"name":"constructor","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":79,"column":2}}},"9":{"name":"exit","line":81,"loc":{"start":{"line":81,"column":2},"end":{"line":92,"column":2}}},"10":{"name":"initializeToken","line":101,"loc":{"start":{"line":94,"column":2},"end":{"line":121,"column":2}}},"11":{"name":"join","line":123,"loc":{"start":{"line":123,"column":2},"end":{"line":165,"column":2}}},"12":{"name":"setController","line":167,"loc":{"start":{"line":167,"column":2},"end":{"line":172,"column":2}}},"13":{"name":"setMaxVotingLambda","line":174,"loc":{"start":{"line":174,"column":2},"end":{"line":176,"column":2}}},"14":{"name":"seedSummoning","line":185,"loc":{"start":{"line":180,"column":2},"end":{"line":192,"column":2}}},"15":{"name":"summon","line":194,"loc":{"start":{"line":194,"column":2},"end":{"line":209,"column":2}}},"16":{"name":"getDAO","line":213,"loc":{"start":{"line":213,"column":2},"end":{"line":215,"column":2}}},"17":{"name":"getEcosystem","line":217,"loc":{"start":{"line":217,"column":2},"end":{"line":219,"column":2}}},"18":{"name":"_getDAO","line":223,"loc":{"start":{"line":223,"column":2},"end":{"line":226,"column":2}}},"19":{"name":"_getEcosystem","line":228,"loc":{"start":{"line":228,"column":2},"end":{"line":230,"column":2}}},"20":{"name":"_getToken","line":232,"loc":{"start":{"line":232,"column":2},"end":{"line":236,"column":2}}},"21":{"name":null,"line":240,"loc":{"start":{"line":240,"column":2},"end":{"line":240,"column":31}}}},"statementMap":{"1":{"start":{"line":24,"column":4},"end":{"line":24,"column":39}},"2":{"start":{"line":25,"column":4},"end":{"line":25,"column":60}},"3":{"start":{"line":29,"column":4},"end":{"line":29,"column":57}},"4":{"start":{"line":30,"column":4},"end":{"line":30,"column":911}},"5":{"start":{"line":32,"column":4},"end":{"line":32,"column":77}},"6":{"start":{"line":36,"column":4},"end":{"line":36,"column":39}},"7":{"start":{"line":37,"column":4},"end":{"line":37,"column":73}},"8":{"start":{"line":41,"column":4},"end":{"line":41,"column":67}},"9":{"start":{"line":45,"column":4},"end":{"line":45,"column":63}},"10":{"start":{"line":49,"column":4},"end":{"line":49,"column":57}},"11":{"start":{"line":50,"column":4},"end":{"line":50,"column":52}},"12":{"start":{"line":51,"column":4},"end":{"line":51,"column":79}},"13":{"start":{"line":52,"column":4},"end":{"line":52,"column":64}},"14":{"start":{"line":54,"column":4},"end":{"line":54,"column":55}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":71}},"16":{"start":{"line":69,"column":4},"end":{"line":69,"column":49}},"17":{"start":{"line":70,"column":4},"end":{"line":70,"column":27}},"18":{"start":{"line":71,"column":4},"end":{"line":71,"column":24}},"19":{"start":{"line":72,"column":4},"end":{"line":72,"column":98}},"20":{"start":{"line":73,"column":4},"end":{"line":73,"column":40}},"21":{"start":{"line":74,"column":4},"end":{"line":74,"column":25}},"22":{"start":{"line":76,"column":4},"end":{"line":76,"column":74}},"23":{"start":{"line":77,"column":4},"end":{"line":77,"column":79}},"24":{"start":{"line":78,"column":4},"end":{"line":78,"column":74}},"25":{"start":{"line":83,"column":4},"end":{"line":83,"column":45}},"26":{"start":{"line":84,"column":4},"end":{"line":84,"column":77}},"27":{"start":{"line":85,"column":4},"end":{"line":85,"column":53}},"28":{"start":{"line":88,"column":4},"end":{"line":88,"column":72}},"29":{"start":{"line":89,"column":4},"end":{"line":89,"column":86}},"30":{"start":{"line":91,"column":4},"end":{"line":91,"column":41}},"31":{"start":{"line":102,"column":4},"end":{"line":102,"column":88}},"32":{"start":{"line":103,"column":4},"end":{"line":103,"column":57}},"33":{"start":{"line":105,"column":4},"end":{"line":105,"column":3531}},"34":{"start":{"line":116,"column":4},"end":{"line":116,"column":77}},"35":{"start":{"line":117,"column":4},"end":{"line":117,"column":38}},"36":{"start":{"line":118,"column":4},"end":{"line":118,"column":38}},"37":{"start":{"line":120,"column":4},"end":{"line":120,"column":51}},"38":{"start":{"line":124,"column":4},"end":{"line":124,"column":45}},"39":{"start":{"line":126,"column":4},"end":{"line":126,"column":4115}},"40":{"start":{"line":131,"column":4},"end":{"line":131,"column":77}},"41":{"start":{"line":132,"column":4},"end":{"line":132,"column":4326}},"42":{"start":{"line":141,"column":4},"end":{"line":141,"column":4772}},"43":{"start":{"line":151,"column":4},"end":{"line":151,"column":67}},"44":{"start":{"line":154,"column":4},"end":{"line":154,"column":65}},"45":{"start":{"line":155,"column":4},"end":{"line":155,"column":72}},"46":{"start":{"line":158,"column":4},"end":{"line":158,"column":57}},"47":{"start":{"line":159,"column":4},"end":{"line":159,"column":59}},"48":{"start":{"line":160,"column":4},"end":{"line":160,"column":18}},"49":{"start":{"line":161,"column":4},"end":{"line":161,"column":32}},"50":{"start":{"line":164,"column":4},"end":{"line":164,"column":53}},"51":{"start":{"line":168,"column":4},"end":{"line":168,"column":27}},"52":{"start":{"line":169,"column":4},"end":{"line":169,"column":83}},"53":{"start":{"line":170,"column":4},"end":{"line":170,"column":38}},"54":{"start":{"line":171,"column":4},"end":{"line":171,"column":38}},"55":{"start":{"line":175,"column":4},"end":{"line":175,"column":37}},"56":{"start":{"line":187,"column":4},"end":{"line":187,"column":45}},"57":{"start":{"line":189,"column":4},"end":{"line":189,"column":30}},"58":{"start":{"line":190,"column":4},"end":{"line":190,"column":62}},"59":{"start":{"line":191,"column":4},"end":{"line":191,"column":73}},"60":{"start":{"line":195,"column":4},"end":{"line":195,"column":98}},"61":{"start":{"line":197,"column":4},"end":{"line":197,"column":57}},"62":{"start":{"line":198,"column":4},"end":{"line":198,"column":52}},"63":{"start":{"line":199,"column":4},"end":{"line":199,"column":79}},"64":{"start":{"line":200,"column":4},"end":{"line":200,"column":6715}},"65":{"start":{"line":202,"column":4},"end":{"line":202,"column":77}},"66":{"start":{"line":204,"column":4},"end":{"line":204,"column":6835}},"67":{"start":{"line":205,"column":6},"end":{"line":205,"column":76}},"68":{"start":{"line":207,"column":4},"end":{"line":207,"column":22}},"69":{"start":{"line":208,"column":4},"end":{"line":208,"column":29}},"70":{"start":{"line":214,"column":4},"end":{"line":214,"column":20}},"71":{"start":{"line":218,"column":4},"end":{"line":218,"column":26}},"72":{"start":{"line":224,"column":4},"end":{"line":224,"column":57}},"73":{"start":{"line":225,"column":4},"end":{"line":225,"column":79}},"74":{"start":{"line":229,"column":4},"end":{"line":229,"column":70}},"75":{"start":{"line":233,"column":4},"end":{"line":233,"column":57}},"76":{"start":{"line":234,"column":4},"end":{"line":234,"column":7878}}},"branchMap":{"1":{"line":25,"type":"if","locations":[{"start":{"line":25,"column":4},"end":{"line":25,"column":4}},{"start":{"line":25,"column":4},"end":{"line":25,"column":4}}]},"2":{"line":32,"type":"if","locations":[{"start":{"line":32,"column":4},"end":{"line":32,"column":4}},{"start":{"line":32,"column":4},"end":{"line":32,"column":4}}]},"3":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":37,"column":4}},{"start":{"line":37,"column":4},"end":{"line":37,"column":4}}]},"4":{"line":41,"type":"if","locations":[{"start":{"line":41,"column":4},"end":{"line":41,"column":4}},{"start":{"line":41,"column":4},"end":{"line":41,"column":4}}]},"5":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":45,"column":4}},{"start":{"line":45,"column":4},"end":{"line":45,"column":4}}]},"6":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":54,"column":4}},{"start":{"line":54,"column":4},"end":{"line":54,"column":4}}]},"7":{"line":58,"type":"if","locations":[{"start":{"line":58,"column":4},"end":{"line":58,"column":4}},{"start":{"line":58,"column":4},"end":{"line":58,"column":4}}]},"8":{"line":102,"type":"if","locations":[{"start":{"line":102,"column":4},"end":{"line":102,"column":4}},{"start":{"line":102,"column":4},"end":{"line":102,"column":4}}]},"9":{"line":126,"type":"if","locations":[{"start":{"line":126,"column":4},"end":{"line":126,"column":4}},{"start":{"line":126,"column":4},"end":{"line":126,"column":4}}]},"10":{"line":151,"type":"if","locations":[{"start":{"line":151,"column":4},"end":{"line":151,"column":4}},{"start":{"line":151,"column":4},"end":{"line":151,"column":4}}]},"11":{"line":195,"type":"if","locations":[{"start":{"line":195,"column":4},"end":{"line":195,"column":4}},{"start":{"line":195,"column":4},"end":{"line":195,"column":4}}]}}},"src/core/ElasticDAOFactory.sol":{"l":{"21":0,"22":0,"26":3,"27":3,"46":39,"50":39,"52":39,"53":39,"54":39,"58":0,"59":0,"63":0,"65":0,"66":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAOFactory.sol","s":{"1":0,"2":3,"3":3,"4":39,"5":39,"6":39,"7":39,"8":39,"9":0,"10":0,"11":0,"12":0,"13":0},"b":{"1":[0,0]},"f":{"1":0,"2":3,"3":39,"4":0,"5":0,"6":0},"fnMap":{"1":{"name":"onlyDeployer","line":20,"loc":{"start":{"line":20,"column":2},"end":{"line":23,"column":2}}},"2":{"name":"constructor","line":25,"loc":{"start":{"line":25,"column":2},"end":{"line":28,"column":2}}},"3":{"name":"deployDAOAndToken","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":55,"column":2}}},"4":{"name":"updateFeeAddress","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":60,"column":2}}},"5":{"name":"collectFees","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":67,"column":2}}},"6":{"name":null,"line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":71,"column":31}}}},"statementMap":{"1":{"start":{"line":21,"column":4},"end":{"line":21,"column":63}},"2":{"start":{"line":26,"column":4},"end":{"line":26,"column":24}},"3":{"start":{"line":27,"column":4},"end":{"line":27,"column":49}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":1354}},"5":{"start":{"line":50,"column":4},"end":{"line":50,"column":96}},"6":{"start":{"line":52,"column":4},"end":{"line":52,"column":49}},"7":{"start":{"line":53,"column":4},"end":{"line":53,"column":55}},"8":{"start":{"line":54,"column":4},"end":{"line":54,"column":41}},"9":{"start":{"line":58,"column":4},"end":{"line":58,"column":37}},"10":{"start":{"line":59,"column":4},"end":{"line":59,"column":40}},"11":{"start":{"line":63,"column":4},"end":{"line":63,"column":42}},"12":{"start":{"line":65,"column":4},"end":{"line":65,"column":30}},"13":{"start":{"line":66,"column":4},"end":{"line":66,"column":51}}},"branchMap":{"1":{"line":21,"type":"if","locations":[{"start":{"line":21,"column":4},"end":{"line":21,"column":4}},{"start":{"line":21,"column":4},"end":{"line":21,"column":4}}]}}},"src/interfaces/IElasticToken.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IElasticToken.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/interfaces/IERC20.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IERC20.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/libraries/ElasticMath.sol":{"l":{"16":0,"40":0,"42":0,"45":0,"48":0,"51":0,"54":0,"57":0,"60":0,"63":0,"66":0,"74":0,"92":0,"105":0,"122":698,"132":1396,"142":45},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/ElasticMath.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":698,"16":1396,"17":45},"b":{},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":698,"7":1396,"8":45},"fnMap":{"1":{"name":"capitalDelta","line":11,"loc":{"start":{"line":11,"column":2},"end":{"line":17,"column":2}}},"2":{"name":"deltaE","line":32,"loc":{"start":{"line":32,"column":2},"end":{"line":67,"column":2}}},"3":{"name":"lambdaFromT","line":69,"loc":{"start":{"line":69,"column":2},"end":{"line":75,"column":2}}},"4":{"name":"mDash","line":87,"loc":{"start":{"line":87,"column":2},"end":{"line":93,"column":2}}},"5":{"name":"revamp","line":104,"loc":{"start":{"line":104,"column":2},"end":{"line":106,"column":2}}},"6":{"name":"t","line":117,"loc":{"start":{"line":117,"column":2},"end":{"line":123,"column":2}}},"7":{"name":"wmul","line":131,"loc":{"start":{"line":131,"column":2},"end":{"line":133,"column":2}}},"8":{"name":"wdiv","line":141,"loc":{"start":{"line":141,"column":2},"end":{"line":143,"column":2}}}},"statementMap":{"1":{"start":{"line":16,"column":4},"end":{"line":16,"column":53}},"2":{"start":{"line":40,"column":4},"end":{"line":40,"column":58}},"3":{"start":{"line":42,"column":4},"end":{"line":42,"column":42}},"4":{"start":{"line":45,"column":4},"end":{"line":45,"column":34}},"5":{"start":{"line":48,"column":4},"end":{"line":48,"column":31}},"6":{"start":{"line":51,"column":4},"end":{"line":51,"column":44}},"7":{"start":{"line":54,"column":4},"end":{"line":54,"column":26}},"8":{"start":{"line":57,"column":4},"end":{"line":57,"column":35}},"9":{"start":{"line":60,"column":4},"end":{"line":60,"column":34}},"10":{"start":{"line":63,"column":4},"end":{"line":63,"column":27}},"11":{"start":{"line":66,"column":4},"end":{"line":66,"column":22}},"12":{"start":{"line":74,"column":4},"end":{"line":74,"column":30}},"13":{"start":{"line":92,"column":4},"end":{"line":92,"column":44}},"14":{"start":{"line":105,"column":4},"end":{"line":105,"column":57}},"15":{"start":{"line":122,"column":4},"end":{"line":122,"column":35}},"16":{"start":{"line":132,"column":4},"end":{"line":132,"column":90}},"17":{"start":{"line":142,"column":4},"end":{"line":142,"column":72}}},"branchMap":{}},"src/libraries/SafeMath.sol":{"l":{"29":6351,"30":6351,"32":6351,"46":0,"64":0,"65":0,"67":0,"84":1441,"85":0,"88":1441,"89":1441,"91":1441,"107":0,"127":0,"128":0,"131":0,"147":0,"167":0,"168":0,"172":0,"173":0,"175":0,"177":0,"179":0,"180":0,"181":0,"189":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/SafeMath.sol","s":{"1":6351,"2":6351,"3":6351,"4":0,"5":0,"6":0,"7":0,"8":1441,"9":0,"10":1441,"11":1441,"12":1441,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0},"b":{"1":[6351,0],"2":[0,0],"3":[0,1441],"4":[1441,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0]},"f":{"1":6351,"2":0,"3":0,"4":1441,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0},"fnMap":{"1":{"name":"add","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":33,"column":2}}},"2":{"name":"sub","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":2}}},"3":{"name":"sub","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":68,"column":2}}},"4":{"name":"mul","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":92,"column":2}}},"5":{"name":"div","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":108,"column":2}}},"6":{"name":"div","line":122,"loc":{"start":{"line":122,"column":2},"end":{"line":132,"column":2}}},"7":{"name":"mod","line":146,"loc":{"start":{"line":146,"column":2},"end":{"line":148,"column":2}}},"8":{"name":"mod","line":162,"loc":{"start":{"line":162,"column":2},"end":{"line":169,"column":2}}},"9":{"name":"pow","line":171,"loc":{"start":{"line":171,"column":2},"end":{"line":183,"column":2}}},"10":{"name":"max","line":188,"loc":{"start":{"line":188,"column":2},"end":{"line":190,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":21}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":49}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":12}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":54}},"5":{"start":{"line":64,"column":4},"end":{"line":64,"column":32}},"6":{"start":{"line":65,"column":4},"end":{"line":65,"column":21}},"7":{"start":{"line":67,"column":4},"end":{"line":67,"column":12}},"8":{"start":{"line":84,"column":4},"end":{"line":84,"column":2356}},"9":{"start":{"line":85,"column":6},"end":{"line":85,"column":14}},"10":{"start":{"line":88,"column":4},"end":{"line":88,"column":21}},"11":{"start":{"line":89,"column":4},"end":{"line":89,"column":59}},"12":{"start":{"line":91,"column":4},"end":{"line":91,"column":12}},"13":{"start":{"line":107,"column":4},"end":{"line":107,"column":50}},"14":{"start":{"line":127,"column":4},"end":{"line":127,"column":31}},"15":{"start":{"line":128,"column":4},"end":{"line":128,"column":21}},"16":{"start":{"line":131,"column":4},"end":{"line":131,"column":12}},"17":{"start":{"line":147,"column":4},"end":{"line":147,"column":48}},"18":{"start":{"line":167,"column":4},"end":{"line":167,"column":32}},"19":{"start":{"line":168,"column":4},"end":{"line":168,"column":16}},"20":{"start":{"line":172,"column":4},"end":{"line":172,"column":5030}},"21":{"start":{"line":173,"column":6},"end":{"line":173,"column":14}},"22":{"start":{"line":174,"column":11},"end":{"line":174,"column":5078}},"23":{"start":{"line":175,"column":6},"end":{"line":175,"column":17}},"24":{"start":{"line":176,"column":11},"end":{"line":176,"column":5129}},"25":{"start":{"line":177,"column":6},"end":{"line":177,"column":14}},"26":{"start":{"line":179,"column":6},"end":{"line":179,"column":22}},"27":{"start":{"line":180,"column":6},"end":{"line":180,"column":71}},"28":{"start":{"line":180,"column":55},"end":{"line":180,"column":70}},"29":{"start":{"line":181,"column":6},"end":{"line":181,"column":14}},"30":{"start":{"line":189,"column":4},"end":{"line":189,"column":25}}},"branchMap":{"1":{"line":30,"type":"if","locations":[{"start":{"line":30,"column":4},"end":{"line":30,"column":4}},{"start":{"line":30,"column":4},"end":{"line":30,"column":4}}]},"2":{"line":64,"type":"if","locations":[{"start":{"line":64,"column":4},"end":{"line":64,"column":4}},{"start":{"line":64,"column":4},"end":{"line":64,"column":4}}]},"3":{"line":84,"type":"if","locations":[{"start":{"line":84,"column":4},"end":{"line":84,"column":4}},{"start":{"line":84,"column":4},"end":{"line":84,"column":4}}]},"4":{"line":89,"type":"if","locations":[{"start":{"line":89,"column":4},"end":{"line":89,"column":4}},{"start":{"line":89,"column":4},"end":{"line":89,"column":4}}]},"5":{"line":127,"type":"if","locations":[{"start":{"line":127,"column":4},"end":{"line":127,"column":4}},{"start":{"line":127,"column":4},"end":{"line":127,"column":4}}]},"6":{"line":167,"type":"if","locations":[{"start":{"line":167,"column":4},"end":{"line":167,"column":4}},{"start":{"line":167,"column":4},"end":{"line":167,"column":4}}]},"7":{"line":172,"type":"if","locations":[{"start":{"line":172,"column":4},"end":{"line":172,"column":4}},{"start":{"line":172,"column":4},"end":{"line":172,"column":4}}]},"8":{"line":174,"type":"if","locations":[{"start":{"line":174,"column":11},"end":{"line":174,"column":11}},{"start":{"line":174,"column":11},"end":{"line":174,"column":11}}]},"9":{"line":176,"type":"if","locations":[{"start":{"line":176,"column":11},"end":{"line":176,"column":11}},{"start":{"line":176,"column":11},"end":{"line":176,"column":11}}]}}},"src/models/DAO.sol":{"l":{"32":856,"33":856,"35":856,"36":856,"37":856,"38":856,"41":856,"50":2,"54":652,"64":267,"72":304,"77":304,"78":304,"79":304,"81":304,"82":87,"83":261,"84":261,"88":304,"92":858},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/DAO.sol","s":{"1":856,"2":856,"3":856,"4":856,"5":856,"6":856,"7":856,"8":2,"9":652,"10":267,"11":304,"12":304,"13":304,"14":304,"15":304,"16":87,"17":261,"18":261,"19":304,"20":858},"b":{"1":[856,0],"2":[304,0],"3":[87,217]},"f":{"1":856,"2":2,"3":652,"4":267,"5":304,"6":858},"fnMap":{"1":{"name":"deserialize","line":27,"loc":{"start":{"line":27,"column":2},"end":{"line":42,"column":2}}},"2":{"name":"exists","line":49,"loc":{"start":{"line":49,"column":2},"end":{"line":51,"column":2}}},"3":{"name":"getSummoner","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":55,"column":2}}},"4":{"name":"isSummoner","line":63,"loc":{"start":{"line":63,"column":2},"end":{"line":65,"column":2}}},"5":{"name":"serialize","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":89,"column":2}}},"6":{"name":"_exists","line":91,"loc":{"start":{"line":91,"column":2},"end":{"line":93,"column":2}}}},"statementMap":{"1":{"start":{"line":32,"column":4},"end":{"line":32,"column":22}},"2":{"start":{"line":33,"column":4},"end":{"line":33,"column":32}},"3":{"start":{"line":35,"column":4},"end":{"line":35,"column":903}},"4":{"start":{"line":36,"column":6},"end":{"line":36,"column":66}},"5":{"start":{"line":37,"column":6},"end":{"line":37,"column":90}},"6":{"start":{"line":38,"column":6},"end":{"line":38,"column":72}},"7":{"start":{"line":41,"column":4},"end":{"line":41,"column":17}},"8":{"start":{"line":50,"column":4},"end":{"line":50,"column":25}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":76}},"10":{"start":{"line":64,"column":4},"end":{"line":64,"column":82}},"11":{"start":{"line":72,"column":4},"end":{"line":72,"column":2126}},"12":{"start":{"line":77,"column":4},"end":{"line":77,"column":69}},"13":{"start":{"line":78,"column":4},"end":{"line":78,"column":93}},"14":{"start":{"line":79,"column":4},"end":{"line":79,"column":75}},"15":{"start":{"line":81,"column":4},"end":{"line":81,"column":2514}},"16":{"start":{"line":82,"column":6},"end":{"line":82,"column":2581}},"17":{"start":{"line":83,"column":8},"end":{"line":83,"column":89}},"18":{"start":{"line":84,"column":8},"end":{"line":84,"column":90}},"19":{"start":{"line":88,"column":4},"end":{"line":88,"column":62}},"20":{"start":{"line":92,"column":4},"end":{"line":92,"column":58}}},"branchMap":{"1":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":35,"column":4}},{"start":{"line":35,"column":4},"end":{"line":35,"column":4}}]},"2":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":72,"column":4}},{"start":{"line":72,"column":4},"end":{"line":72,"column":4}}]},"3":{"line":81,"type":"if","locations":[{"start":{"line":81,"column":4},"end":{"line":81,"column":4}},{"start":{"line":81,"column":4},"end":{"line":81,"column":4}}]}}},"src/models/Ecosystem.sol":{"l":{"33":3236,"34":3236,"35":3236,"38":3236,"41":3236,"42":3236,"45":3236,"48":3236,"53":3236,"62":1,"70":147,"72":147,"79":147,"83":147,"84":147,"88":147,"92":147,"97":147,"101":3384},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Ecosystem.sol","s":{"1":3236,"2":3236,"3":3236,"4":3236,"5":3236,"6":3236,"7":3236,"8":3236,"9":3236,"10":1,"11":147,"12":147,"13":147,"14":147,"15":147,"16":147,"17":147,"18":147,"19":3384},"b":{"1":[3236,0],"2":[147,0]},"f":{"1":3236,"2":1,"3":147,"4":3384},"fnMap":{"1":{"name":"deserialize","line":32,"loc":{"start":{"line":32,"column":2},"end":{"line":54,"column":2}}},"2":{"name":"exists","line":61,"loc":{"start":{"line":61,"column":2},"end":{"line":63,"column":2}}},"3":{"name":"serialize","line":69,"loc":{"start":{"line":69,"column":2},"end":{"line":98,"column":2}}},"4":{"name":"_exists","line":100,"loc":{"start":{"line":100,"column":2},"end":{"line":102,"column":2}}}},"statementMap":{"1":{"start":{"line":33,"column":4},"end":{"line":33,"column":1065}},"2":{"start":{"line":34,"column":6},"end":{"line":34,"column":36}},"3":{"start":{"line":35,"column":6},"end":{"line":35,"column":1140}},"4":{"start":{"line":38,"column":6},"end":{"line":38,"column":1268}},"5":{"start":{"line":41,"column":6},"end":{"line":41,"column":49}},"6":{"start":{"line":42,"column":6},"end":{"line":42,"column":1440}},"7":{"start":{"line":45,"column":6},"end":{"line":45,"column":1574}},"8":{"start":{"line":48,"column":6},"end":{"line":48,"column":1710}},"9":{"start":{"line":53,"column":4},"end":{"line":53,"column":17}},"10":{"start":{"line":62,"column":4},"end":{"line":62,"column":31}},"11":{"start":{"line":70,"column":4},"end":{"line":70,"column":50}},"12":{"start":{"line":72,"column":4},"end":{"line":72,"column":2329}},"13":{"start":{"line":79,"column":4},"end":{"line":79,"column":2536}},"14":{"start":{"line":83,"column":4},"end":{"line":83,"column":98}},"15":{"start":{"line":84,"column":4},"end":{"line":84,"column":2764}},"16":{"start":{"line":88,"column":4},"end":{"line":88,"column":2897}},"17":{"start":{"line":92,"column":4},"end":{"line":92,"column":3032}},"18":{"start":{"line":97,"column":4},"end":{"line":97,"column":68}},"19":{"start":{"line":101,"column":4},"end":{"line":101,"column":64}}},"branchMap":{"1":{"line":33,"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":33,"column":4}},{"start":{"line":33,"column":4},"end":{"line":33,"column":4}}]},"2":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":72,"column":4}},{"start":{"line":72,"column":4},"end":{"line":72,"column":4}}]}}},"src/models/EternalModel.sol":{"l":{"30":15392,"37":4206,"44":16832,"51":7846,"58":0,"65":0,"77":7389,"85":1810,"93":996,"101":2465,"109":0,"117":0,"128":0,"135":0,"142":0,"149":0,"156":0,"163":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/EternalModel.sol","s":{"1":15392,"2":4206,"3":16832,"4":7846,"5":0,"6":0,"7":7389,"8":1810,"9":996,"10":2465,"11":0,"12":0},"b":{},"f":{"1":15392,"2":4206,"3":16832,"4":7846,"5":0,"6":0,"7":7389,"8":1810,"9":996,"10":2465,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0},"fnMap":{"1":{"name":"getUint","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":31,"column":2}}},"2":{"name":"getString","line":36,"loc":{"start":{"line":36,"column":2},"end":{"line":38,"column":2}}},"3":{"name":"getAddress","line":43,"loc":{"start":{"line":43,"column":2},"end":{"line":45,"column":2}}},"4":{"name":"getBool","line":50,"loc":{"start":{"line":50,"column":2},"end":{"line":52,"column":2}}},"5":{"name":"getInt","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":59,"column":2}}},"6":{"name":"getBytes","line":64,"loc":{"start":{"line":64,"column":2},"end":{"line":66,"column":2}}},"7":{"name":"setUint","line":76,"loc":{"start":{"line":76,"column":2},"end":{"line":78,"column":2}}},"8":{"name":"setString","line":84,"loc":{"start":{"line":84,"column":2},"end":{"line":86,"column":2}}},"9":{"name":"setAddress","line":92,"loc":{"start":{"line":92,"column":2},"end":{"line":94,"column":2}}},"10":{"name":"setBool","line":100,"loc":{"start":{"line":100,"column":2},"end":{"line":102,"column":2}}},"11":{"name":"setInt","line":108,"loc":{"start":{"line":108,"column":2},"end":{"line":110,"column":2}}},"12":{"name":"setBytes","line":116,"loc":{"start":{"line":116,"column":2},"end":{"line":118,"column":2}}},"13":{"name":"deleteUint","line":127,"loc":{"start":{"line":127,"column":2},"end":{"line":129,"column":2}}},"14":{"name":"deleteString","line":134,"loc":{"start":{"line":134,"column":2},"end":{"line":136,"column":2}}},"15":{"name":"deleteAddress","line":141,"loc":{"start":{"line":141,"column":2},"end":{"line":143,"column":2}}},"16":{"name":"deleteBool","line":148,"loc":{"start":{"line":148,"column":2},"end":{"line":150,"column":2}}},"17":{"name":"deleteInt","line":155,"loc":{"start":{"line":155,"column":2},"end":{"line":157,"column":2}}},"18":{"name":"deleteBytes","line":162,"loc":{"start":{"line":162,"column":2},"end":{"line":164,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":30}},"2":{"start":{"line":37,"column":4},"end":{"line":37,"column":32}},"3":{"start":{"line":44,"column":4},"end":{"line":44,"column":33}},"4":{"start":{"line":51,"column":4},"end":{"line":51,"column":30}},"5":{"start":{"line":58,"column":4},"end":{"line":58,"column":29}},"6":{"start":{"line":65,"column":4},"end":{"line":65,"column":31}},"7":{"start":{"line":77,"column":4},"end":{"line":77,"column":31}},"8":{"start":{"line":85,"column":4},"end":{"line":85,"column":33}},"9":{"start":{"line":93,"column":4},"end":{"line":93,"column":34}},"10":{"start":{"line":101,"column":4},"end":{"line":101,"column":31}},"11":{"start":{"line":109,"column":4},"end":{"line":109,"column":30}},"12":{"start":{"line":117,"column":4},"end":{"line":117,"column":32}}},"branchMap":{}},"src/models/Token.sol":{"l":{"42":1679,"43":1679,"45":1679,"46":1675,"47":1675,"48":1675,"49":1675,"50":1675,"51":1675,"52":1675,"53":1675,"54":1675,"55":1675,"58":1679,"62":46,"66":696,"68":696,"69":696,"77":753,"84":753,"85":753,"86":753,"87":753,"88":753,"89":753,"90":753,"91":753,"93":753,"99":479,"103":1782},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Token.sol","s":{"1":1679,"2":1679,"3":1679,"4":1675,"5":1675,"6":1675,"7":1675,"8":1675,"9":1675,"10":1675,"11":1675,"12":1675,"13":1675,"14":1679,"15":46,"16":696,"17":696,"18":696,"19":753,"20":753,"21":753,"22":753,"23":753,"24":753,"25":753,"26":753,"27":753,"28":753,"29":479,"30":1782},"b":{"1":[1675,4],"2":[696,0],"3":[753,0]},"f":{"1":1679,"2":46,"3":696,"4":753,"5":479,"6":1782},"fnMap":{"1":{"name":"deserialize","line":37,"loc":{"start":{"line":37,"column":2},"end":{"line":59,"column":2}}},"2":{"name":"exists","line":61,"loc":{"start":{"line":61,"column":2},"end":{"line":63,"column":2}}},"3":{"name":"incrementCounter","line":65,"loc":{"start":{"line":65,"column":2},"end":{"line":70,"column":2}}},"4":{"name":"serialize","line":76,"loc":{"start":{"line":76,"column":2},"end":{"line":94,"column":2}}},"5":{"name":"updateNumberOfTokenHolders","line":96,"loc":{"start":{"line":96,"column":2},"end":{"line":100,"column":2}}},"6":{"name":"_exists","line":102,"loc":{"start":{"line":102,"column":2},"end":{"line":104,"column":2}}}},"statementMap":{"1":{"start":{"line":42,"column":4},"end":{"line":42,"column":22}},"2":{"start":{"line":43,"column":4},"end":{"line":43,"column":32}},"3":{"start":{"line":45,"column":4},"end":{"line":45,"column":1269}},"4":{"start":{"line":46,"column":6},"end":{"line":46,"column":70}},"5":{"start":{"line":47,"column":6},"end":{"line":47,"column":64}},"6":{"start":{"line":48,"column":6},"end":{"line":48,"column":76}},"7":{"start":{"line":49,"column":6},"end":{"line":49,"column":58}},"8":{"start":{"line":50,"column":6},"end":{"line":50,"column":68}},"9":{"start":{"line":51,"column":6},"end":{"line":51,"column":58}},"10":{"start":{"line":52,"column":6},"end":{"line":52,"column":90}},"11":{"start":{"line":53,"column":6},"end":{"line":53,"column":66}},"12":{"start":{"line":54,"column":6},"end":{"line":54,"column":96}},"13":{"start":{"line":55,"column":6},"end":{"line":55,"column":70}},"14":{"start":{"line":58,"column":4},"end":{"line":58,"column":17}},"15":{"start":{"line":62,"column":4},"end":{"line":62,"column":25}},"16":{"start":{"line":66,"column":4},"end":{"line":66,"column":65}},"17":{"start":{"line":68,"column":4},"end":{"line":68,"column":76}},"18":{"start":{"line":69,"column":4},"end":{"line":69,"column":83}},"19":{"start":{"line":77,"column":4},"end":{"line":77,"column":2629}},"20":{"start":{"line":84,"column":4},"end":{"line":84,"column":69}},"21":{"start":{"line":85,"column":4},"end":{"line":85,"column":73}},"22":{"start":{"line":86,"column":4},"end":{"line":86,"column":67}},"23":{"start":{"line":87,"column":4},"end":{"line":87,"column":79}},"24":{"start":{"line":88,"column":4},"end":{"line":88,"column":61}},"25":{"start":{"line":89,"column":4},"end":{"line":89,"column":71}},"26":{"start":{"line":90,"column":4},"end":{"line":90,"column":61}},"27":{"start":{"line":91,"column":4},"end":{"line":91,"column":93}},"28":{"start":{"line":93,"column":4},"end":{"line":93,"column":62}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":92}},"30":{"start":{"line":103,"column":4},"end":{"line":103,"column":58}}},"branchMap":{"1":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":45,"column":4}},{"start":{"line":45,"column":4},"end":{"line":45,"column":4}}]},"2":{"line":66,"type":"if","locations":[{"start":{"line":66,"column":4},"end":{"line":66,"column":4}},{"start":{"line":66,"column":4},"end":{"line":66,"column":4}}]},"3":{"line":77,"type":"if","locations":[{"start":{"line":77,"column":4},"end":{"line":77,"column":4}},{"start":{"line":77,"column":4},"end":{"line":77,"column":4}}]}}},"src/models/TokenHolder.sol":{"l":{"29":699,"30":699,"31":699,"33":699,"34":220,"35":220,"38":699,"46":0,"54":696,"56":696,"57":696,"59":696,"67":699},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/TokenHolder.sol","s":{"1":699,"2":699,"3":699,"4":699,"5":220,"6":220,"7":699,"8":0,"9":696,"10":696,"11":696,"12":696,"13":699},"b":{"1":[220,479],"2":[696,0]},"f":{"1":699,"2":0,"3":696,"4":699},"fnMap":{"1":{"name":"deserialize","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":39,"column":2}}},"2":{"name":"exists","line":41,"loc":{"start":{"line":41,"column":2},"end":{"line":47,"column":2}}},"3":{"name":"serialize","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":60,"column":2}}},"4":{"name":"_exists","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":68,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":28}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":32}},"3":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":1003}},"5":{"start":{"line":34,"column":6},"end":{"line":34,"column":98}},"6":{"start":{"line":35,"column":6},"end":{"line":35,"column":96}},"7":{"start":{"line":38,"column":4},"end":{"line":38,"column":17}},"8":{"start":{"line":46,"column":4},"end":{"line":46,"column":48}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":71}},"10":{"start":{"line":56,"column":4},"end":{"line":56,"column":95}},"11":{"start":{"line":57,"column":4},"end":{"line":57,"column":93}},"12":{"start":{"line":59,"column":4},"end":{"line":59,"column":84}},"13":{"start":{"line":67,"column":4},"end":{"line":67,"column":74}}},"branchMap":{"1":{"line":33,"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":33,"column":4}},{"start":{"line":33,"column":4},"end":{"line":33,"column":4}}]},"2":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":54,"column":4}},{"start":{"line":54,"column":4},"end":{"line":54,"column":4}}]}}},"src/services/Configurator.sol":{"l":{"30":87,"31":87,"32":87,"33":87,"34":87,"35":87,"36":87,"37":87,"38":87,"50":87,"52":87,"55":87,"56":87,"57":87,"58":87,"61":87,"63":87,"64":87,"89":57,"90":57,"91":57,"92":57,"93":57,"94":57,"95":57,"96":57,"97":57,"98":57,"99":57,"101":57,"102":57,"103":57,"105":57},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/services/Configurator.sol","s":{"1":87,"2":87,"3":87,"4":87,"5":87,"6":87,"7":87,"8":87,"9":87,"10":87,"11":87,"12":87,"13":87,"14":87,"15":87,"16":87,"17":87,"18":87,"19":57,"20":57,"21":57,"22":57,"23":57,"24":57,"25":57,"26":57,"27":57,"28":57,"29":57,"30":57,"31":57,"32":57,"33":57},"b":{},"f":{"1":87,"2":87,"3":57},"fnMap":{"1":{"name":"buildDAO","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":39,"column":2}}},"2":{"name":"buildEcosystem","line":46,"loc":{"start":{"line":46,"column":2},"end":{"line":65,"column":2}}},"3":{"name":"buildToken","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":106,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":52}},"2":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":29}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":19}},"5":{"start":{"line":34,"column":4},"end":{"line":34,"column":45}},"6":{"start":{"line":35,"column":4},"end":{"line":35,"column":23}},"7":{"start":{"line":36,"column":4},"end":{"line":36,"column":29}},"8":{"start":{"line":37,"column":4},"end":{"line":37,"column":28}},"9":{"start":{"line":38,"column":4},"end":{"line":38,"column":14}},"10":{"start":{"line":50,"column":4},"end":{"line":50,"column":74}},"11":{"start":{"line":52,"column":4},"end":{"line":52,"column":36}},"12":{"start":{"line":55,"column":4},"end":{"line":55,"column":55}},"13":{"start":{"line":56,"column":4},"end":{"line":56,"column":67}},"14":{"start":{"line":57,"column":4},"end":{"line":57,"column":71}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":59}},"16":{"start":{"line":61,"column":4},"end":{"line":61,"column":63}},"17":{"start":{"line":63,"column":4},"end":{"line":63,"column":40}},"18":{"start":{"line":64,"column":4},"end":{"line":64,"column":20}},"19":{"start":{"line":89,"column":4},"end":{"line":89,"column":60}},"20":{"start":{"line":90,"column":4},"end":{"line":90,"column":21}},"21":{"start":{"line":91,"column":4},"end":{"line":91,"column":31}},"22":{"start":{"line":92,"column":4},"end":{"line":92,"column":33}},"23":{"start":{"line":93,"column":4},"end":{"line":93,"column":15}},"24":{"start":{"line":94,"column":4},"end":{"line":94,"column":19}},"25":{"start":{"line":95,"column":4},"end":{"line":95,"column":32}},"26":{"start":{"line":96,"column":4},"end":{"line":96,"column":47}},"27":{"start":{"line":97,"column":4},"end":{"line":97,"column":21}},"28":{"start":{"line":98,"column":4},"end":{"line":98,"column":25}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":97}},"30":{"start":{"line":101,"column":4},"end":{"line":101,"column":49}},"31":{"start":{"line":102,"column":4},"end":{"line":102,"column":68}},"32":{"start":{"line":103,"column":4},"end":{"line":103,"column":32}},"33":{"start":{"line":105,"column":4},"end":{"line":105,"column":16}}},"branchMap":{}},"src/tokens/ElasticGovernanceToken.sol":{"l":{"28":114,"29":114,"33":0,"34":0,"38":697,"39":697,"43":57,"44":57,"45":57,"46":57,"59":0,"78":0,"79":0,"88":2,"89":2,"90":2,"92":2,"101":1,"102":1,"106":0,"107":0,"108":0,"109":0,"111":0,"112":0,"114":0,"130":0,"131":0,"146":0,"147":0,"155":0,"165":0,"167":0,"169":0,"170":0,"180":0,"181":0,"191":0,"193":0,"208":697,"209":696,"217":0,"221":0,"225":57,"229":57,"238":0,"251":0,"252":0,"256":0,"257":0,"269":0,"270":0,"288":0,"290":0,"292":0,"293":0,"295":0,"298":0,"308":0,"309":0,"311":0,"313":0,"317":0,"318":0,"319":0,"323":0,"324":0,"325":0,"326":0,"327":0,"329":0,"331":0,"332":0,"334":0,"335":0,"336":0,"340":0,"341":0,"342":0,"346":697,"347":697,"348":697,"349":697,"350":696,"352":696,"354":696,"356":696,"357":696,"359":696,"360":696,"361":696,"363":696,"371":0,"372":0,"373":0,"375":0,"376":0,"377":0,"378":0,"380":0,"381":0,"383":0,"384":0,"386":0,"387":0,"388":0,"389":0,"390":0,"392":0,"401":696,"403":696,"404":696,"406":696,"407":696,"409":0,"412":696,"414":696,"423":696,"424":479,"427":696,"428":0,"435":2095,"439":700,"440":700,"449":2,"450":2},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/tokens/ElasticGovernanceToken.sol","s":{"1":114,"2":0,"3":697,"4":57,"5":57,"6":57,"7":57,"8":0,"9":0,"10":0,"11":2,"12":2,"13":2,"14":2,"15":1,"16":1,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":697,"38":696,"39":0,"40":0,"41":57,"42":57,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":697,"78":697,"79":697,"80":697,"81":696,"82":696,"83":696,"84":696,"85":696,"86":696,"87":696,"88":696,"89":696,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":696,"108":696,"109":696,"110":696,"111":696,"112":0,"113":696,"114":696,"115":696,"116":479,"117":696,"118":0,"119":2095,"120":700,"121":700,"122":2,"123":2},"b":{"1":[114,0],"2":[0,0],"3":[697,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[696,0],"11":[479,217],"12":[0,696]},"f":{"1":114,"2":0,"3":697,"4":57,"5":0,"6":0,"7":2,"8":1,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":697,"17":0,"18":0,"19":57,"20":57,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":697,"31":0,"32":696,"33":696,"34":2095,"35":700,"36":2},"fnMap":{"1":{"name":"onlyDAO","line":27,"loc":{"start":{"line":27,"column":2},"end":{"line":30,"column":2}}},"2":{"name":"onlyDAOorBurner","line":32,"loc":{"start":{"line":32,"column":2},"end":{"line":35,"column":2}}},"3":{"name":"onlyDAOorMinter","line":37,"loc":{"start":{"line":37,"column":2},"end":{"line":40,"column":2}}},"4":{"name":"constructor","line":42,"loc":{"start":{"line":42,"column":2},"end":{"line":47,"column":2}}},"5":{"name":"allowance","line":58,"loc":{"start":{"line":58,"column":2},"end":{"line":60,"column":2}}},"6":{"name":"approve","line":77,"loc":{"start":{"line":77,"column":2},"end":{"line":80,"column":2}}},"7":{"name":"balanceOf","line":87,"loc":{"start":{"line":87,"column":2},"end":{"line":93,"column":2}}},"8":{"name":"balanceOfInShares","line":100,"loc":{"start":{"line":100,"column":2},"end":{"line":103,"column":2}}},"9":{"name":"balanceOfVoting","line":105,"loc":{"start":{"line":105,"column":2},"end":{"line":116,"column":2}}},"10":{"name":"burn","line":127,"loc":{"start":{"line":124,"column":2},"end":{"line":132,"column":2}}},"11":{"name":"burnShares","line":143,"loc":{"start":{"line":140,"column":2},"end":{"line":148,"column":2}}},"12":{"name":"decimals","line":154,"loc":{"start":{"line":154,"column":2},"end":{"line":156,"column":2}}},"13":{"name":"decreaseAllowance","line":164,"loc":{"start":{"line":164,"column":2},"end":{"line":171,"column":2}}},"14":{"name":"increaseAllowance","line":179,"loc":{"start":{"line":179,"column":2},"end":{"line":182,"column":2}}},"15":{"name":"mint","line":190,"loc":{"start":{"line":190,"column":2},"end":{"line":194,"column":2}}},"16":{"name":"mintShares","line":205,"loc":{"start":{"line":202,"column":2},"end":{"line":210,"column":2}}},"17":{"name":"name","line":216,"loc":{"start":{"line":216,"column":2},"end":{"line":218,"column":2}}},"18":{"name":"numberOfTokenHolders","line":220,"loc":{"start":{"line":220,"column":2},"end":{"line":222,"column":2}}},"19":{"name":"setBurner","line":224,"loc":{"start":{"line":224,"column":2},"end":{"line":226,"column":2}}},"20":{"name":"setMinter","line":228,"loc":{"start":{"line":228,"column":2},"end":{"line":230,"column":2}}},"21":{"name":"symbol","line":237,"loc":{"start":{"line":237,"column":2},"end":{"line":239,"column":2}}},"22":{"name":"totalSupply","line":250,"loc":{"start":{"line":250,"column":2},"end":{"line":253,"column":2}}},"23":{"name":"totalSupplyInShares","line":255,"loc":{"start":{"line":255,"column":2},"end":{"line":258,"column":2}}},"24":{"name":"transfer","line":268,"loc":{"start":{"line":268,"column":2},"end":{"line":271,"column":2}}},"25":{"name":"transferFrom","line":283,"loc":{"start":{"line":283,"column":2},"end":{"line":299,"column":2}}},"26":{"name":"_approve","line":303,"loc":{"start":{"line":303,"column":2},"end":{"line":314,"column":2}}},"27":{"name":"_burn","line":316,"loc":{"start":{"line":316,"column":2},"end":{"line":320,"column":2}}},"28":{"name":"_burnShares","line":322,"loc":{"start":{"line":322,"column":2},"end":{"line":337,"column":2}}},"29":{"name":"_mint","line":339,"loc":{"start":{"line":339,"column":2},"end":{"line":343,"column":2}}},"30":{"name":"_mintShares","line":345,"loc":{"start":{"line":345,"column":2},"end":{"line":364,"column":2}}},"31":{"name":"_transfer","line":366,"loc":{"start":{"line":366,"column":2},"end":{"line":393,"column":2}}},"32":{"name":"_updateBalance","line":395,"loc":{"start":{"line":395,"column":2},"end":{"line":415,"column":2}}},"33":{"name":"_updateNumberOfTokenHolders","line":417,"loc":{"start":{"line":417,"column":2},"end":{"line":430,"column":2}}},"34":{"name":"_getEcosystem","line":434,"loc":{"start":{"line":434,"column":2},"end":{"line":436,"column":2}}},"35":{"name":"_getTokenHolder","line":438,"loc":{"start":{"line":438,"column":2},"end":{"line":446,"column":2}}},"36":{"name":"_getToken","line":448,"loc":{"start":{"line":448,"column":2},"end":{"line":451,"column":2}}}},"statementMap":{"1":{"start":{"line":28,"column":4},"end":{"line":28,"column":90}},"2":{"start":{"line":33,"column":4},"end":{"line":33,"column":90}},"3":{"start":{"line":38,"column":4},"end":{"line":38,"column":90}},"4":{"start":{"line":43,"column":4},"end":{"line":43,"column":23}},"5":{"start":{"line":44,"column":4},"end":{"line":44,"column":27}},"6":{"start":{"line":45,"column":4},"end":{"line":45,"column":49}},"7":{"start":{"line":46,"column":4},"end":{"line":46,"column":23}},"8":{"start":{"line":59,"column":4},"end":{"line":59,"column":40}},"9":{"start":{"line":78,"column":4},"end":{"line":78,"column":42}},"10":{"start":{"line":79,"column":4},"end":{"line":79,"column":15}},"11":{"start":{"line":88,"column":4},"end":{"line":88,"column":45}},"12":{"start":{"line":89,"column":4},"end":{"line":89,"column":71}},"13":{"start":{"line":90,"column":4},"end":{"line":90,"column":67}},"14":{"start":{"line":92,"column":4},"end":{"line":92,"column":12}},"15":{"start":{"line":101,"column":4},"end":{"line":101,"column":71}},"16":{"start":{"line":102,"column":4},"end":{"line":102,"column":29}},"17":{"start":{"line":106,"column":4},"end":{"line":106,"column":45}},"18":{"start":{"line":107,"column":4},"end":{"line":107,"column":71}},"19":{"start":{"line":108,"column":4},"end":{"line":108,"column":59}},"20":{"start":{"line":109,"column":4},"end":{"line":109,"column":58}},"21":{"start":{"line":111,"column":4},"end":{"line":111,"column":3813}},"22":{"start":{"line":112,"column":6},"end":{"line":112,"column":61}},"23":{"start":{"line":114,"column":6},"end":{"line":114,"column":64}},"24":{"start":{"line":130,"column":4},"end":{"line":130,"column":27}},"25":{"start":{"line":131,"column":4},"end":{"line":131,"column":15}},"26":{"start":{"line":146,"column":4},"end":{"line":146,"column":33}},"27":{"start":{"line":147,"column":4},"end":{"line":147,"column":15}},"28":{"start":{"line":155,"column":4},"end":{"line":155,"column":13}},"29":{"start":{"line":165,"column":4},"end":{"line":165,"column":92}},"30":{"start":{"line":167,"column":4},"end":{"line":167,"column":74}},"31":{"start":{"line":169,"column":4},"end":{"line":169,"column":47}},"32":{"start":{"line":170,"column":4},"end":{"line":170,"column":15}},"33":{"start":{"line":180,"column":4},"end":{"line":180,"column":95}},"34":{"start":{"line":181,"column":4},"end":{"line":181,"column":15}},"35":{"start":{"line":191,"column":4},"end":{"line":191,"column":27}},"36":{"start":{"line":193,"column":4},"end":{"line":193,"column":15}},"37":{"start":{"line":208,"column":4},"end":{"line":208,"column":33}},"38":{"start":{"line":209,"column":4},"end":{"line":209,"column":15}},"39":{"start":{"line":217,"column":4},"end":{"line":217,"column":27}},"40":{"start":{"line":221,"column":4},"end":{"line":221,"column":43}},"41":{"start":{"line":225,"column":4},"end":{"line":225,"column":19}},"42":{"start":{"line":229,"column":4},"end":{"line":229,"column":19}},"43":{"start":{"line":238,"column":4},"end":{"line":238,"column":29}},"44":{"start":{"line":251,"column":4},"end":{"line":251,"column":45}},"45":{"start":{"line":252,"column":4},"end":{"line":252,"column":56}},"46":{"start":{"line":256,"column":4},"end":{"line":256,"column":45}},"47":{"start":{"line":257,"column":4},"end":{"line":257,"column":23}},"48":{"start":{"line":269,"column":4},"end":{"line":269,"column":38}},"49":{"start":{"line":270,"column":4},"end":{"line":270,"column":15}},"50":{"start":{"line":288,"column":4},"end":{"line":288,"column":97}},"51":{"start":{"line":290,"column":4},"end":{"line":290,"column":33}},"52":{"start":{"line":292,"column":4},"end":{"line":292,"column":9064}},"53":{"start":{"line":293,"column":6},"end":{"line":293,"column":91}},"54":{"start":{"line":295,"column":6},"end":{"line":295,"column":68}},"55":{"start":{"line":298,"column":4},"end":{"line":298,"column":15}},"56":{"start":{"line":308,"column":4},"end":{"line":308,"column":72}},"57":{"start":{"line":309,"column":4},"end":{"line":309,"column":72}},"58":{"start":{"line":311,"column":4},"end":{"line":311,"column":42}},"59":{"start":{"line":313,"column":4},"end":{"line":313,"column":44}},"60":{"start":{"line":317,"column":4},"end":{"line":317,"column":45}},"61":{"start":{"line":318,"column":4},"end":{"line":318,"column":76}},"62":{"start":{"line":319,"column":4},"end":{"line":319,"column":37}},"63":{"start":{"line":323,"column":4},"end":{"line":323,"column":57}},"64":{"start":{"line":324,"column":4},"end":{"line":324,"column":59}},"65":{"start":{"line":325,"column":4},"end":{"line":325,"column":84}},"66":{"start":{"line":326,"column":4},"end":{"line":326,"column":71}},"67":{"start":{"line":327,"column":4},"end":{"line":327,"column":52}},"68":{"start":{"line":329,"column":4},"end":{"line":329,"column":72}},"69":{"start":{"line":331,"column":4},"end":{"line":331,"column":58}},"70":{"start":{"line":332,"column":4},"end":{"line":332,"column":32}},"71":{"start":{"line":334,"column":4},"end":{"line":334,"column":83}},"72":{"start":{"line":335,"column":4},"end":{"line":335,"column":44}},"73":{"start":{"line":336,"column":4},"end":{"line":336,"column":84}},"74":{"start":{"line":340,"column":4},"end":{"line":340,"column":45}},"75":{"start":{"line":341,"column":4},"end":{"line":341,"column":76}},"76":{"start":{"line":342,"column":4},"end":{"line":342,"column":37}},"77":{"start":{"line":346,"column":4},"end":{"line":346,"column":57}},"78":{"start":{"line":347,"column":4},"end":{"line":347,"column":59}},"79":{"start":{"line":348,"column":4},"end":{"line":348,"column":84}},"80":{"start":{"line":349,"column":4},"end":{"line":349,"column":71}},"81":{"start":{"line":350,"column":4},"end":{"line":350,"column":52}},"82":{"start":{"line":352,"column":4},"end":{"line":352,"column":66}},"83":{"start":{"line":354,"column":4},"end":{"line":354,"column":71}},"84":{"start":{"line":356,"column":4},"end":{"line":356,"column":58}},"85":{"start":{"line":357,"column":4},"end":{"line":357,"column":32}},"86":{"start":{"line":359,"column":4},"end":{"line":359,"column":83}},"87":{"start":{"line":360,"column":4},"end":{"line":360,"column":44}},"88":{"start":{"line":361,"column":4},"end":{"line":361,"column":84}},"89":{"start":{"line":363,"column":4},"end":{"line":363,"column":47}},"90":{"start":{"line":371,"column":4},"end":{"line":371,"column":57}},"91":{"start":{"line":372,"column":4},"end":{"line":372,"column":59}},"92":{"start":{"line":373,"column":4},"end":{"line":373,"column":84}},"93":{"start":{"line":375,"column":4},"end":{"line":375,"column":72}},"94":{"start":{"line":376,"column":4},"end":{"line":376,"column":68}},"95":{"start":{"line":377,"column":4},"end":{"line":377,"column":60}},"96":{"start":{"line":378,"column":4},"end":{"line":378,"column":56}},"97":{"start":{"line":380,"column":4},"end":{"line":380,"column":76}},"98":{"start":{"line":381,"column":4},"end":{"line":381,"column":65}},"99":{"start":{"line":383,"column":4},"end":{"line":383,"column":79}},"100":{"start":{"line":384,"column":4},"end":{"line":384,"column":74}},"101":{"start":{"line":386,"column":4},"end":{"line":386,"column":83}},"102":{"start":{"line":387,"column":4},"end":{"line":387,"column":48}},"103":{"start":{"line":388,"column":4},"end":{"line":388,"column":46}},"104":{"start":{"line":389,"column":4},"end":{"line":389,"column":92}},"105":{"start":{"line":390,"column":4},"end":{"line":390,"column":88}},"106":{"start":{"line":392,"column":4},"end":{"line":392,"column":37}},"107":{"start":{"line":401,"column":4},"end":{"line":401,"column":57}},"108":{"start":{"line":403,"column":4},"end":{"line":403,"column":51}},"109":{"start":{"line":404,"column":4},"end":{"line":404,"column":63}},"110":{"start":{"line":406,"column":4},"end":{"line":406,"column":13569}},"111":{"start":{"line":407,"column":6},"end":{"line":407,"column":74}},"112":{"start":{"line":409,"column":6},"end":{"line":409,"column":74}},"113":{"start":{"line":412,"column":4},"end":{"line":412,"column":62}},"114":{"start":{"line":414,"column":4},"end":{"line":414,"column":23}},"115":{"start":{"line":423,"column":4},"end":{"line":423,"column":14049}},"116":{"start":{"line":424,"column":6},"end":{"line":424,"column":96}},"117":{"start":{"line":427,"column":4},"end":{"line":427,"column":14220}},"118":{"start":{"line":428,"column":6},"end":{"line":428,"column":96}},"119":{"start":{"line":435,"column":4},"end":{"line":435,"column":67}},"120":{"start":{"line":439,"column":4},"end":{"line":439,"column":57}},"121":{"start":{"line":440,"column":4},"end":{"line":440,"column":14723}},"122":{"start":{"line":449,"column":4},"end":{"line":449,"column":57}},"123":{"start":{"line":450,"column":4},"end":{"line":450,"column":83}}},"branchMap":{"1":{"line":28,"type":"if","locations":[{"start":{"line":28,"column":4},"end":{"line":28,"column":4}},{"start":{"line":28,"column":4},"end":{"line":28,"column":4}}]},"2":{"line":33,"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":33,"column":4}},{"start":{"line":33,"column":4},"end":{"line":33,"column":4}}]},"3":{"line":38,"type":"if","locations":[{"start":{"line":38,"column":4},"end":{"line":38,"column":4}},{"start":{"line":38,"column":4},"end":{"line":38,"column":4}}]},"4":{"line":111,"type":"if","locations":[{"start":{"line":111,"column":4},"end":{"line":111,"column":4}},{"start":{"line":111,"column":4},"end":{"line":111,"column":4}}]},"5":{"line":167,"type":"if","locations":[{"start":{"line":167,"column":4},"end":{"line":167,"column":4}},{"start":{"line":167,"column":4},"end":{"line":167,"column":4}}]},"6":{"line":288,"type":"if","locations":[{"start":{"line":288,"column":4},"end":{"line":288,"column":4}},{"start":{"line":288,"column":4},"end":{"line":288,"column":4}}]},"7":{"line":292,"type":"if","locations":[{"start":{"line":292,"column":4},"end":{"line":292,"column":4}},{"start":{"line":292,"column":4},"end":{"line":292,"column":4}}]},"8":{"line":308,"type":"if","locations":[{"start":{"line":308,"column":4},"end":{"line":308,"column":4}},{"start":{"line":308,"column":4},"end":{"line":308,"column":4}}]},"9":{"line":309,"type":"if","locations":[{"start":{"line":309,"column":4},"end":{"line":309,"column":4}},{"start":{"line":309,"column":4},"end":{"line":309,"column":4}}]},"10":{"line":406,"type":"if","locations":[{"start":{"line":406,"column":4},"end":{"line":406,"column":4}},{"start":{"line":406,"column":4},"end":{"line":406,"column":4}}]},"11":{"line":423,"type":"if","locations":[{"start":{"line":423,"column":4},"end":{"line":423,"column":4}},{"start":{"line":423,"column":4},"end":{"line":423,"column":4}}]},"12":{"line":427,"type":"if","locations":[{"start":{"line":427,"column":4},"end":{"line":427,"column":4}},{"start":{"line":427,"column":4},"end":{"line":427,"column":4}}]}}}} \ No newline at end of file diff --git a/deploy/balance.js b/deploy/balance.js deleted file mode 100644 index e53a55c..0000000 --- a/deploy/balance.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = async ({ getNamedAccounts, deployments }) => { - const { deploy, log } = deployments; - const { agent } = await getNamedAccounts(); - - const balanceModel = await deploy('Balance', { - from: agent, - args: [], - }); - - if (balanceModel.newlyDeployed) { - log(`##### ElasticDAO: BalanceModel has been deployed: ${balanceModel.address}`); - } -}; -module.exports.tags = ['Balance']; diff --git a/deploy/balanceMultipliers.js b/deploy/balanceMultipliers.js deleted file mode 100644 index ff1f6b2..0000000 --- a/deploy/balanceMultipliers.js +++ /dev/null @@ -1,16 +0,0 @@ -module.exports = async ({ getNamedAccounts, deployments }) => { - const { deploy, log } = deployments; - const { agent } = await getNamedAccounts(); - - const balanceMultipliersModel = await deploy('BalanceMultipliers', { - from: agent, - args: [], - }); - - if (balanceMultipliersModel.newlyDeployed) { - log( - `##### ElasticDAO: BalanceMultipliersModel has been deployed: ${balanceMultipliersModel.address}`, - ); - } -}; -module.exports.tags = ['BalanceMultipliers']; diff --git a/deploy/initialDeployment.js b/deploy/initialDeployment.js index ac0fc28..e60f904 100644 --- a/deploy/initialDeployment.js +++ b/deploy/initialDeployment.js @@ -5,8 +5,6 @@ module.exports = async ({ getNamedAccounts, deployments }) => { const { log } = deployments; const { agent } = await getNamedAccounts(); - const Balance = await deployments.get('Balance'); - const BalanceMultipliers = await deployments.get('BalanceMultipliers'); const Configurator = await deployments.get('Configurator'); const Dao = await deployments.get('DAO'); const Ecosystem = await deployments.get('Ecosystem'); @@ -21,8 +19,6 @@ module.exports = async ({ getNamedAccounts, deployments }) => { const ecosystemStructArray = [ ethers.constants.AddressZero, // Models - Balance.address, - BalanceMultipliers.address, Dao.address, Ecosystem.address, TokenHolder.address, @@ -33,16 +29,12 @@ module.exports = async ({ getNamedAccounts, deployments }) => { ethers.constants.AddressZero, ]; - console.log('Ecosystem', ecosystemStructArray); - await ecosystemStorage.functions.serialize(ecosystemStructArray); log('##### ElasticDAO: Initialization Complete'); }; module.exports.tags = ['initialDeployment']; module.exports.dependencies = [ - 'Balance', - 'BalanceMultipliers', 'Configurator', 'DAO', 'Ecosystem', diff --git a/package.json b/package.json index b3117e2..4e4849e 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "scripts": { "compile": "npx hardhat compile", "console": "npx hardhat console", - "coverage": "npx hardhat coverage --network coverage --temp artifacts", + "coverage": "npx hardhat coverage --temp artifacts", "deploy": "npx hardhat deploy", "ethereum": "yarn lint && npx hardhat node", "lint": "yarn run prettier && yarn run lint:es6 && yarn run lint:solidity && yarn run lint:tests", @@ -25,9 +25,9 @@ "test": "yarn run prettier:tests && yarn run lint:tests && npx hardhat test --deploy-fixture" }, "dependencies": { - "@elastic-dao/sdk": "0.9.0-beta6", + "@elastic-dao/sdk": "0.9.0-beta7", "@nomiclabs/hardhat-ethers": "2.0.1", - "@nomiclabs/hardhat-etherscan": "2.1.0", + "@nomiclabs/hardhat-etherscan": "2.1.1", "@nomiclabs/hardhat-waffle": "2.0.1", "bignumber.js": "9.0.1", "dotenv": "^8.2.0", diff --git a/src/libraries/ElasticMath.sol b/src/libraries/ElasticMath.sol index 9fe5db2..f5ae806 100644 --- a/src/libraries/ElasticMath.sol +++ b/src/libraries/ElasticMath.sol @@ -3,8 +3,6 @@ pragma solidity 0.7.2; import './SafeMath.sol'; -// import 'hardhat/console.sol'; - /** * This library does the Elastic math */ diff --git a/src/models/Balance.sol b/src/models/Balance.sol deleted file mode 100644 index 061cdf9..0000000 --- a/src/models/Balance.sol +++ /dev/null @@ -1,96 +0,0 @@ -// SPDX-License-Identifier: GPLv3 -pragma solidity 0.7.2; -pragma experimental ABIEncoderV2; - -import './EternalModel.sol'; -import '../libraries/SafeMath.sol'; - -import './BalanceMultipliers.sol'; -import './Token.sol'; -import './TokenHolder.sol'; - -/// @author ElasticDAO - https://ElasticDAO.org -/// @notice This contract is used for storing token balance change data -/// @dev ElasticDAO network contracts can read/write from this contract -// Serialize -> Translation of data from the concerned struct to key-value pairs -/// Deserialize -> Translation of data from the key-value pairs to a struct -contract Balance is EternalModel { - struct Instance { - uint256 blockNumber; - uint256 index; // tokenHolder.counter - uint256 k; - uint256 m; - uint256 lambda; - Ecosystem.Instance ecosystem; - Token.Instance token; - TokenHolder.Instance tokenHolder; - } - - function deserialize( - uint256 _blockNumber, - Ecosystem.Instance memory _ecosystem, - Token.Instance memory _token, - TokenHolder.Instance memory _tokenHolder - ) public view returns (Instance memory record) { - record.blockNumber = _blockNumber; - record.ecosystem = _ecosystem; - record.index = _tokenHolder.counter; - record.lambda = getUint( - keccak256(abi.encode(record.token.uuid, record.tokenHolder.account, record.index, 'lambda')) - ); - record.token = _token; - record.tokenHolder = _tokenHolder; - - BalanceMultipliers.Instance memory balanceMultipliers = - BalanceMultipliers(record.ecosystem.balanceMultipliersModelAddress).deserialize( - _blockNumber, - record.ecosystem, - record.token - ); - - record.blockNumber = _blockNumber; - record.k = balanceMultipliers.k; - record.m = balanceMultipliers.m; - - return record; - } - - function exists( - uint256, - Ecosystem.Instance memory, - Token.Instance memory, - TokenHolder.Instance memory - ) external pure returns (bool) { - return true; - } - - /** - * @dev serializes Instance struct - * @param record Instance - */ - function serialize(Instance memory record) external { - require(msg.sender == record.token.uuid, 'ElasticDAO: Unauthorized'); - - setUint( - keccak256( - abi.encode(record.token.uuid, record.tokenHolder.account, record.index, 'blockNumber') - ), - record.blockNumber - ); - setUint( - keccak256(abi.encode(record.token.uuid, record.tokenHolder.account, record.index, 'lambda')), - record.lambda - ); - - BalanceMultipliers.Instance memory balanceMultipliers; - balanceMultipliers.blockNumber = record.blockNumber; - balanceMultipliers.index = record.token.counter; - balanceMultipliers.k = record.k; - balanceMultipliers.m = record.m; - balanceMultipliers.ecosystem = record.ecosystem; - balanceMultipliers.token = record.token; - BalanceMultipliers(record.ecosystem.balanceMultipliersModelAddress).serialize( - balanceMultipliers - ); - } -} diff --git a/src/models/BalanceMultipliers.sol b/src/models/BalanceMultipliers.sol deleted file mode 100644 index 93940d4..0000000 --- a/src/models/BalanceMultipliers.sol +++ /dev/null @@ -1,62 +0,0 @@ -// SPDX-License-Identifier: GPLv3 -pragma solidity 0.7.2; -pragma experimental ABIEncoderV2; - -import './EternalModel.sol'; -import '../libraries/SafeMath.sol'; - -import './Token.sol'; -import './TokenHolder.sol'; - -/// @author ElasticDAO - https://ElasticDAO.org -/// @notice This contract is used for storing token balance change data -/// @dev ElasticDAO network contracts can read/write from this contract -// Serialize -> Translation of data from the concerned struct to key-value pairs -/// Deserialize -> Translation of data from the key-value pairs to a struct -contract BalanceMultipliers is EternalModel { - struct Instance { - uint256 blockNumber; - uint256 index; // counter - uint256 k; - uint256 m; - Ecosystem.Instance ecosystem; - Token.Instance token; - } - - function deserialize( - uint256 _blockNumber, - Ecosystem.Instance memory _ecosystem, - Token.Instance memory _token - ) public view returns (Instance memory record) { - record.blockNumber = _blockNumber; - record.ecosystem = _ecosystem; - record.index = _token.counter; - record.k = getUint(keccak256(abi.encode(_token.uuid, record.index, 'k'))); - record.m = getUint(keccak256(abi.encode(_token.uuid, record.index, 'm'))); - record.token = _token; - return record; - } - - function exists( - uint256, - Ecosystem.Instance memory, - Token.Instance memory - ) external pure returns (bool) { - return true; - } - - /** - * @dev serializes Instance struct - * @param record Instance - */ - function serialize(Instance memory record) external { - require(msg.sender == record.ecosystem.balanceModelAddress, 'ElasticDAO: Unauthorized'); - - setUint( - keccak256(abi.encode(record.token.uuid, record.index, 'blockNumber')), - record.blockNumber - ); - setUint(keccak256(abi.encode(record.token.uuid, record.index, 'k')), record.k); - setUint(keccak256(abi.encode(record.token.uuid, record.index, 'm')), record.m); - } -} diff --git a/src/models/Ecosystem.sol b/src/models/Ecosystem.sol index 20e884c..46601da 100644 --- a/src/models/Ecosystem.sol +++ b/src/models/Ecosystem.sol @@ -14,8 +14,6 @@ contract Ecosystem is EternalModel { struct Instance { address daoAddress; // Models - address balanceModelAddress; - address balanceMultipliersModelAddress; address daoModelAddress; address ecosystemModelAddress; address tokenHolderModelAddress; @@ -34,12 +32,6 @@ contract Ecosystem is EternalModel { function deserialize(address _daoAddress) external view returns (Instance memory record) { if (_exists(_daoAddress)) { record.daoAddress = _daoAddress; - record.balanceModelAddress = getAddress( - keccak256(abi.encode(record.daoAddress, 'balanceModelAddress')) - ); - record.balanceMultipliersModelAddress = getAddress( - keccak256(abi.encode(record.daoAddress, 'balanceMultipliersModelAddress')) - ); record.configuratorAddress = getAddress( keccak256(abi.encode(record.daoAddress, 'configuratorAddress')) ); @@ -84,14 +76,6 @@ contract Ecosystem is EternalModel { 'ElasticDAO: Unauthorized' ); - setAddress( - keccak256(abi.encode(record.daoAddress, 'balanceModelAddress')), - record.balanceModelAddress - ); - setAddress( - keccak256(abi.encode(record.daoAddress, 'balanceMultipliersModelAddress')), - record.balanceMultipliersModelAddress - ); setAddress( keccak256(abi.encode(record.daoAddress, 'configuratorAddress')), record.configuratorAddress diff --git a/src/models/EternalModel.sol b/src/models/EternalModel.sol index 479f721..92c6592 100644 --- a/src/models/EternalModel.sol +++ b/src/models/EternalModel.sol @@ -34,8 +34,6 @@ contract EternalModel { /// @param _key bytes32 location should be keccak256 and abi.encodePacked /// @return string _value from storage _key location function getString(bytes32 _key) internal view returns (string memory) { - require(_key[0] != 0, 'ElasticDAO: Zero Address'); - return s.stringStorage[_key]; } @@ -64,8 +62,6 @@ contract EternalModel { /// @param _key bytes32 location should be keccak256 and abi.encodePacked /// @return bytes _value from storage _key location function getBytes(bytes32 _key) internal view returns (bytes memory) { - require(_key[0] != 0, 'ElasticDAO: Zero Address'); - return s.bytesStorage[_key]; } @@ -136,8 +132,6 @@ contract EternalModel { /// @dev restricted to latest ElasticDAO Networks contracts /// @param _key bytes32 location should be keccak256 and abi.encodePacked function deleteString(bytes32 _key) internal { - require(_key[0] != 0, 'ElasticDAO: Zero Address'); - delete s.stringStorage[_key]; } diff --git a/src/services/Configurator.sol b/src/services/Configurator.sol index efdd432..8ce5e50 100644 --- a/src/services/Configurator.sol +++ b/src/services/Configurator.sol @@ -52,8 +52,6 @@ contract Configurator { ecosystem.daoAddress = msg.sender; // Models - ecosystem.balanceModelAddress = defaults.balanceModelAddress; - ecosystem.balanceMultipliersModelAddress = defaults.balanceMultipliersModelAddress; ecosystem.daoModelAddress = defaults.daoModelAddress; ecosystem.ecosystemModelAddress = defaults.ecosystemModelAddress; ecosystem.tokenHolderModelAddress = defaults.tokenHolderModelAddress; diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index 220bf2e..c17fe62 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -8,7 +8,6 @@ import '../libraries/SafeMath.sol'; import '../libraries/ElasticMath.sol'; import '../core/ElasticDAO.sol'; -import '../models/Balance.sol'; import '../models/DAO.sol'; import '../models/Ecosystem.sol'; import '../models/Token.sol'; @@ -400,14 +399,7 @@ contract ElasticGovernanceToken is IElasticToken { uint256 _deltaLambda ) internal returns (TokenHolder.Instance memory) { Ecosystem.Instance memory ecosystem = _getEcosystem(); - Balance.Instance memory balance; - balance.blockNumber = block.number; - balance.ecosystem = ecosystem; - balance.index = _tokenHolder.counter; - balance.k = _token.k; - balance.m = _token.m; - balance.token = _token; - balance.tokenHolder = _tokenHolder; + _token.counter = SafeMath.add(_token.counter, 1); _tokenHolder.counter = SafeMath.add(_tokenHolder.counter, 1); @@ -417,9 +409,6 @@ contract ElasticGovernanceToken is IElasticToken { _tokenHolder.lambda = SafeMath.sub(_tokenHolder.lambda, _deltaLambda); } - balance.lambda = _tokenHolder.lambda; - - Balance(ecosystem.balanceModelAddress).serialize(balance); Token(ecosystem.tokenModelAddress).incrementCounter(_token); return _tokenHolder; diff --git a/test/capitalDeltaTest.js b/test/capitalDeltaTest.js index 1f4b1a9..0d0809e 100644 --- a/test/capitalDeltaTest.js +++ b/test/capitalDeltaTest.js @@ -1,5 +1,4 @@ const { expect } = require('chai'); -const { deployments } = require('hardhat'); const { capitalDelta, deltaE, mDash } = require('@elastic-dao/sdk'); const BigNumber = require('bignumber.js'); @@ -12,7 +11,6 @@ describe('ElasticDAO: CapitalDelta value of a token', () => { let token; it('Should return a mismatch in the values of capital delta', async () => { - await deployments.fixture(); dao = await summonedDAO(); token = await dao.token(); diff --git a/test/ecosystemTests.js b/test/ecosystemTests.js index c60adf1..1614ff3 100644 --- a/test/ecosystemTests.js +++ b/test/ecosystemTests.js @@ -5,8 +5,6 @@ const { deployments } = require('hardhat'); describe('ElasticDAO: Ecosystem Model', () => { let agent; - let Balance; - let BalanceMultipliers; let Configurator; let Dao; let Ecosystem; @@ -18,8 +16,6 @@ describe('ElasticDAO: Ecosystem Model', () => { [agent] = await hre.getSigners(); // setup needed contracts - Balance = await deployments.get('Balance'); - BalanceMultipliers = await deployments.get('BalanceMultipliers'); Configurator = await deployments.get('Configurator'); Dao = await deployments.get('DAO'); Ecosystem = await deployments.get('Ecosystem'); @@ -31,8 +27,6 @@ describe('ElasticDAO: Ecosystem Model', () => { it('Should look up and return ecosystem instance record by uuid address', async () => { const record = await ecosystemStorage.deserialize(ethers.constants.AddressZero); - expect(record.balanceModelAddress).to.equal(Balance.address); - expect(record.balanceMultipliersModelAddress).to.equal(BalanceMultipliers.address); expect(record.configuratorAddress).to.equal(Configurator.address); expect(record.daoAddress).to.equal(ethers.constants.AddressZero); expect(record.daoModelAddress).to.equal(Dao.address); diff --git a/test/elasticDAOTests.js b/test/elasticDAOTests.js index 1f6ffef..c567a52 100644 --- a/test/elasticDAOTests.js +++ b/test/elasticDAOTests.js @@ -246,13 +246,10 @@ describe('ElasticDAO: Core', () => { it('Should check to see if a instance record exists by daoAddress', async () => { const { agent } = await signers(); const DAOModel = await deployments.get('DAO'); - const DAOModelInstance = new ethers.Contract(DAOModel.address, DAOModel.abi, agent); + const DAOModelStorage = new ethers.Contract(DAOModel.address, DAOModel.abi, agent); const ecosystem = await dao.elasticDAO.contract.getEcosystem(); - const recordDoesntExist = await DAOModelInstance.exists( - ethers.constants.AddressZero, - ecosystem, - ); - const recordExists = await DAOModelInstance.exists(dao.uuid, ecosystem); + const recordDoesntExist = await DAOModelStorage.exists(ethers.constants.AddressZero, ecosystem); + const recordExists = await DAOModelStorage.exists(dao.uuid, ecosystem); expect(recordDoesntExist).to.equal(false); expect(recordExists).to.equal(true); diff --git a/test/env.js b/test/env.js index 877e73e..88e12e1 100644 --- a/test/env.js +++ b/test/env.js @@ -1,17 +1,7 @@ const { deployments } = require('hardhat'); module.exports = async () => { - const [ - Balance, - BalanceMultipliers, - DAO, - Ecosystem, - Factory, - Token, - TokenHolder, - ] = await Promise.all([ - deployments.get('Balance'), - deployments.get('BalanceMultipliers'), + const [DAO, Ecosystem, Factory, Token, TokenHolder] = await Promise.all([ deployments.get('DAO'), deployments.get('Ecosystem'), deployments.get('ElasticDAOFactory'), @@ -20,8 +10,6 @@ module.exports = async () => { ]); const env = { elasticDAO: { - balanceModelAddress: Balance.address, - balanceMultipliersModelAddress: BalanceMultipliers.address, daoModelAddress: DAO.address, ecosystemModelAddress: Ecosystem.address, factoryAddress: Factory.address, diff --git a/yarn.lock b/yarn.lock index 1a4976c..567c6d5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,10 +23,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@elastic-dao/sdk@0.9.0-beta6": - version "0.9.0-beta6" - resolved "https://registry.yarnpkg.com/@elastic-dao/sdk/-/sdk-0.9.0-beta6.tgz#74263df08ed9b4c11abb2113541a94431fc9718d" - integrity sha512-qi3P9drU6nGENCt+b1HyC5t9qZqmaPT6pojGjG6y2Ser0WnXOG3xzW8X8ofrUYlrdsrIaP1Fh5BRYvYOG58Wsw== +"@elastic-dao/sdk@0.9.0-beta7": + version "0.9.0-beta7" + resolved "https://registry.yarnpkg.com/@elastic-dao/sdk/-/sdk-0.9.0-beta7.tgz#926eac3db945ce507c60d9a117489422869cd678" + integrity sha512-5FIzEzUJaxq10EW59dHV7e7XCKdBaVElqm5mnb7ZH4ZpxkSiosaOQ54tncZaW9HA8yas3oHoZk5k4vTrEEBrTg== dependencies: "@pie-dao/utils" "^1.0.0" bignumber.js "^9.0.0" @@ -513,14 +513,15 @@ resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.0.1.tgz#f86a6fa210dbe6270adffccc75e93ed60a856904" integrity sha512-uTFHDhhvJ+UjfvvMeQxD3ZALuzuI3FXzTYT1Z5N3ebyZL5z4Ogwt55GB0R9tdKY0p5HhDhBjU/gsCjUEwIVoaw== -"@nomiclabs/hardhat-etherscan@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-2.1.0.tgz#08512c3e602155dc0d2becb193cd2e0155867839" - integrity sha512-YK9/UZI1Ct9TYfqZJnjIERlFC7bFrG0eUS2O0kFrH8RjLdcQXBI0GNpxXGAuDbotBg0t8wRKHibbK50TQu0ybA== +"@nomiclabs/hardhat-etherscan@2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-2.1.1.tgz#186f3fa652a0ca20fb77aa857cfad2da845d5cbf" + integrity sha512-8TNUFsO5DpAfwNlXMDhcEtFAMOYsVNaQL2vq5vuCD45kUKBgL8H21++zOk231ha9D7LQWBMCIg7A7iPxw6Jwmg== dependencies: "@ethersproject/abi" "^5.0.2" "@ethersproject/address" "^5.0.2" cbor "^5.0.2" + debug "^4.1.1" fs-extra "^7.0.1" node-fetch "^2.6.0" semver "^6.3.0" From 6fb224ee5479ea226c48a101aed0def053968b5d Mon Sep 17 00:00:00 2001 From: alleycatdev Date: Sun, 7 Feb 2021 11:51:36 -0500 Subject: [PATCH 021/118] changes internal variables in contracts to public for getter access and ease of finding data when viewing etherscan as well as adds events to all the things --- coverage.json | 2 +- src/core/ElasticDAO.sol | 15 +++++++++++++-- src/core/ElasticDAOFactory.sol | 8 ++++---- src/models/Ecosystem.sol | 2 +- src/models/TokenHolder.sol | 20 ++++++++++++++------ test/tokenHolderModelTests.js | 19 +++++++++++++++++++ 6 files changed, 52 insertions(+), 14 deletions(-) create mode 100644 test/tokenHolderModelTests.js diff --git a/coverage.json b/coverage.json index a4b07d2..37e3b3a 100644 --- a/coverage.json +++ b/coverage.json @@ -1 +1 @@ -{"src/core/ElasticDAO.sol":{"l":{"24":0,"25":0,"26":0,"29":46,"30":46,"32":46,"33":45,"36":325,"37":325,"38":325,"41":0,"42":0,"45":58,"46":57,"49":267,"50":267,"51":267,"52":267,"54":267,"55":265,"58":0,"59":0,"69":87,"70":87,"71":87,"72":87,"73":87,"74":87,"76":87,"77":87,"78":87,"83":0,"84":0,"85":0,"88":0,"89":0,"91":0,"102":57,"103":57,"105":57,"116":57,"117":57,"118":57,"120":57,"124":0,"126":0,"131":0,"132":0,"141":0,"151":0,"154":0,"155":0,"158":0,"159":0,"160":0,"161":0,"164":0,"168":0,"169":0,"170":0,"171":0,"175":0,"187":45,"189":45,"190":45,"191":45,"195":219,"197":218,"198":218,"199":218,"200":218,"202":218,"204":218,"205":652,"207":217,"208":217,"214":1,"218":2,"224":326,"225":326,"229":1007,"233":45,"234":45},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAO.sol","s":{"1":0,"2":0,"3":46,"4":46,"5":46,"6":325,"7":325,"8":0,"9":58,"10":267,"11":267,"12":267,"13":267,"14":267,"15":0,"16":87,"17":87,"18":87,"19":87,"20":87,"21":87,"22":87,"23":87,"24":87,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":57,"32":57,"33":57,"34":57,"35":57,"36":57,"37":57,"38":0,"39":0,"40":0,"41":0,"42":0,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":45,"57":45,"58":45,"59":45,"60":219,"61":218,"62":218,"63":218,"64":218,"65":218,"66":218,"67":652,"68":217,"69":217,"70":1,"71":2,"72":326,"73":326,"74":1007,"75":45,"76":45},"b":{"1":[0,0],"2":[45,1],"3":[325,0],"4":[0,0],"5":[57,1],"6":[265,2],"7":[0,0],"8":[57,0],"9":[0,0],"10":[0,0],"11":[218,1]},"f":{"1":0,"2":46,"3":325,"4":0,"5":58,"6":267,"7":0,"8":87,"9":0,"10":57,"11":0,"12":0,"13":0,"14":45,"15":219,"16":1,"17":2,"18":326,"19":1007,"20":45,"21":0},"fnMap":{"1":{"name":"onlyAfterSummoning","line":23,"loc":{"start":{"line":23,"column":2},"end":{"line":27,"column":2}}},"2":{"name":"onlyAfterTokenInitialized","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":34,"column":2}}},"3":{"name":"onlyBeforeSummoning","line":35,"loc":{"start":{"line":35,"column":2},"end":{"line":39,"column":2}}},"4":{"name":"onlyController","line":40,"loc":{"start":{"line":40,"column":2},"end":{"line":43,"column":2}}},"5":{"name":"onlyDeployer","line":44,"loc":{"start":{"line":44,"column":2},"end":{"line":47,"column":2}}},"6":{"name":"onlySummoners","line":48,"loc":{"start":{"line":48,"column":2},"end":{"line":56,"column":2}}},"7":{"name":"onlyWhenOpen","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":60,"column":2}}},"8":{"name":"constructor","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":79,"column":2}}},"9":{"name":"exit","line":81,"loc":{"start":{"line":81,"column":2},"end":{"line":92,"column":2}}},"10":{"name":"initializeToken","line":101,"loc":{"start":{"line":94,"column":2},"end":{"line":121,"column":2}}},"11":{"name":"join","line":123,"loc":{"start":{"line":123,"column":2},"end":{"line":165,"column":2}}},"12":{"name":"setController","line":167,"loc":{"start":{"line":167,"column":2},"end":{"line":172,"column":2}}},"13":{"name":"setMaxVotingLambda","line":174,"loc":{"start":{"line":174,"column":2},"end":{"line":176,"column":2}}},"14":{"name":"seedSummoning","line":185,"loc":{"start":{"line":180,"column":2},"end":{"line":192,"column":2}}},"15":{"name":"summon","line":194,"loc":{"start":{"line":194,"column":2},"end":{"line":209,"column":2}}},"16":{"name":"getDAO","line":213,"loc":{"start":{"line":213,"column":2},"end":{"line":215,"column":2}}},"17":{"name":"getEcosystem","line":217,"loc":{"start":{"line":217,"column":2},"end":{"line":219,"column":2}}},"18":{"name":"_getDAO","line":223,"loc":{"start":{"line":223,"column":2},"end":{"line":226,"column":2}}},"19":{"name":"_getEcosystem","line":228,"loc":{"start":{"line":228,"column":2},"end":{"line":230,"column":2}}},"20":{"name":"_getToken","line":232,"loc":{"start":{"line":232,"column":2},"end":{"line":236,"column":2}}},"21":{"name":null,"line":240,"loc":{"start":{"line":240,"column":2},"end":{"line":240,"column":31}}}},"statementMap":{"1":{"start":{"line":24,"column":4},"end":{"line":24,"column":39}},"2":{"start":{"line":25,"column":4},"end":{"line":25,"column":60}},"3":{"start":{"line":29,"column":4},"end":{"line":29,"column":57}},"4":{"start":{"line":30,"column":4},"end":{"line":30,"column":911}},"5":{"start":{"line":32,"column":4},"end":{"line":32,"column":77}},"6":{"start":{"line":36,"column":4},"end":{"line":36,"column":39}},"7":{"start":{"line":37,"column":4},"end":{"line":37,"column":73}},"8":{"start":{"line":41,"column":4},"end":{"line":41,"column":67}},"9":{"start":{"line":45,"column":4},"end":{"line":45,"column":63}},"10":{"start":{"line":49,"column":4},"end":{"line":49,"column":57}},"11":{"start":{"line":50,"column":4},"end":{"line":50,"column":52}},"12":{"start":{"line":51,"column":4},"end":{"line":51,"column":79}},"13":{"start":{"line":52,"column":4},"end":{"line":52,"column":64}},"14":{"start":{"line":54,"column":4},"end":{"line":54,"column":55}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":71}},"16":{"start":{"line":69,"column":4},"end":{"line":69,"column":49}},"17":{"start":{"line":70,"column":4},"end":{"line":70,"column":27}},"18":{"start":{"line":71,"column":4},"end":{"line":71,"column":24}},"19":{"start":{"line":72,"column":4},"end":{"line":72,"column":98}},"20":{"start":{"line":73,"column":4},"end":{"line":73,"column":40}},"21":{"start":{"line":74,"column":4},"end":{"line":74,"column":25}},"22":{"start":{"line":76,"column":4},"end":{"line":76,"column":74}},"23":{"start":{"line":77,"column":4},"end":{"line":77,"column":79}},"24":{"start":{"line":78,"column":4},"end":{"line":78,"column":74}},"25":{"start":{"line":83,"column":4},"end":{"line":83,"column":45}},"26":{"start":{"line":84,"column":4},"end":{"line":84,"column":77}},"27":{"start":{"line":85,"column":4},"end":{"line":85,"column":53}},"28":{"start":{"line":88,"column":4},"end":{"line":88,"column":72}},"29":{"start":{"line":89,"column":4},"end":{"line":89,"column":86}},"30":{"start":{"line":91,"column":4},"end":{"line":91,"column":41}},"31":{"start":{"line":102,"column":4},"end":{"line":102,"column":88}},"32":{"start":{"line":103,"column":4},"end":{"line":103,"column":57}},"33":{"start":{"line":105,"column":4},"end":{"line":105,"column":3531}},"34":{"start":{"line":116,"column":4},"end":{"line":116,"column":77}},"35":{"start":{"line":117,"column":4},"end":{"line":117,"column":38}},"36":{"start":{"line":118,"column":4},"end":{"line":118,"column":38}},"37":{"start":{"line":120,"column":4},"end":{"line":120,"column":51}},"38":{"start":{"line":124,"column":4},"end":{"line":124,"column":45}},"39":{"start":{"line":126,"column":4},"end":{"line":126,"column":4115}},"40":{"start":{"line":131,"column":4},"end":{"line":131,"column":77}},"41":{"start":{"line":132,"column":4},"end":{"line":132,"column":4326}},"42":{"start":{"line":141,"column":4},"end":{"line":141,"column":4772}},"43":{"start":{"line":151,"column":4},"end":{"line":151,"column":67}},"44":{"start":{"line":154,"column":4},"end":{"line":154,"column":65}},"45":{"start":{"line":155,"column":4},"end":{"line":155,"column":72}},"46":{"start":{"line":158,"column":4},"end":{"line":158,"column":57}},"47":{"start":{"line":159,"column":4},"end":{"line":159,"column":59}},"48":{"start":{"line":160,"column":4},"end":{"line":160,"column":18}},"49":{"start":{"line":161,"column":4},"end":{"line":161,"column":32}},"50":{"start":{"line":164,"column":4},"end":{"line":164,"column":53}},"51":{"start":{"line":168,"column":4},"end":{"line":168,"column":27}},"52":{"start":{"line":169,"column":4},"end":{"line":169,"column":83}},"53":{"start":{"line":170,"column":4},"end":{"line":170,"column":38}},"54":{"start":{"line":171,"column":4},"end":{"line":171,"column":38}},"55":{"start":{"line":175,"column":4},"end":{"line":175,"column":37}},"56":{"start":{"line":187,"column":4},"end":{"line":187,"column":45}},"57":{"start":{"line":189,"column":4},"end":{"line":189,"column":30}},"58":{"start":{"line":190,"column":4},"end":{"line":190,"column":62}},"59":{"start":{"line":191,"column":4},"end":{"line":191,"column":73}},"60":{"start":{"line":195,"column":4},"end":{"line":195,"column":98}},"61":{"start":{"line":197,"column":4},"end":{"line":197,"column":57}},"62":{"start":{"line":198,"column":4},"end":{"line":198,"column":52}},"63":{"start":{"line":199,"column":4},"end":{"line":199,"column":79}},"64":{"start":{"line":200,"column":4},"end":{"line":200,"column":6715}},"65":{"start":{"line":202,"column":4},"end":{"line":202,"column":77}},"66":{"start":{"line":204,"column":4},"end":{"line":204,"column":6835}},"67":{"start":{"line":205,"column":6},"end":{"line":205,"column":76}},"68":{"start":{"line":207,"column":4},"end":{"line":207,"column":22}},"69":{"start":{"line":208,"column":4},"end":{"line":208,"column":29}},"70":{"start":{"line":214,"column":4},"end":{"line":214,"column":20}},"71":{"start":{"line":218,"column":4},"end":{"line":218,"column":26}},"72":{"start":{"line":224,"column":4},"end":{"line":224,"column":57}},"73":{"start":{"line":225,"column":4},"end":{"line":225,"column":79}},"74":{"start":{"line":229,"column":4},"end":{"line":229,"column":70}},"75":{"start":{"line":233,"column":4},"end":{"line":233,"column":57}},"76":{"start":{"line":234,"column":4},"end":{"line":234,"column":7878}}},"branchMap":{"1":{"line":25,"type":"if","locations":[{"start":{"line":25,"column":4},"end":{"line":25,"column":4}},{"start":{"line":25,"column":4},"end":{"line":25,"column":4}}]},"2":{"line":32,"type":"if","locations":[{"start":{"line":32,"column":4},"end":{"line":32,"column":4}},{"start":{"line":32,"column":4},"end":{"line":32,"column":4}}]},"3":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":37,"column":4}},{"start":{"line":37,"column":4},"end":{"line":37,"column":4}}]},"4":{"line":41,"type":"if","locations":[{"start":{"line":41,"column":4},"end":{"line":41,"column":4}},{"start":{"line":41,"column":4},"end":{"line":41,"column":4}}]},"5":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":45,"column":4}},{"start":{"line":45,"column":4},"end":{"line":45,"column":4}}]},"6":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":54,"column":4}},{"start":{"line":54,"column":4},"end":{"line":54,"column":4}}]},"7":{"line":58,"type":"if","locations":[{"start":{"line":58,"column":4},"end":{"line":58,"column":4}},{"start":{"line":58,"column":4},"end":{"line":58,"column":4}}]},"8":{"line":102,"type":"if","locations":[{"start":{"line":102,"column":4},"end":{"line":102,"column":4}},{"start":{"line":102,"column":4},"end":{"line":102,"column":4}}]},"9":{"line":126,"type":"if","locations":[{"start":{"line":126,"column":4},"end":{"line":126,"column":4}},{"start":{"line":126,"column":4},"end":{"line":126,"column":4}}]},"10":{"line":151,"type":"if","locations":[{"start":{"line":151,"column":4},"end":{"line":151,"column":4}},{"start":{"line":151,"column":4},"end":{"line":151,"column":4}}]},"11":{"line":195,"type":"if","locations":[{"start":{"line":195,"column":4},"end":{"line":195,"column":4}},{"start":{"line":195,"column":4},"end":{"line":195,"column":4}}]}}},"src/core/ElasticDAOFactory.sol":{"l":{"21":0,"22":0,"26":3,"27":3,"46":39,"50":39,"52":39,"53":39,"54":39,"58":0,"59":0,"63":0,"65":0,"66":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAOFactory.sol","s":{"1":0,"2":3,"3":3,"4":39,"5":39,"6":39,"7":39,"8":39,"9":0,"10":0,"11":0,"12":0,"13":0},"b":{"1":[0,0]},"f":{"1":0,"2":3,"3":39,"4":0,"5":0,"6":0},"fnMap":{"1":{"name":"onlyDeployer","line":20,"loc":{"start":{"line":20,"column":2},"end":{"line":23,"column":2}}},"2":{"name":"constructor","line":25,"loc":{"start":{"line":25,"column":2},"end":{"line":28,"column":2}}},"3":{"name":"deployDAOAndToken","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":55,"column":2}}},"4":{"name":"updateFeeAddress","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":60,"column":2}}},"5":{"name":"collectFees","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":67,"column":2}}},"6":{"name":null,"line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":71,"column":31}}}},"statementMap":{"1":{"start":{"line":21,"column":4},"end":{"line":21,"column":63}},"2":{"start":{"line":26,"column":4},"end":{"line":26,"column":24}},"3":{"start":{"line":27,"column":4},"end":{"line":27,"column":49}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":1354}},"5":{"start":{"line":50,"column":4},"end":{"line":50,"column":96}},"6":{"start":{"line":52,"column":4},"end":{"line":52,"column":49}},"7":{"start":{"line":53,"column":4},"end":{"line":53,"column":55}},"8":{"start":{"line":54,"column":4},"end":{"line":54,"column":41}},"9":{"start":{"line":58,"column":4},"end":{"line":58,"column":37}},"10":{"start":{"line":59,"column":4},"end":{"line":59,"column":40}},"11":{"start":{"line":63,"column":4},"end":{"line":63,"column":42}},"12":{"start":{"line":65,"column":4},"end":{"line":65,"column":30}},"13":{"start":{"line":66,"column":4},"end":{"line":66,"column":51}}},"branchMap":{"1":{"line":21,"type":"if","locations":[{"start":{"line":21,"column":4},"end":{"line":21,"column":4}},{"start":{"line":21,"column":4},"end":{"line":21,"column":4}}]}}},"src/interfaces/IElasticToken.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IElasticToken.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/interfaces/IERC20.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IERC20.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/libraries/ElasticMath.sol":{"l":{"16":0,"40":0,"42":0,"45":0,"48":0,"51":0,"54":0,"57":0,"60":0,"63":0,"66":0,"74":0,"92":0,"105":0,"122":698,"132":1396,"142":45},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/ElasticMath.sol","s":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":698,"16":1396,"17":45},"b":{},"f":{"1":0,"2":0,"3":0,"4":0,"5":0,"6":698,"7":1396,"8":45},"fnMap":{"1":{"name":"capitalDelta","line":11,"loc":{"start":{"line":11,"column":2},"end":{"line":17,"column":2}}},"2":{"name":"deltaE","line":32,"loc":{"start":{"line":32,"column":2},"end":{"line":67,"column":2}}},"3":{"name":"lambdaFromT","line":69,"loc":{"start":{"line":69,"column":2},"end":{"line":75,"column":2}}},"4":{"name":"mDash","line":87,"loc":{"start":{"line":87,"column":2},"end":{"line":93,"column":2}}},"5":{"name":"revamp","line":104,"loc":{"start":{"line":104,"column":2},"end":{"line":106,"column":2}}},"6":{"name":"t","line":117,"loc":{"start":{"line":117,"column":2},"end":{"line":123,"column":2}}},"7":{"name":"wmul","line":131,"loc":{"start":{"line":131,"column":2},"end":{"line":133,"column":2}}},"8":{"name":"wdiv","line":141,"loc":{"start":{"line":141,"column":2},"end":{"line":143,"column":2}}}},"statementMap":{"1":{"start":{"line":16,"column":4},"end":{"line":16,"column":53}},"2":{"start":{"line":40,"column":4},"end":{"line":40,"column":58}},"3":{"start":{"line":42,"column":4},"end":{"line":42,"column":42}},"4":{"start":{"line":45,"column":4},"end":{"line":45,"column":34}},"5":{"start":{"line":48,"column":4},"end":{"line":48,"column":31}},"6":{"start":{"line":51,"column":4},"end":{"line":51,"column":44}},"7":{"start":{"line":54,"column":4},"end":{"line":54,"column":26}},"8":{"start":{"line":57,"column":4},"end":{"line":57,"column":35}},"9":{"start":{"line":60,"column":4},"end":{"line":60,"column":34}},"10":{"start":{"line":63,"column":4},"end":{"line":63,"column":27}},"11":{"start":{"line":66,"column":4},"end":{"line":66,"column":22}},"12":{"start":{"line":74,"column":4},"end":{"line":74,"column":30}},"13":{"start":{"line":92,"column":4},"end":{"line":92,"column":44}},"14":{"start":{"line":105,"column":4},"end":{"line":105,"column":57}},"15":{"start":{"line":122,"column":4},"end":{"line":122,"column":35}},"16":{"start":{"line":132,"column":4},"end":{"line":132,"column":90}},"17":{"start":{"line":142,"column":4},"end":{"line":142,"column":72}}},"branchMap":{}},"src/libraries/SafeMath.sol":{"l":{"29":6351,"30":6351,"32":6351,"46":0,"64":0,"65":0,"67":0,"84":1441,"85":0,"88":1441,"89":1441,"91":1441,"107":0,"127":0,"128":0,"131":0,"147":0,"167":0,"168":0,"172":0,"173":0,"175":0,"177":0,"179":0,"180":0,"181":0,"189":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/SafeMath.sol","s":{"1":6351,"2":6351,"3":6351,"4":0,"5":0,"6":0,"7":0,"8":1441,"9":0,"10":1441,"11":1441,"12":1441,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0},"b":{"1":[6351,0],"2":[0,0],"3":[0,1441],"4":[1441,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0]},"f":{"1":6351,"2":0,"3":0,"4":1441,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0},"fnMap":{"1":{"name":"add","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":33,"column":2}}},"2":{"name":"sub","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":2}}},"3":{"name":"sub","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":68,"column":2}}},"4":{"name":"mul","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":92,"column":2}}},"5":{"name":"div","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":108,"column":2}}},"6":{"name":"div","line":122,"loc":{"start":{"line":122,"column":2},"end":{"line":132,"column":2}}},"7":{"name":"mod","line":146,"loc":{"start":{"line":146,"column":2},"end":{"line":148,"column":2}}},"8":{"name":"mod","line":162,"loc":{"start":{"line":162,"column":2},"end":{"line":169,"column":2}}},"9":{"name":"pow","line":171,"loc":{"start":{"line":171,"column":2},"end":{"line":183,"column":2}}},"10":{"name":"max","line":188,"loc":{"start":{"line":188,"column":2},"end":{"line":190,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":21}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":49}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":12}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":54}},"5":{"start":{"line":64,"column":4},"end":{"line":64,"column":32}},"6":{"start":{"line":65,"column":4},"end":{"line":65,"column":21}},"7":{"start":{"line":67,"column":4},"end":{"line":67,"column":12}},"8":{"start":{"line":84,"column":4},"end":{"line":84,"column":2356}},"9":{"start":{"line":85,"column":6},"end":{"line":85,"column":14}},"10":{"start":{"line":88,"column":4},"end":{"line":88,"column":21}},"11":{"start":{"line":89,"column":4},"end":{"line":89,"column":59}},"12":{"start":{"line":91,"column":4},"end":{"line":91,"column":12}},"13":{"start":{"line":107,"column":4},"end":{"line":107,"column":50}},"14":{"start":{"line":127,"column":4},"end":{"line":127,"column":31}},"15":{"start":{"line":128,"column":4},"end":{"line":128,"column":21}},"16":{"start":{"line":131,"column":4},"end":{"line":131,"column":12}},"17":{"start":{"line":147,"column":4},"end":{"line":147,"column":48}},"18":{"start":{"line":167,"column":4},"end":{"line":167,"column":32}},"19":{"start":{"line":168,"column":4},"end":{"line":168,"column":16}},"20":{"start":{"line":172,"column":4},"end":{"line":172,"column":5030}},"21":{"start":{"line":173,"column":6},"end":{"line":173,"column":14}},"22":{"start":{"line":174,"column":11},"end":{"line":174,"column":5078}},"23":{"start":{"line":175,"column":6},"end":{"line":175,"column":17}},"24":{"start":{"line":176,"column":11},"end":{"line":176,"column":5129}},"25":{"start":{"line":177,"column":6},"end":{"line":177,"column":14}},"26":{"start":{"line":179,"column":6},"end":{"line":179,"column":22}},"27":{"start":{"line":180,"column":6},"end":{"line":180,"column":71}},"28":{"start":{"line":180,"column":55},"end":{"line":180,"column":70}},"29":{"start":{"line":181,"column":6},"end":{"line":181,"column":14}},"30":{"start":{"line":189,"column":4},"end":{"line":189,"column":25}}},"branchMap":{"1":{"line":30,"type":"if","locations":[{"start":{"line":30,"column":4},"end":{"line":30,"column":4}},{"start":{"line":30,"column":4},"end":{"line":30,"column":4}}]},"2":{"line":64,"type":"if","locations":[{"start":{"line":64,"column":4},"end":{"line":64,"column":4}},{"start":{"line":64,"column":4},"end":{"line":64,"column":4}}]},"3":{"line":84,"type":"if","locations":[{"start":{"line":84,"column":4},"end":{"line":84,"column":4}},{"start":{"line":84,"column":4},"end":{"line":84,"column":4}}]},"4":{"line":89,"type":"if","locations":[{"start":{"line":89,"column":4},"end":{"line":89,"column":4}},{"start":{"line":89,"column":4},"end":{"line":89,"column":4}}]},"5":{"line":127,"type":"if","locations":[{"start":{"line":127,"column":4},"end":{"line":127,"column":4}},{"start":{"line":127,"column":4},"end":{"line":127,"column":4}}]},"6":{"line":167,"type":"if","locations":[{"start":{"line":167,"column":4},"end":{"line":167,"column":4}},{"start":{"line":167,"column":4},"end":{"line":167,"column":4}}]},"7":{"line":172,"type":"if","locations":[{"start":{"line":172,"column":4},"end":{"line":172,"column":4}},{"start":{"line":172,"column":4},"end":{"line":172,"column":4}}]},"8":{"line":174,"type":"if","locations":[{"start":{"line":174,"column":11},"end":{"line":174,"column":11}},{"start":{"line":174,"column":11},"end":{"line":174,"column":11}}]},"9":{"line":176,"type":"if","locations":[{"start":{"line":176,"column":11},"end":{"line":176,"column":11}},{"start":{"line":176,"column":11},"end":{"line":176,"column":11}}]}}},"src/models/DAO.sol":{"l":{"32":856,"33":856,"35":856,"36":856,"37":856,"38":856,"41":856,"50":2,"54":652,"64":267,"72":304,"77":304,"78":304,"79":304,"81":304,"82":87,"83":261,"84":261,"88":304,"92":858},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/DAO.sol","s":{"1":856,"2":856,"3":856,"4":856,"5":856,"6":856,"7":856,"8":2,"9":652,"10":267,"11":304,"12":304,"13":304,"14":304,"15":304,"16":87,"17":261,"18":261,"19":304,"20":858},"b":{"1":[856,0],"2":[304,0],"3":[87,217]},"f":{"1":856,"2":2,"3":652,"4":267,"5":304,"6":858},"fnMap":{"1":{"name":"deserialize","line":27,"loc":{"start":{"line":27,"column":2},"end":{"line":42,"column":2}}},"2":{"name":"exists","line":49,"loc":{"start":{"line":49,"column":2},"end":{"line":51,"column":2}}},"3":{"name":"getSummoner","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":55,"column":2}}},"4":{"name":"isSummoner","line":63,"loc":{"start":{"line":63,"column":2},"end":{"line":65,"column":2}}},"5":{"name":"serialize","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":89,"column":2}}},"6":{"name":"_exists","line":91,"loc":{"start":{"line":91,"column":2},"end":{"line":93,"column":2}}}},"statementMap":{"1":{"start":{"line":32,"column":4},"end":{"line":32,"column":22}},"2":{"start":{"line":33,"column":4},"end":{"line":33,"column":32}},"3":{"start":{"line":35,"column":4},"end":{"line":35,"column":903}},"4":{"start":{"line":36,"column":6},"end":{"line":36,"column":66}},"5":{"start":{"line":37,"column":6},"end":{"line":37,"column":90}},"6":{"start":{"line":38,"column":6},"end":{"line":38,"column":72}},"7":{"start":{"line":41,"column":4},"end":{"line":41,"column":17}},"8":{"start":{"line":50,"column":4},"end":{"line":50,"column":25}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":76}},"10":{"start":{"line":64,"column":4},"end":{"line":64,"column":82}},"11":{"start":{"line":72,"column":4},"end":{"line":72,"column":2126}},"12":{"start":{"line":77,"column":4},"end":{"line":77,"column":69}},"13":{"start":{"line":78,"column":4},"end":{"line":78,"column":93}},"14":{"start":{"line":79,"column":4},"end":{"line":79,"column":75}},"15":{"start":{"line":81,"column":4},"end":{"line":81,"column":2514}},"16":{"start":{"line":82,"column":6},"end":{"line":82,"column":2581}},"17":{"start":{"line":83,"column":8},"end":{"line":83,"column":89}},"18":{"start":{"line":84,"column":8},"end":{"line":84,"column":90}},"19":{"start":{"line":88,"column":4},"end":{"line":88,"column":62}},"20":{"start":{"line":92,"column":4},"end":{"line":92,"column":58}}},"branchMap":{"1":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":35,"column":4}},{"start":{"line":35,"column":4},"end":{"line":35,"column":4}}]},"2":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":72,"column":4}},{"start":{"line":72,"column":4},"end":{"line":72,"column":4}}]},"3":{"line":81,"type":"if","locations":[{"start":{"line":81,"column":4},"end":{"line":81,"column":4}},{"start":{"line":81,"column":4},"end":{"line":81,"column":4}}]}}},"src/models/Ecosystem.sol":{"l":{"33":3236,"34":3236,"35":3236,"38":3236,"41":3236,"42":3236,"45":3236,"48":3236,"53":3236,"62":1,"70":147,"72":147,"79":147,"83":147,"84":147,"88":147,"92":147,"97":147,"101":3384},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Ecosystem.sol","s":{"1":3236,"2":3236,"3":3236,"4":3236,"5":3236,"6":3236,"7":3236,"8":3236,"9":3236,"10":1,"11":147,"12":147,"13":147,"14":147,"15":147,"16":147,"17":147,"18":147,"19":3384},"b":{"1":[3236,0],"2":[147,0]},"f":{"1":3236,"2":1,"3":147,"4":3384},"fnMap":{"1":{"name":"deserialize","line":32,"loc":{"start":{"line":32,"column":2},"end":{"line":54,"column":2}}},"2":{"name":"exists","line":61,"loc":{"start":{"line":61,"column":2},"end":{"line":63,"column":2}}},"3":{"name":"serialize","line":69,"loc":{"start":{"line":69,"column":2},"end":{"line":98,"column":2}}},"4":{"name":"_exists","line":100,"loc":{"start":{"line":100,"column":2},"end":{"line":102,"column":2}}}},"statementMap":{"1":{"start":{"line":33,"column":4},"end":{"line":33,"column":1065}},"2":{"start":{"line":34,"column":6},"end":{"line":34,"column":36}},"3":{"start":{"line":35,"column":6},"end":{"line":35,"column":1140}},"4":{"start":{"line":38,"column":6},"end":{"line":38,"column":1268}},"5":{"start":{"line":41,"column":6},"end":{"line":41,"column":49}},"6":{"start":{"line":42,"column":6},"end":{"line":42,"column":1440}},"7":{"start":{"line":45,"column":6},"end":{"line":45,"column":1574}},"8":{"start":{"line":48,"column":6},"end":{"line":48,"column":1710}},"9":{"start":{"line":53,"column":4},"end":{"line":53,"column":17}},"10":{"start":{"line":62,"column":4},"end":{"line":62,"column":31}},"11":{"start":{"line":70,"column":4},"end":{"line":70,"column":50}},"12":{"start":{"line":72,"column":4},"end":{"line":72,"column":2329}},"13":{"start":{"line":79,"column":4},"end":{"line":79,"column":2536}},"14":{"start":{"line":83,"column":4},"end":{"line":83,"column":98}},"15":{"start":{"line":84,"column":4},"end":{"line":84,"column":2764}},"16":{"start":{"line":88,"column":4},"end":{"line":88,"column":2897}},"17":{"start":{"line":92,"column":4},"end":{"line":92,"column":3032}},"18":{"start":{"line":97,"column":4},"end":{"line":97,"column":68}},"19":{"start":{"line":101,"column":4},"end":{"line":101,"column":64}}},"branchMap":{"1":{"line":33,"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":33,"column":4}},{"start":{"line":33,"column":4},"end":{"line":33,"column":4}}]},"2":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":72,"column":4}},{"start":{"line":72,"column":4},"end":{"line":72,"column":4}}]}}},"src/models/EternalModel.sol":{"l":{"30":15392,"37":4206,"44":16832,"51":7846,"58":0,"65":0,"77":7389,"85":1810,"93":996,"101":2465,"109":0,"117":0,"128":0,"135":0,"142":0,"149":0,"156":0,"163":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/EternalModel.sol","s":{"1":15392,"2":4206,"3":16832,"4":7846,"5":0,"6":0,"7":7389,"8":1810,"9":996,"10":2465,"11":0,"12":0},"b":{},"f":{"1":15392,"2":4206,"3":16832,"4":7846,"5":0,"6":0,"7":7389,"8":1810,"9":996,"10":2465,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0},"fnMap":{"1":{"name":"getUint","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":31,"column":2}}},"2":{"name":"getString","line":36,"loc":{"start":{"line":36,"column":2},"end":{"line":38,"column":2}}},"3":{"name":"getAddress","line":43,"loc":{"start":{"line":43,"column":2},"end":{"line":45,"column":2}}},"4":{"name":"getBool","line":50,"loc":{"start":{"line":50,"column":2},"end":{"line":52,"column":2}}},"5":{"name":"getInt","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":59,"column":2}}},"6":{"name":"getBytes","line":64,"loc":{"start":{"line":64,"column":2},"end":{"line":66,"column":2}}},"7":{"name":"setUint","line":76,"loc":{"start":{"line":76,"column":2},"end":{"line":78,"column":2}}},"8":{"name":"setString","line":84,"loc":{"start":{"line":84,"column":2},"end":{"line":86,"column":2}}},"9":{"name":"setAddress","line":92,"loc":{"start":{"line":92,"column":2},"end":{"line":94,"column":2}}},"10":{"name":"setBool","line":100,"loc":{"start":{"line":100,"column":2},"end":{"line":102,"column":2}}},"11":{"name":"setInt","line":108,"loc":{"start":{"line":108,"column":2},"end":{"line":110,"column":2}}},"12":{"name":"setBytes","line":116,"loc":{"start":{"line":116,"column":2},"end":{"line":118,"column":2}}},"13":{"name":"deleteUint","line":127,"loc":{"start":{"line":127,"column":2},"end":{"line":129,"column":2}}},"14":{"name":"deleteString","line":134,"loc":{"start":{"line":134,"column":2},"end":{"line":136,"column":2}}},"15":{"name":"deleteAddress","line":141,"loc":{"start":{"line":141,"column":2},"end":{"line":143,"column":2}}},"16":{"name":"deleteBool","line":148,"loc":{"start":{"line":148,"column":2},"end":{"line":150,"column":2}}},"17":{"name":"deleteInt","line":155,"loc":{"start":{"line":155,"column":2},"end":{"line":157,"column":2}}},"18":{"name":"deleteBytes","line":162,"loc":{"start":{"line":162,"column":2},"end":{"line":164,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":30}},"2":{"start":{"line":37,"column":4},"end":{"line":37,"column":32}},"3":{"start":{"line":44,"column":4},"end":{"line":44,"column":33}},"4":{"start":{"line":51,"column":4},"end":{"line":51,"column":30}},"5":{"start":{"line":58,"column":4},"end":{"line":58,"column":29}},"6":{"start":{"line":65,"column":4},"end":{"line":65,"column":31}},"7":{"start":{"line":77,"column":4},"end":{"line":77,"column":31}},"8":{"start":{"line":85,"column":4},"end":{"line":85,"column":33}},"9":{"start":{"line":93,"column":4},"end":{"line":93,"column":34}},"10":{"start":{"line":101,"column":4},"end":{"line":101,"column":31}},"11":{"start":{"line":109,"column":4},"end":{"line":109,"column":30}},"12":{"start":{"line":117,"column":4},"end":{"line":117,"column":32}}},"branchMap":{}},"src/models/Token.sol":{"l":{"42":1679,"43":1679,"45":1679,"46":1675,"47":1675,"48":1675,"49":1675,"50":1675,"51":1675,"52":1675,"53":1675,"54":1675,"55":1675,"58":1679,"62":46,"66":696,"68":696,"69":696,"77":753,"84":753,"85":753,"86":753,"87":753,"88":753,"89":753,"90":753,"91":753,"93":753,"99":479,"103":1782},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Token.sol","s":{"1":1679,"2":1679,"3":1679,"4":1675,"5":1675,"6":1675,"7":1675,"8":1675,"9":1675,"10":1675,"11":1675,"12":1675,"13":1675,"14":1679,"15":46,"16":696,"17":696,"18":696,"19":753,"20":753,"21":753,"22":753,"23":753,"24":753,"25":753,"26":753,"27":753,"28":753,"29":479,"30":1782},"b":{"1":[1675,4],"2":[696,0],"3":[753,0]},"f":{"1":1679,"2":46,"3":696,"4":753,"5":479,"6":1782},"fnMap":{"1":{"name":"deserialize","line":37,"loc":{"start":{"line":37,"column":2},"end":{"line":59,"column":2}}},"2":{"name":"exists","line":61,"loc":{"start":{"line":61,"column":2},"end":{"line":63,"column":2}}},"3":{"name":"incrementCounter","line":65,"loc":{"start":{"line":65,"column":2},"end":{"line":70,"column":2}}},"4":{"name":"serialize","line":76,"loc":{"start":{"line":76,"column":2},"end":{"line":94,"column":2}}},"5":{"name":"updateNumberOfTokenHolders","line":96,"loc":{"start":{"line":96,"column":2},"end":{"line":100,"column":2}}},"6":{"name":"_exists","line":102,"loc":{"start":{"line":102,"column":2},"end":{"line":104,"column":2}}}},"statementMap":{"1":{"start":{"line":42,"column":4},"end":{"line":42,"column":22}},"2":{"start":{"line":43,"column":4},"end":{"line":43,"column":32}},"3":{"start":{"line":45,"column":4},"end":{"line":45,"column":1269}},"4":{"start":{"line":46,"column":6},"end":{"line":46,"column":70}},"5":{"start":{"line":47,"column":6},"end":{"line":47,"column":64}},"6":{"start":{"line":48,"column":6},"end":{"line":48,"column":76}},"7":{"start":{"line":49,"column":6},"end":{"line":49,"column":58}},"8":{"start":{"line":50,"column":6},"end":{"line":50,"column":68}},"9":{"start":{"line":51,"column":6},"end":{"line":51,"column":58}},"10":{"start":{"line":52,"column":6},"end":{"line":52,"column":90}},"11":{"start":{"line":53,"column":6},"end":{"line":53,"column":66}},"12":{"start":{"line":54,"column":6},"end":{"line":54,"column":96}},"13":{"start":{"line":55,"column":6},"end":{"line":55,"column":70}},"14":{"start":{"line":58,"column":4},"end":{"line":58,"column":17}},"15":{"start":{"line":62,"column":4},"end":{"line":62,"column":25}},"16":{"start":{"line":66,"column":4},"end":{"line":66,"column":65}},"17":{"start":{"line":68,"column":4},"end":{"line":68,"column":76}},"18":{"start":{"line":69,"column":4},"end":{"line":69,"column":83}},"19":{"start":{"line":77,"column":4},"end":{"line":77,"column":2629}},"20":{"start":{"line":84,"column":4},"end":{"line":84,"column":69}},"21":{"start":{"line":85,"column":4},"end":{"line":85,"column":73}},"22":{"start":{"line":86,"column":4},"end":{"line":86,"column":67}},"23":{"start":{"line":87,"column":4},"end":{"line":87,"column":79}},"24":{"start":{"line":88,"column":4},"end":{"line":88,"column":61}},"25":{"start":{"line":89,"column":4},"end":{"line":89,"column":71}},"26":{"start":{"line":90,"column":4},"end":{"line":90,"column":61}},"27":{"start":{"line":91,"column":4},"end":{"line":91,"column":93}},"28":{"start":{"line":93,"column":4},"end":{"line":93,"column":62}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":92}},"30":{"start":{"line":103,"column":4},"end":{"line":103,"column":58}}},"branchMap":{"1":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":45,"column":4}},{"start":{"line":45,"column":4},"end":{"line":45,"column":4}}]},"2":{"line":66,"type":"if","locations":[{"start":{"line":66,"column":4},"end":{"line":66,"column":4}},{"start":{"line":66,"column":4},"end":{"line":66,"column":4}}]},"3":{"line":77,"type":"if","locations":[{"start":{"line":77,"column":4},"end":{"line":77,"column":4}},{"start":{"line":77,"column":4},"end":{"line":77,"column":4}}]}}},"src/models/TokenHolder.sol":{"l":{"29":699,"30":699,"31":699,"33":699,"34":220,"35":220,"38":699,"46":0,"54":696,"56":696,"57":696,"59":696,"67":699},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/TokenHolder.sol","s":{"1":699,"2":699,"3":699,"4":699,"5":220,"6":220,"7":699,"8":0,"9":696,"10":696,"11":696,"12":696,"13":699},"b":{"1":[220,479],"2":[696,0]},"f":{"1":699,"2":0,"3":696,"4":699},"fnMap":{"1":{"name":"deserialize","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":39,"column":2}}},"2":{"name":"exists","line":41,"loc":{"start":{"line":41,"column":2},"end":{"line":47,"column":2}}},"3":{"name":"serialize","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":60,"column":2}}},"4":{"name":"_exists","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":68,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":28}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":32}},"3":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":1003}},"5":{"start":{"line":34,"column":6},"end":{"line":34,"column":98}},"6":{"start":{"line":35,"column":6},"end":{"line":35,"column":96}},"7":{"start":{"line":38,"column":4},"end":{"line":38,"column":17}},"8":{"start":{"line":46,"column":4},"end":{"line":46,"column":48}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":71}},"10":{"start":{"line":56,"column":4},"end":{"line":56,"column":95}},"11":{"start":{"line":57,"column":4},"end":{"line":57,"column":93}},"12":{"start":{"line":59,"column":4},"end":{"line":59,"column":84}},"13":{"start":{"line":67,"column":4},"end":{"line":67,"column":74}}},"branchMap":{"1":{"line":33,"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":33,"column":4}},{"start":{"line":33,"column":4},"end":{"line":33,"column":4}}]},"2":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":54,"column":4}},{"start":{"line":54,"column":4},"end":{"line":54,"column":4}}]}}},"src/services/Configurator.sol":{"l":{"30":87,"31":87,"32":87,"33":87,"34":87,"35":87,"36":87,"37":87,"38":87,"50":87,"52":87,"55":87,"56":87,"57":87,"58":87,"61":87,"63":87,"64":87,"89":57,"90":57,"91":57,"92":57,"93":57,"94":57,"95":57,"96":57,"97":57,"98":57,"99":57,"101":57,"102":57,"103":57,"105":57},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/services/Configurator.sol","s":{"1":87,"2":87,"3":87,"4":87,"5":87,"6":87,"7":87,"8":87,"9":87,"10":87,"11":87,"12":87,"13":87,"14":87,"15":87,"16":87,"17":87,"18":87,"19":57,"20":57,"21":57,"22":57,"23":57,"24":57,"25":57,"26":57,"27":57,"28":57,"29":57,"30":57,"31":57,"32":57,"33":57},"b":{},"f":{"1":87,"2":87,"3":57},"fnMap":{"1":{"name":"buildDAO","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":39,"column":2}}},"2":{"name":"buildEcosystem","line":46,"loc":{"start":{"line":46,"column":2},"end":{"line":65,"column":2}}},"3":{"name":"buildToken","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":106,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":52}},"2":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":29}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":19}},"5":{"start":{"line":34,"column":4},"end":{"line":34,"column":45}},"6":{"start":{"line":35,"column":4},"end":{"line":35,"column":23}},"7":{"start":{"line":36,"column":4},"end":{"line":36,"column":29}},"8":{"start":{"line":37,"column":4},"end":{"line":37,"column":28}},"9":{"start":{"line":38,"column":4},"end":{"line":38,"column":14}},"10":{"start":{"line":50,"column":4},"end":{"line":50,"column":74}},"11":{"start":{"line":52,"column":4},"end":{"line":52,"column":36}},"12":{"start":{"line":55,"column":4},"end":{"line":55,"column":55}},"13":{"start":{"line":56,"column":4},"end":{"line":56,"column":67}},"14":{"start":{"line":57,"column":4},"end":{"line":57,"column":71}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":59}},"16":{"start":{"line":61,"column":4},"end":{"line":61,"column":63}},"17":{"start":{"line":63,"column":4},"end":{"line":63,"column":40}},"18":{"start":{"line":64,"column":4},"end":{"line":64,"column":20}},"19":{"start":{"line":89,"column":4},"end":{"line":89,"column":60}},"20":{"start":{"line":90,"column":4},"end":{"line":90,"column":21}},"21":{"start":{"line":91,"column":4},"end":{"line":91,"column":31}},"22":{"start":{"line":92,"column":4},"end":{"line":92,"column":33}},"23":{"start":{"line":93,"column":4},"end":{"line":93,"column":15}},"24":{"start":{"line":94,"column":4},"end":{"line":94,"column":19}},"25":{"start":{"line":95,"column":4},"end":{"line":95,"column":32}},"26":{"start":{"line":96,"column":4},"end":{"line":96,"column":47}},"27":{"start":{"line":97,"column":4},"end":{"line":97,"column":21}},"28":{"start":{"line":98,"column":4},"end":{"line":98,"column":25}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":97}},"30":{"start":{"line":101,"column":4},"end":{"line":101,"column":49}},"31":{"start":{"line":102,"column":4},"end":{"line":102,"column":68}},"32":{"start":{"line":103,"column":4},"end":{"line":103,"column":32}},"33":{"start":{"line":105,"column":4},"end":{"line":105,"column":16}}},"branchMap":{}},"src/tokens/ElasticGovernanceToken.sol":{"l":{"28":114,"29":114,"33":0,"34":0,"38":697,"39":697,"43":57,"44":57,"45":57,"46":57,"59":0,"78":0,"79":0,"88":2,"89":2,"90":2,"92":2,"101":1,"102":1,"106":0,"107":0,"108":0,"109":0,"111":0,"112":0,"114":0,"130":0,"131":0,"146":0,"147":0,"155":0,"165":0,"167":0,"169":0,"170":0,"180":0,"181":0,"191":0,"193":0,"208":697,"209":696,"217":0,"221":0,"225":57,"229":57,"238":0,"251":0,"252":0,"256":0,"257":0,"269":0,"270":0,"288":0,"290":0,"292":0,"293":0,"295":0,"298":0,"308":0,"309":0,"311":0,"313":0,"317":0,"318":0,"319":0,"323":0,"324":0,"325":0,"326":0,"327":0,"329":0,"331":0,"332":0,"334":0,"335":0,"336":0,"340":0,"341":0,"342":0,"346":697,"347":697,"348":697,"349":697,"350":696,"352":696,"354":696,"356":696,"357":696,"359":696,"360":696,"361":696,"363":696,"371":0,"372":0,"373":0,"375":0,"376":0,"377":0,"378":0,"380":0,"381":0,"383":0,"384":0,"386":0,"387":0,"388":0,"389":0,"390":0,"392":0,"401":696,"403":696,"404":696,"406":696,"407":696,"409":0,"412":696,"414":696,"423":696,"424":479,"427":696,"428":0,"435":2095,"439":700,"440":700,"449":2,"450":2},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/tokens/ElasticGovernanceToken.sol","s":{"1":114,"2":0,"3":697,"4":57,"5":57,"6":57,"7":57,"8":0,"9":0,"10":0,"11":2,"12":2,"13":2,"14":2,"15":1,"16":1,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":697,"38":696,"39":0,"40":0,"41":57,"42":57,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":697,"78":697,"79":697,"80":697,"81":696,"82":696,"83":696,"84":696,"85":696,"86":696,"87":696,"88":696,"89":696,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":0,"97":0,"98":0,"99":0,"100":0,"101":0,"102":0,"103":0,"104":0,"105":0,"106":0,"107":696,"108":696,"109":696,"110":696,"111":696,"112":0,"113":696,"114":696,"115":696,"116":479,"117":696,"118":0,"119":2095,"120":700,"121":700,"122":2,"123":2},"b":{"1":[114,0],"2":[0,0],"3":[697,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[0,0],"9":[0,0],"10":[696,0],"11":[479,217],"12":[0,696]},"f":{"1":114,"2":0,"3":697,"4":57,"5":0,"6":0,"7":2,"8":1,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":697,"17":0,"18":0,"19":57,"20":57,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":697,"31":0,"32":696,"33":696,"34":2095,"35":700,"36":2},"fnMap":{"1":{"name":"onlyDAO","line":27,"loc":{"start":{"line":27,"column":2},"end":{"line":30,"column":2}}},"2":{"name":"onlyDAOorBurner","line":32,"loc":{"start":{"line":32,"column":2},"end":{"line":35,"column":2}}},"3":{"name":"onlyDAOorMinter","line":37,"loc":{"start":{"line":37,"column":2},"end":{"line":40,"column":2}}},"4":{"name":"constructor","line":42,"loc":{"start":{"line":42,"column":2},"end":{"line":47,"column":2}}},"5":{"name":"allowance","line":58,"loc":{"start":{"line":58,"column":2},"end":{"line":60,"column":2}}},"6":{"name":"approve","line":77,"loc":{"start":{"line":77,"column":2},"end":{"line":80,"column":2}}},"7":{"name":"balanceOf","line":87,"loc":{"start":{"line":87,"column":2},"end":{"line":93,"column":2}}},"8":{"name":"balanceOfInShares","line":100,"loc":{"start":{"line":100,"column":2},"end":{"line":103,"column":2}}},"9":{"name":"balanceOfVoting","line":105,"loc":{"start":{"line":105,"column":2},"end":{"line":116,"column":2}}},"10":{"name":"burn","line":127,"loc":{"start":{"line":124,"column":2},"end":{"line":132,"column":2}}},"11":{"name":"burnShares","line":143,"loc":{"start":{"line":140,"column":2},"end":{"line":148,"column":2}}},"12":{"name":"decimals","line":154,"loc":{"start":{"line":154,"column":2},"end":{"line":156,"column":2}}},"13":{"name":"decreaseAllowance","line":164,"loc":{"start":{"line":164,"column":2},"end":{"line":171,"column":2}}},"14":{"name":"increaseAllowance","line":179,"loc":{"start":{"line":179,"column":2},"end":{"line":182,"column":2}}},"15":{"name":"mint","line":190,"loc":{"start":{"line":190,"column":2},"end":{"line":194,"column":2}}},"16":{"name":"mintShares","line":205,"loc":{"start":{"line":202,"column":2},"end":{"line":210,"column":2}}},"17":{"name":"name","line":216,"loc":{"start":{"line":216,"column":2},"end":{"line":218,"column":2}}},"18":{"name":"numberOfTokenHolders","line":220,"loc":{"start":{"line":220,"column":2},"end":{"line":222,"column":2}}},"19":{"name":"setBurner","line":224,"loc":{"start":{"line":224,"column":2},"end":{"line":226,"column":2}}},"20":{"name":"setMinter","line":228,"loc":{"start":{"line":228,"column":2},"end":{"line":230,"column":2}}},"21":{"name":"symbol","line":237,"loc":{"start":{"line":237,"column":2},"end":{"line":239,"column":2}}},"22":{"name":"totalSupply","line":250,"loc":{"start":{"line":250,"column":2},"end":{"line":253,"column":2}}},"23":{"name":"totalSupplyInShares","line":255,"loc":{"start":{"line":255,"column":2},"end":{"line":258,"column":2}}},"24":{"name":"transfer","line":268,"loc":{"start":{"line":268,"column":2},"end":{"line":271,"column":2}}},"25":{"name":"transferFrom","line":283,"loc":{"start":{"line":283,"column":2},"end":{"line":299,"column":2}}},"26":{"name":"_approve","line":303,"loc":{"start":{"line":303,"column":2},"end":{"line":314,"column":2}}},"27":{"name":"_burn","line":316,"loc":{"start":{"line":316,"column":2},"end":{"line":320,"column":2}}},"28":{"name":"_burnShares","line":322,"loc":{"start":{"line":322,"column":2},"end":{"line":337,"column":2}}},"29":{"name":"_mint","line":339,"loc":{"start":{"line":339,"column":2},"end":{"line":343,"column":2}}},"30":{"name":"_mintShares","line":345,"loc":{"start":{"line":345,"column":2},"end":{"line":364,"column":2}}},"31":{"name":"_transfer","line":366,"loc":{"start":{"line":366,"column":2},"end":{"line":393,"column":2}}},"32":{"name":"_updateBalance","line":395,"loc":{"start":{"line":395,"column":2},"end":{"line":415,"column":2}}},"33":{"name":"_updateNumberOfTokenHolders","line":417,"loc":{"start":{"line":417,"column":2},"end":{"line":430,"column":2}}},"34":{"name":"_getEcosystem","line":434,"loc":{"start":{"line":434,"column":2},"end":{"line":436,"column":2}}},"35":{"name":"_getTokenHolder","line":438,"loc":{"start":{"line":438,"column":2},"end":{"line":446,"column":2}}},"36":{"name":"_getToken","line":448,"loc":{"start":{"line":448,"column":2},"end":{"line":451,"column":2}}}},"statementMap":{"1":{"start":{"line":28,"column":4},"end":{"line":28,"column":90}},"2":{"start":{"line":33,"column":4},"end":{"line":33,"column":90}},"3":{"start":{"line":38,"column":4},"end":{"line":38,"column":90}},"4":{"start":{"line":43,"column":4},"end":{"line":43,"column":23}},"5":{"start":{"line":44,"column":4},"end":{"line":44,"column":27}},"6":{"start":{"line":45,"column":4},"end":{"line":45,"column":49}},"7":{"start":{"line":46,"column":4},"end":{"line":46,"column":23}},"8":{"start":{"line":59,"column":4},"end":{"line":59,"column":40}},"9":{"start":{"line":78,"column":4},"end":{"line":78,"column":42}},"10":{"start":{"line":79,"column":4},"end":{"line":79,"column":15}},"11":{"start":{"line":88,"column":4},"end":{"line":88,"column":45}},"12":{"start":{"line":89,"column":4},"end":{"line":89,"column":71}},"13":{"start":{"line":90,"column":4},"end":{"line":90,"column":67}},"14":{"start":{"line":92,"column":4},"end":{"line":92,"column":12}},"15":{"start":{"line":101,"column":4},"end":{"line":101,"column":71}},"16":{"start":{"line":102,"column":4},"end":{"line":102,"column":29}},"17":{"start":{"line":106,"column":4},"end":{"line":106,"column":45}},"18":{"start":{"line":107,"column":4},"end":{"line":107,"column":71}},"19":{"start":{"line":108,"column":4},"end":{"line":108,"column":59}},"20":{"start":{"line":109,"column":4},"end":{"line":109,"column":58}},"21":{"start":{"line":111,"column":4},"end":{"line":111,"column":3813}},"22":{"start":{"line":112,"column":6},"end":{"line":112,"column":61}},"23":{"start":{"line":114,"column":6},"end":{"line":114,"column":64}},"24":{"start":{"line":130,"column":4},"end":{"line":130,"column":27}},"25":{"start":{"line":131,"column":4},"end":{"line":131,"column":15}},"26":{"start":{"line":146,"column":4},"end":{"line":146,"column":33}},"27":{"start":{"line":147,"column":4},"end":{"line":147,"column":15}},"28":{"start":{"line":155,"column":4},"end":{"line":155,"column":13}},"29":{"start":{"line":165,"column":4},"end":{"line":165,"column":92}},"30":{"start":{"line":167,"column":4},"end":{"line":167,"column":74}},"31":{"start":{"line":169,"column":4},"end":{"line":169,"column":47}},"32":{"start":{"line":170,"column":4},"end":{"line":170,"column":15}},"33":{"start":{"line":180,"column":4},"end":{"line":180,"column":95}},"34":{"start":{"line":181,"column":4},"end":{"line":181,"column":15}},"35":{"start":{"line":191,"column":4},"end":{"line":191,"column":27}},"36":{"start":{"line":193,"column":4},"end":{"line":193,"column":15}},"37":{"start":{"line":208,"column":4},"end":{"line":208,"column":33}},"38":{"start":{"line":209,"column":4},"end":{"line":209,"column":15}},"39":{"start":{"line":217,"column":4},"end":{"line":217,"column":27}},"40":{"start":{"line":221,"column":4},"end":{"line":221,"column":43}},"41":{"start":{"line":225,"column":4},"end":{"line":225,"column":19}},"42":{"start":{"line":229,"column":4},"end":{"line":229,"column":19}},"43":{"start":{"line":238,"column":4},"end":{"line":238,"column":29}},"44":{"start":{"line":251,"column":4},"end":{"line":251,"column":45}},"45":{"start":{"line":252,"column":4},"end":{"line":252,"column":56}},"46":{"start":{"line":256,"column":4},"end":{"line":256,"column":45}},"47":{"start":{"line":257,"column":4},"end":{"line":257,"column":23}},"48":{"start":{"line":269,"column":4},"end":{"line":269,"column":38}},"49":{"start":{"line":270,"column":4},"end":{"line":270,"column":15}},"50":{"start":{"line":288,"column":4},"end":{"line":288,"column":97}},"51":{"start":{"line":290,"column":4},"end":{"line":290,"column":33}},"52":{"start":{"line":292,"column":4},"end":{"line":292,"column":9064}},"53":{"start":{"line":293,"column":6},"end":{"line":293,"column":91}},"54":{"start":{"line":295,"column":6},"end":{"line":295,"column":68}},"55":{"start":{"line":298,"column":4},"end":{"line":298,"column":15}},"56":{"start":{"line":308,"column":4},"end":{"line":308,"column":72}},"57":{"start":{"line":309,"column":4},"end":{"line":309,"column":72}},"58":{"start":{"line":311,"column":4},"end":{"line":311,"column":42}},"59":{"start":{"line":313,"column":4},"end":{"line":313,"column":44}},"60":{"start":{"line":317,"column":4},"end":{"line":317,"column":45}},"61":{"start":{"line":318,"column":4},"end":{"line":318,"column":76}},"62":{"start":{"line":319,"column":4},"end":{"line":319,"column":37}},"63":{"start":{"line":323,"column":4},"end":{"line":323,"column":57}},"64":{"start":{"line":324,"column":4},"end":{"line":324,"column":59}},"65":{"start":{"line":325,"column":4},"end":{"line":325,"column":84}},"66":{"start":{"line":326,"column":4},"end":{"line":326,"column":71}},"67":{"start":{"line":327,"column":4},"end":{"line":327,"column":52}},"68":{"start":{"line":329,"column":4},"end":{"line":329,"column":72}},"69":{"start":{"line":331,"column":4},"end":{"line":331,"column":58}},"70":{"start":{"line":332,"column":4},"end":{"line":332,"column":32}},"71":{"start":{"line":334,"column":4},"end":{"line":334,"column":83}},"72":{"start":{"line":335,"column":4},"end":{"line":335,"column":44}},"73":{"start":{"line":336,"column":4},"end":{"line":336,"column":84}},"74":{"start":{"line":340,"column":4},"end":{"line":340,"column":45}},"75":{"start":{"line":341,"column":4},"end":{"line":341,"column":76}},"76":{"start":{"line":342,"column":4},"end":{"line":342,"column":37}},"77":{"start":{"line":346,"column":4},"end":{"line":346,"column":57}},"78":{"start":{"line":347,"column":4},"end":{"line":347,"column":59}},"79":{"start":{"line":348,"column":4},"end":{"line":348,"column":84}},"80":{"start":{"line":349,"column":4},"end":{"line":349,"column":71}},"81":{"start":{"line":350,"column":4},"end":{"line":350,"column":52}},"82":{"start":{"line":352,"column":4},"end":{"line":352,"column":66}},"83":{"start":{"line":354,"column":4},"end":{"line":354,"column":71}},"84":{"start":{"line":356,"column":4},"end":{"line":356,"column":58}},"85":{"start":{"line":357,"column":4},"end":{"line":357,"column":32}},"86":{"start":{"line":359,"column":4},"end":{"line":359,"column":83}},"87":{"start":{"line":360,"column":4},"end":{"line":360,"column":44}},"88":{"start":{"line":361,"column":4},"end":{"line":361,"column":84}},"89":{"start":{"line":363,"column":4},"end":{"line":363,"column":47}},"90":{"start":{"line":371,"column":4},"end":{"line":371,"column":57}},"91":{"start":{"line":372,"column":4},"end":{"line":372,"column":59}},"92":{"start":{"line":373,"column":4},"end":{"line":373,"column":84}},"93":{"start":{"line":375,"column":4},"end":{"line":375,"column":72}},"94":{"start":{"line":376,"column":4},"end":{"line":376,"column":68}},"95":{"start":{"line":377,"column":4},"end":{"line":377,"column":60}},"96":{"start":{"line":378,"column":4},"end":{"line":378,"column":56}},"97":{"start":{"line":380,"column":4},"end":{"line":380,"column":76}},"98":{"start":{"line":381,"column":4},"end":{"line":381,"column":65}},"99":{"start":{"line":383,"column":4},"end":{"line":383,"column":79}},"100":{"start":{"line":384,"column":4},"end":{"line":384,"column":74}},"101":{"start":{"line":386,"column":4},"end":{"line":386,"column":83}},"102":{"start":{"line":387,"column":4},"end":{"line":387,"column":48}},"103":{"start":{"line":388,"column":4},"end":{"line":388,"column":46}},"104":{"start":{"line":389,"column":4},"end":{"line":389,"column":92}},"105":{"start":{"line":390,"column":4},"end":{"line":390,"column":88}},"106":{"start":{"line":392,"column":4},"end":{"line":392,"column":37}},"107":{"start":{"line":401,"column":4},"end":{"line":401,"column":57}},"108":{"start":{"line":403,"column":4},"end":{"line":403,"column":51}},"109":{"start":{"line":404,"column":4},"end":{"line":404,"column":63}},"110":{"start":{"line":406,"column":4},"end":{"line":406,"column":13569}},"111":{"start":{"line":407,"column":6},"end":{"line":407,"column":74}},"112":{"start":{"line":409,"column":6},"end":{"line":409,"column":74}},"113":{"start":{"line":412,"column":4},"end":{"line":412,"column":62}},"114":{"start":{"line":414,"column":4},"end":{"line":414,"column":23}},"115":{"start":{"line":423,"column":4},"end":{"line":423,"column":14049}},"116":{"start":{"line":424,"column":6},"end":{"line":424,"column":96}},"117":{"start":{"line":427,"column":4},"end":{"line":427,"column":14220}},"118":{"start":{"line":428,"column":6},"end":{"line":428,"column":96}},"119":{"start":{"line":435,"column":4},"end":{"line":435,"column":67}},"120":{"start":{"line":439,"column":4},"end":{"line":439,"column":57}},"121":{"start":{"line":440,"column":4},"end":{"line":440,"column":14723}},"122":{"start":{"line":449,"column":4},"end":{"line":449,"column":57}},"123":{"start":{"line":450,"column":4},"end":{"line":450,"column":83}}},"branchMap":{"1":{"line":28,"type":"if","locations":[{"start":{"line":28,"column":4},"end":{"line":28,"column":4}},{"start":{"line":28,"column":4},"end":{"line":28,"column":4}}]},"2":{"line":33,"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":33,"column":4}},{"start":{"line":33,"column":4},"end":{"line":33,"column":4}}]},"3":{"line":38,"type":"if","locations":[{"start":{"line":38,"column":4},"end":{"line":38,"column":4}},{"start":{"line":38,"column":4},"end":{"line":38,"column":4}}]},"4":{"line":111,"type":"if","locations":[{"start":{"line":111,"column":4},"end":{"line":111,"column":4}},{"start":{"line":111,"column":4},"end":{"line":111,"column":4}}]},"5":{"line":167,"type":"if","locations":[{"start":{"line":167,"column":4},"end":{"line":167,"column":4}},{"start":{"line":167,"column":4},"end":{"line":167,"column":4}}]},"6":{"line":288,"type":"if","locations":[{"start":{"line":288,"column":4},"end":{"line":288,"column":4}},{"start":{"line":288,"column":4},"end":{"line":288,"column":4}}]},"7":{"line":292,"type":"if","locations":[{"start":{"line":292,"column":4},"end":{"line":292,"column":4}},{"start":{"line":292,"column":4},"end":{"line":292,"column":4}}]},"8":{"line":308,"type":"if","locations":[{"start":{"line":308,"column":4},"end":{"line":308,"column":4}},{"start":{"line":308,"column":4},"end":{"line":308,"column":4}}]},"9":{"line":309,"type":"if","locations":[{"start":{"line":309,"column":4},"end":{"line":309,"column":4}},{"start":{"line":309,"column":4},"end":{"line":309,"column":4}}]},"10":{"line":406,"type":"if","locations":[{"start":{"line":406,"column":4},"end":{"line":406,"column":4}},{"start":{"line":406,"column":4},"end":{"line":406,"column":4}}]},"11":{"line":423,"type":"if","locations":[{"start":{"line":423,"column":4},"end":{"line":423,"column":4}},{"start":{"line":423,"column":4},"end":{"line":423,"column":4}}]},"12":{"line":427,"type":"if","locations":[{"start":{"line":427,"column":4},"end":{"line":427,"column":4}},{"start":{"line":427,"column":4},"end":{"line":427,"column":4}}]}}}} \ No newline at end of file +{"src/core/ElasticDAO.sol":{"l":{"24":30,"25":30,"26":30,"29":451,"30":451,"32":451,"33":450,"36":1234,"37":1234,"38":1233,"41":17,"42":15,"45":443,"46":442,"49":790,"50":790,"51":790,"52":790,"54":790,"55":788,"58":16,"59":16,"69":412,"70":412,"71":412,"72":412,"73":412,"74":412,"76":412,"77":412,"78":412,"83":14,"84":14,"85":14,"88":14,"89":14,"91":14,"102":442,"103":442,"105":442,"116":341,"117":341,"118":341,"120":341,"124":16,"126":16,"131":16,"132":16,"141":16,"151":16,"154":15,"155":15,"158":15,"159":15,"160":15,"161":15,"164":15,"168":12,"169":12,"170":12,"171":12,"175":3,"187":450,"189":450,"190":450,"191":450,"195":337,"197":336,"198":336,"199":336,"200":336,"202":336,"204":336,"205":1008,"207":336,"208":336,"214":1,"218":2,"224":1265,"225":1265,"229":4244,"233":492,"234":492},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAO.sol","s":{"1":30,"2":30,"3":451,"4":451,"5":451,"6":1234,"7":1234,"8":17,"9":443,"10":790,"11":790,"12":790,"13":790,"14":790,"15":16,"16":412,"17":412,"18":412,"19":412,"20":412,"21":412,"22":412,"23":412,"24":412,"25":14,"26":14,"27":14,"28":14,"29":14,"30":14,"31":442,"32":442,"33":442,"34":341,"35":341,"36":341,"37":341,"38":16,"39":16,"40":16,"41":16,"42":16,"43":16,"44":15,"45":15,"46":15,"47":15,"48":15,"49":15,"50":15,"51":12,"52":12,"53":12,"54":12,"55":3,"56":450,"57":450,"58":450,"59":450,"60":337,"61":336,"62":336,"63":336,"64":336,"65":336,"66":336,"67":1008,"68":336,"69":336,"70":1,"71":2,"72":1265,"73":1265,"74":4244,"75":492,"76":492},"b":{"1":[30,0],"2":[450,1],"3":[1233,1],"4":[15,2],"5":[442,1],"6":[788,2],"7":[16,0],"8":[442,0],"9":[16,0],"10":[15,1],"11":[336,1]},"f":{"1":30,"2":451,"3":1234,"4":17,"5":443,"6":790,"7":16,"8":412,"9":14,"10":442,"11":16,"12":12,"13":3,"14":450,"15":337,"16":1,"17":2,"18":1265,"19":4244,"20":492,"21":0},"fnMap":{"1":{"name":"onlyAfterSummoning","line":23,"loc":{"start":{"line":23,"column":2},"end":{"line":27,"column":2}}},"2":{"name":"onlyAfterTokenInitialized","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":34,"column":2}}},"3":{"name":"onlyBeforeSummoning","line":35,"loc":{"start":{"line":35,"column":2},"end":{"line":39,"column":2}}},"4":{"name":"onlyController","line":40,"loc":{"start":{"line":40,"column":2},"end":{"line":43,"column":2}}},"5":{"name":"onlyDeployer","line":44,"loc":{"start":{"line":44,"column":2},"end":{"line":47,"column":2}}},"6":{"name":"onlySummoners","line":48,"loc":{"start":{"line":48,"column":2},"end":{"line":56,"column":2}}},"7":{"name":"onlyWhenOpen","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":60,"column":2}}},"8":{"name":"constructor","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":79,"column":2}}},"9":{"name":"exit","line":81,"loc":{"start":{"line":81,"column":2},"end":{"line":92,"column":2}}},"10":{"name":"initializeToken","line":101,"loc":{"start":{"line":94,"column":2},"end":{"line":121,"column":2}}},"11":{"name":"join","line":123,"loc":{"start":{"line":123,"column":2},"end":{"line":165,"column":2}}},"12":{"name":"setController","line":167,"loc":{"start":{"line":167,"column":2},"end":{"line":172,"column":2}}},"13":{"name":"setMaxVotingLambda","line":174,"loc":{"start":{"line":174,"column":2},"end":{"line":176,"column":2}}},"14":{"name":"seedSummoning","line":185,"loc":{"start":{"line":180,"column":2},"end":{"line":192,"column":2}}},"15":{"name":"summon","line":194,"loc":{"start":{"line":194,"column":2},"end":{"line":209,"column":2}}},"16":{"name":"getDAO","line":213,"loc":{"start":{"line":213,"column":2},"end":{"line":215,"column":2}}},"17":{"name":"getEcosystem","line":217,"loc":{"start":{"line":217,"column":2},"end":{"line":219,"column":2}}},"18":{"name":"_getDAO","line":223,"loc":{"start":{"line":223,"column":2},"end":{"line":226,"column":2}}},"19":{"name":"_getEcosystem","line":228,"loc":{"start":{"line":228,"column":2},"end":{"line":230,"column":2}}},"20":{"name":"_getToken","line":232,"loc":{"start":{"line":232,"column":2},"end":{"line":236,"column":2}}},"21":{"name":null,"line":240,"loc":{"start":{"line":240,"column":2},"end":{"line":240,"column":31}}}},"statementMap":{"1":{"start":{"line":24,"column":4},"end":{"line":24,"column":39}},"2":{"start":{"line":25,"column":4},"end":{"line":25,"column":60}},"3":{"start":{"line":29,"column":4},"end":{"line":29,"column":57}},"4":{"start":{"line":30,"column":4},"end":{"line":30,"column":911}},"5":{"start":{"line":32,"column":4},"end":{"line":32,"column":77}},"6":{"start":{"line":36,"column":4},"end":{"line":36,"column":39}},"7":{"start":{"line":37,"column":4},"end":{"line":37,"column":73}},"8":{"start":{"line":41,"column":4},"end":{"line":41,"column":67}},"9":{"start":{"line":45,"column":4},"end":{"line":45,"column":63}},"10":{"start":{"line":49,"column":4},"end":{"line":49,"column":57}},"11":{"start":{"line":50,"column":4},"end":{"line":50,"column":52}},"12":{"start":{"line":51,"column":4},"end":{"line":51,"column":79}},"13":{"start":{"line":52,"column":4},"end":{"line":52,"column":64}},"14":{"start":{"line":54,"column":4},"end":{"line":54,"column":55}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":71}},"16":{"start":{"line":69,"column":4},"end":{"line":69,"column":49}},"17":{"start":{"line":70,"column":4},"end":{"line":70,"column":27}},"18":{"start":{"line":71,"column":4},"end":{"line":71,"column":24}},"19":{"start":{"line":72,"column":4},"end":{"line":72,"column":98}},"20":{"start":{"line":73,"column":4},"end":{"line":73,"column":40}},"21":{"start":{"line":74,"column":4},"end":{"line":74,"column":25}},"22":{"start":{"line":76,"column":4},"end":{"line":76,"column":74}},"23":{"start":{"line":77,"column":4},"end":{"line":77,"column":79}},"24":{"start":{"line":78,"column":4},"end":{"line":78,"column":74}},"25":{"start":{"line":83,"column":4},"end":{"line":83,"column":45}},"26":{"start":{"line":84,"column":4},"end":{"line":84,"column":77}},"27":{"start":{"line":85,"column":4},"end":{"line":85,"column":53}},"28":{"start":{"line":88,"column":4},"end":{"line":88,"column":72}},"29":{"start":{"line":89,"column":4},"end":{"line":89,"column":86}},"30":{"start":{"line":91,"column":4},"end":{"line":91,"column":41}},"31":{"start":{"line":102,"column":4},"end":{"line":102,"column":88}},"32":{"start":{"line":103,"column":4},"end":{"line":103,"column":57}},"33":{"start":{"line":105,"column":4},"end":{"line":105,"column":3531}},"34":{"start":{"line":116,"column":4},"end":{"line":116,"column":77}},"35":{"start":{"line":117,"column":4},"end":{"line":117,"column":38}},"36":{"start":{"line":118,"column":4},"end":{"line":118,"column":38}},"37":{"start":{"line":120,"column":4},"end":{"line":120,"column":51}},"38":{"start":{"line":124,"column":4},"end":{"line":124,"column":45}},"39":{"start":{"line":126,"column":4},"end":{"line":126,"column":4115}},"40":{"start":{"line":131,"column":4},"end":{"line":131,"column":77}},"41":{"start":{"line":132,"column":4},"end":{"line":132,"column":4326}},"42":{"start":{"line":141,"column":4},"end":{"line":141,"column":4772}},"43":{"start":{"line":151,"column":4},"end":{"line":151,"column":67}},"44":{"start":{"line":154,"column":4},"end":{"line":154,"column":65}},"45":{"start":{"line":155,"column":4},"end":{"line":155,"column":72}},"46":{"start":{"line":158,"column":4},"end":{"line":158,"column":57}},"47":{"start":{"line":159,"column":4},"end":{"line":159,"column":59}},"48":{"start":{"line":160,"column":4},"end":{"line":160,"column":18}},"49":{"start":{"line":161,"column":4},"end":{"line":161,"column":32}},"50":{"start":{"line":164,"column":4},"end":{"line":164,"column":53}},"51":{"start":{"line":168,"column":4},"end":{"line":168,"column":27}},"52":{"start":{"line":169,"column":4},"end":{"line":169,"column":83}},"53":{"start":{"line":170,"column":4},"end":{"line":170,"column":38}},"54":{"start":{"line":171,"column":4},"end":{"line":171,"column":38}},"55":{"start":{"line":175,"column":4},"end":{"line":175,"column":37}},"56":{"start":{"line":187,"column":4},"end":{"line":187,"column":45}},"57":{"start":{"line":189,"column":4},"end":{"line":189,"column":30}},"58":{"start":{"line":190,"column":4},"end":{"line":190,"column":62}},"59":{"start":{"line":191,"column":4},"end":{"line":191,"column":73}},"60":{"start":{"line":195,"column":4},"end":{"line":195,"column":98}},"61":{"start":{"line":197,"column":4},"end":{"line":197,"column":57}},"62":{"start":{"line":198,"column":4},"end":{"line":198,"column":52}},"63":{"start":{"line":199,"column":4},"end":{"line":199,"column":79}},"64":{"start":{"line":200,"column":4},"end":{"line":200,"column":6715}},"65":{"start":{"line":202,"column":4},"end":{"line":202,"column":77}},"66":{"start":{"line":204,"column":4},"end":{"line":204,"column":6835}},"67":{"start":{"line":205,"column":6},"end":{"line":205,"column":76}},"68":{"start":{"line":207,"column":4},"end":{"line":207,"column":22}},"69":{"start":{"line":208,"column":4},"end":{"line":208,"column":29}},"70":{"start":{"line":214,"column":4},"end":{"line":214,"column":20}},"71":{"start":{"line":218,"column":4},"end":{"line":218,"column":26}},"72":{"start":{"line":224,"column":4},"end":{"line":224,"column":57}},"73":{"start":{"line":225,"column":4},"end":{"line":225,"column":79}},"74":{"start":{"line":229,"column":4},"end":{"line":229,"column":70}},"75":{"start":{"line":233,"column":4},"end":{"line":233,"column":57}},"76":{"start":{"line":234,"column":4},"end":{"line":234,"column":7878}}},"branchMap":{"1":{"line":25,"type":"if","locations":[{"start":{"line":25,"column":4},"end":{"line":25,"column":4}},{"start":{"line":25,"column":4},"end":{"line":25,"column":4}}]},"2":{"line":32,"type":"if","locations":[{"start":{"line":32,"column":4},"end":{"line":32,"column":4}},{"start":{"line":32,"column":4},"end":{"line":32,"column":4}}]},"3":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":37,"column":4}},{"start":{"line":37,"column":4},"end":{"line":37,"column":4}}]},"4":{"line":41,"type":"if","locations":[{"start":{"line":41,"column":4},"end":{"line":41,"column":4}},{"start":{"line":41,"column":4},"end":{"line":41,"column":4}}]},"5":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":45,"column":4}},{"start":{"line":45,"column":4},"end":{"line":45,"column":4}}]},"6":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":54,"column":4}},{"start":{"line":54,"column":4},"end":{"line":54,"column":4}}]},"7":{"line":58,"type":"if","locations":[{"start":{"line":58,"column":4},"end":{"line":58,"column":4}},{"start":{"line":58,"column":4},"end":{"line":58,"column":4}}]},"8":{"line":102,"type":"if","locations":[{"start":{"line":102,"column":4},"end":{"line":102,"column":4}},{"start":{"line":102,"column":4},"end":{"line":102,"column":4}}]},"9":{"line":126,"type":"if","locations":[{"start":{"line":126,"column":4},"end":{"line":126,"column":4}},{"start":{"line":126,"column":4},"end":{"line":126,"column":4}}]},"10":{"line":151,"type":"if","locations":[{"start":{"line":151,"column":4},"end":{"line":151,"column":4}},{"start":{"line":151,"column":4},"end":{"line":151,"column":4}}]},"11":{"line":195,"type":"if","locations":[{"start":{"line":195,"column":4},"end":{"line":195,"column":4}},{"start":{"line":195,"column":4},"end":{"line":195,"column":4}}]}}},"src/core/ElasticDAOFactory.sol":{"l":{"21":7,"22":6,"26":3,"27":3,"46":364,"50":364,"52":281,"53":281,"54":281,"58":6,"59":6,"63":3,"65":3,"66":3},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAOFactory.sol","s":{"1":7,"2":3,"3":3,"4":364,"5":364,"6":281,"7":281,"8":281,"9":6,"10":6,"11":3,"12":3,"13":3},"b":{"1":[6,1]},"f":{"1":7,"2":3,"3":364,"4":6,"5":3,"6":0},"fnMap":{"1":{"name":"onlyDeployer","line":20,"loc":{"start":{"line":20,"column":2},"end":{"line":23,"column":2}}},"2":{"name":"constructor","line":25,"loc":{"start":{"line":25,"column":2},"end":{"line":28,"column":2}}},"3":{"name":"deployDAOAndToken","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":55,"column":2}}},"4":{"name":"updateFeeAddress","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":60,"column":2}}},"5":{"name":"collectFees","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":67,"column":2}}},"6":{"name":null,"line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":71,"column":31}}}},"statementMap":{"1":{"start":{"line":21,"column":4},"end":{"line":21,"column":63}},"2":{"start":{"line":26,"column":4},"end":{"line":26,"column":24}},"3":{"start":{"line":27,"column":4},"end":{"line":27,"column":49}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":1354}},"5":{"start":{"line":50,"column":4},"end":{"line":50,"column":96}},"6":{"start":{"line":52,"column":4},"end":{"line":52,"column":49}},"7":{"start":{"line":53,"column":4},"end":{"line":53,"column":55}},"8":{"start":{"line":54,"column":4},"end":{"line":54,"column":41}},"9":{"start":{"line":58,"column":4},"end":{"line":58,"column":37}},"10":{"start":{"line":59,"column":4},"end":{"line":59,"column":40}},"11":{"start":{"line":63,"column":4},"end":{"line":63,"column":42}},"12":{"start":{"line":65,"column":4},"end":{"line":65,"column":30}},"13":{"start":{"line":66,"column":4},"end":{"line":66,"column":51}}},"branchMap":{"1":{"line":21,"type":"if","locations":[{"start":{"line":21,"column":4},"end":{"line":21,"column":4}},{"start":{"line":21,"column":4},"end":{"line":21,"column":4}}]}}},"src/interfaces/IElasticToken.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IElasticToken.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/interfaces/IERC20.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IERC20.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/libraries/ElasticMath.sol":{"l":{"16":16,"40":16,"42":16,"45":16,"48":16,"51":16,"54":16,"57":16,"60":16,"63":16,"66":16,"74":37,"92":31,"105":16,"122":1529,"132":3220,"142":548},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/ElasticMath.sol","s":{"1":16,"2":16,"3":16,"4":16,"5":16,"6":16,"7":16,"8":16,"9":16,"10":16,"11":16,"12":37,"13":31,"14":16,"15":1529,"16":3220,"17":548},"b":{},"f":{"1":16,"2":16,"3":37,"4":31,"5":16,"6":1529,"7":3220,"8":548},"fnMap":{"1":{"name":"capitalDelta","line":11,"loc":{"start":{"line":11,"column":2},"end":{"line":17,"column":2}}},"2":{"name":"deltaE","line":32,"loc":{"start":{"line":32,"column":2},"end":{"line":67,"column":2}}},"3":{"name":"lambdaFromT","line":69,"loc":{"start":{"line":69,"column":2},"end":{"line":75,"column":2}}},"4":{"name":"mDash","line":87,"loc":{"start":{"line":87,"column":2},"end":{"line":93,"column":2}}},"5":{"name":"revamp","line":104,"loc":{"start":{"line":104,"column":2},"end":{"line":106,"column":2}}},"6":{"name":"t","line":117,"loc":{"start":{"line":117,"column":2},"end":{"line":123,"column":2}}},"7":{"name":"wmul","line":131,"loc":{"start":{"line":131,"column":2},"end":{"line":133,"column":2}}},"8":{"name":"wdiv","line":141,"loc":{"start":{"line":141,"column":2},"end":{"line":143,"column":2}}}},"statementMap":{"1":{"start":{"line":16,"column":4},"end":{"line":16,"column":53}},"2":{"start":{"line":40,"column":4},"end":{"line":40,"column":58}},"3":{"start":{"line":42,"column":4},"end":{"line":42,"column":42}},"4":{"start":{"line":45,"column":4},"end":{"line":45,"column":34}},"5":{"start":{"line":48,"column":4},"end":{"line":48,"column":31}},"6":{"start":{"line":51,"column":4},"end":{"line":51,"column":44}},"7":{"start":{"line":54,"column":4},"end":{"line":54,"column":26}},"8":{"start":{"line":57,"column":4},"end":{"line":57,"column":35}},"9":{"start":{"line":60,"column":4},"end":{"line":60,"column":34}},"10":{"start":{"line":63,"column":4},"end":{"line":63,"column":27}},"11":{"start":{"line":66,"column":4},"end":{"line":66,"column":22}},"12":{"start":{"line":74,"column":4},"end":{"line":74,"column":30}},"13":{"start":{"line":92,"column":4},"end":{"line":92,"column":44}},"14":{"start":{"line":105,"column":4},"end":{"line":105,"column":57}},"15":{"start":{"line":122,"column":4},"end":{"line":122,"column":35}},"16":{"start":{"line":132,"column":4},"end":{"line":132,"column":90}},"17":{"start":{"line":142,"column":4},"end":{"line":142,"column":72}}},"branchMap":{}},"src/libraries/SafeMath.sol":{"l":{"29":15344,"30":15344,"32":15344,"46":108,"64":108,"65":108,"67":108,"84":4040,"85":0,"88":4040,"89":4040,"91":4040,"107":0,"127":0,"128":0,"131":0,"147":0,"167":0,"168":0,"172":16,"173":0,"175":0,"177":0,"179":16,"180":16,"181":16,"189":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/SafeMath.sol","s":{"1":15344,"2":15344,"3":15344,"4":108,"5":108,"6":108,"7":108,"8":4040,"9":0,"10":4040,"11":4040,"12":4040,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":16,"21":0,"22":16,"23":0,"24":16,"25":0,"26":16,"27":16,"28":272,"29":16,"30":0},"b":{"1":[15344,0],"2":[108,0],"3":[0,4040],"4":[4040,0],"5":[0,0],"6":[0,0],"7":[0,16],"8":[0,16],"9":[0,16]},"f":{"1":15344,"2":108,"3":108,"4":4040,"5":0,"6":0,"7":0,"8":0,"9":16,"10":0},"fnMap":{"1":{"name":"add","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":33,"column":2}}},"2":{"name":"sub","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":2}}},"3":{"name":"sub","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":68,"column":2}}},"4":{"name":"mul","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":92,"column":2}}},"5":{"name":"div","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":108,"column":2}}},"6":{"name":"div","line":122,"loc":{"start":{"line":122,"column":2},"end":{"line":132,"column":2}}},"7":{"name":"mod","line":146,"loc":{"start":{"line":146,"column":2},"end":{"line":148,"column":2}}},"8":{"name":"mod","line":162,"loc":{"start":{"line":162,"column":2},"end":{"line":169,"column":2}}},"9":{"name":"pow","line":171,"loc":{"start":{"line":171,"column":2},"end":{"line":183,"column":2}}},"10":{"name":"max","line":188,"loc":{"start":{"line":188,"column":2},"end":{"line":190,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":21}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":49}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":12}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":54}},"5":{"start":{"line":64,"column":4},"end":{"line":64,"column":32}},"6":{"start":{"line":65,"column":4},"end":{"line":65,"column":21}},"7":{"start":{"line":67,"column":4},"end":{"line":67,"column":12}},"8":{"start":{"line":84,"column":4},"end":{"line":84,"column":2356}},"9":{"start":{"line":85,"column":6},"end":{"line":85,"column":14}},"10":{"start":{"line":88,"column":4},"end":{"line":88,"column":21}},"11":{"start":{"line":89,"column":4},"end":{"line":89,"column":59}},"12":{"start":{"line":91,"column":4},"end":{"line":91,"column":12}},"13":{"start":{"line":107,"column":4},"end":{"line":107,"column":50}},"14":{"start":{"line":127,"column":4},"end":{"line":127,"column":31}},"15":{"start":{"line":128,"column":4},"end":{"line":128,"column":21}},"16":{"start":{"line":131,"column":4},"end":{"line":131,"column":12}},"17":{"start":{"line":147,"column":4},"end":{"line":147,"column":48}},"18":{"start":{"line":167,"column":4},"end":{"line":167,"column":32}},"19":{"start":{"line":168,"column":4},"end":{"line":168,"column":16}},"20":{"start":{"line":172,"column":4},"end":{"line":172,"column":5030}},"21":{"start":{"line":173,"column":6},"end":{"line":173,"column":14}},"22":{"start":{"line":174,"column":11},"end":{"line":174,"column":5078}},"23":{"start":{"line":175,"column":6},"end":{"line":175,"column":17}},"24":{"start":{"line":176,"column":11},"end":{"line":176,"column":5129}},"25":{"start":{"line":177,"column":6},"end":{"line":177,"column":14}},"26":{"start":{"line":179,"column":6},"end":{"line":179,"column":22}},"27":{"start":{"line":180,"column":6},"end":{"line":180,"column":71}},"28":{"start":{"line":180,"column":55},"end":{"line":180,"column":70}},"29":{"start":{"line":181,"column":6},"end":{"line":181,"column":14}},"30":{"start":{"line":189,"column":4},"end":{"line":189,"column":25}}},"branchMap":{"1":{"line":30,"type":"if","locations":[{"start":{"line":30,"column":4},"end":{"line":30,"column":4}},{"start":{"line":30,"column":4},"end":{"line":30,"column":4}}]},"2":{"line":64,"type":"if","locations":[{"start":{"line":64,"column":4},"end":{"line":64,"column":4}},{"start":{"line":64,"column":4},"end":{"line":64,"column":4}}]},"3":{"line":84,"type":"if","locations":[{"start":{"line":84,"column":4},"end":{"line":84,"column":4}},{"start":{"line":84,"column":4},"end":{"line":84,"column":4}}]},"4":{"line":89,"type":"if","locations":[{"start":{"line":89,"column":4},"end":{"line":89,"column":4}},{"start":{"line":89,"column":4},"end":{"line":89,"column":4}}]},"5":{"line":127,"type":"if","locations":[{"start":{"line":127,"column":4},"end":{"line":127,"column":4}},{"start":{"line":127,"column":4},"end":{"line":127,"column":4}}]},"6":{"line":167,"type":"if","locations":[{"start":{"line":167,"column":4},"end":{"line":167,"column":4}},{"start":{"line":167,"column":4},"end":{"line":167,"column":4}}]},"7":{"line":172,"type":"if","locations":[{"start":{"line":172,"column":4},"end":{"line":172,"column":4}},{"start":{"line":172,"column":4},"end":{"line":172,"column":4}}]},"8":{"line":174,"type":"if","locations":[{"start":{"line":174,"column":11},"end":{"line":174,"column":11}},{"start":{"line":174,"column":11},"end":{"line":174,"column":11}}]},"9":{"line":176,"type":"if","locations":[{"start":{"line":176,"column":11},"end":{"line":176,"column":11}},{"start":{"line":176,"column":11},"end":{"line":176,"column":11}}]}}},"src/models/DAO.sol":{"l":{"32":2496,"33":2496,"35":2496,"36":2496,"37":2496,"38":2496,"41":2496,"50":2,"54":1008,"64":790,"72":748,"77":748,"78":748,"79":748,"81":748,"82":412,"83":1236,"84":1236,"88":748,"92":2498},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/DAO.sol","s":{"1":2496,"2":2496,"3":2496,"4":2496,"5":2496,"6":2496,"7":2496,"8":2,"9":1008,"10":790,"11":748,"12":748,"13":748,"14":748,"15":748,"16":412,"17":1236,"18":1236,"19":748,"20":2498},"b":{"1":[2496,0],"2":[748,0],"3":[412,336]},"f":{"1":2496,"2":2,"3":1008,"4":790,"5":748,"6":2498},"fnMap":{"1":{"name":"deserialize","line":27,"loc":{"start":{"line":27,"column":2},"end":{"line":42,"column":2}}},"2":{"name":"exists","line":49,"loc":{"start":{"line":49,"column":2},"end":{"line":51,"column":2}}},"3":{"name":"getSummoner","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":55,"column":2}}},"4":{"name":"isSummoner","line":63,"loc":{"start":{"line":63,"column":2},"end":{"line":65,"column":2}}},"5":{"name":"serialize","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":89,"column":2}}},"6":{"name":"_exists","line":91,"loc":{"start":{"line":91,"column":2},"end":{"line":93,"column":2}}}},"statementMap":{"1":{"start":{"line":32,"column":4},"end":{"line":32,"column":22}},"2":{"start":{"line":33,"column":4},"end":{"line":33,"column":32}},"3":{"start":{"line":35,"column":4},"end":{"line":35,"column":903}},"4":{"start":{"line":36,"column":6},"end":{"line":36,"column":66}},"5":{"start":{"line":37,"column":6},"end":{"line":37,"column":90}},"6":{"start":{"line":38,"column":6},"end":{"line":38,"column":72}},"7":{"start":{"line":41,"column":4},"end":{"line":41,"column":17}},"8":{"start":{"line":50,"column":4},"end":{"line":50,"column":25}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":76}},"10":{"start":{"line":64,"column":4},"end":{"line":64,"column":82}},"11":{"start":{"line":72,"column":4},"end":{"line":72,"column":2126}},"12":{"start":{"line":77,"column":4},"end":{"line":77,"column":69}},"13":{"start":{"line":78,"column":4},"end":{"line":78,"column":93}},"14":{"start":{"line":79,"column":4},"end":{"line":79,"column":75}},"15":{"start":{"line":81,"column":4},"end":{"line":81,"column":2514}},"16":{"start":{"line":82,"column":6},"end":{"line":82,"column":2581}},"17":{"start":{"line":83,"column":8},"end":{"line":83,"column":89}},"18":{"start":{"line":84,"column":8},"end":{"line":84,"column":90}},"19":{"start":{"line":88,"column":4},"end":{"line":88,"column":62}},"20":{"start":{"line":92,"column":4},"end":{"line":92,"column":58}}},"branchMap":{"1":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":35,"column":4}},{"start":{"line":35,"column":4},"end":{"line":35,"column":4}}]},"2":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":72,"column":4}},{"start":{"line":72,"column":4},"end":{"line":72,"column":4}}]},"3":{"line":81,"type":"if","locations":[{"start":{"line":81,"column":4},"end":{"line":81,"column":4}},{"start":{"line":81,"column":4},"end":{"line":81,"column":4}}]}}},"src/models/Ecosystem.sol":{"l":{"33":9446,"34":9446,"35":9446,"38":9446,"41":9446,"42":9446,"45":9446,"48":9446,"53":9446,"62":1,"70":830,"72":830,"79":830,"83":830,"84":830,"88":830,"92":830,"97":830,"101":10277},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Ecosystem.sol","s":{"1":9446,"2":9446,"3":9446,"4":9446,"5":9446,"6":9446,"7":9446,"8":9446,"9":9446,"10":1,"11":830,"12":830,"13":830,"14":830,"15":830,"16":830,"17":830,"18":830,"19":10277},"b":{"1":[9446,0],"2":[830,0]},"f":{"1":9446,"2":1,"3":830,"4":10277},"fnMap":{"1":{"name":"deserialize","line":32,"loc":{"start":{"line":32,"column":2},"end":{"line":54,"column":2}}},"2":{"name":"exists","line":61,"loc":{"start":{"line":61,"column":2},"end":{"line":63,"column":2}}},"3":{"name":"serialize","line":69,"loc":{"start":{"line":69,"column":2},"end":{"line":98,"column":2}}},"4":{"name":"_exists","line":100,"loc":{"start":{"line":100,"column":2},"end":{"line":102,"column":2}}}},"statementMap":{"1":{"start":{"line":33,"column":4},"end":{"line":33,"column":1065}},"2":{"start":{"line":34,"column":6},"end":{"line":34,"column":36}},"3":{"start":{"line":35,"column":6},"end":{"line":35,"column":1140}},"4":{"start":{"line":38,"column":6},"end":{"line":38,"column":1268}},"5":{"start":{"line":41,"column":6},"end":{"line":41,"column":49}},"6":{"start":{"line":42,"column":6},"end":{"line":42,"column":1440}},"7":{"start":{"line":45,"column":6},"end":{"line":45,"column":1574}},"8":{"start":{"line":48,"column":6},"end":{"line":48,"column":1710}},"9":{"start":{"line":53,"column":4},"end":{"line":53,"column":17}},"10":{"start":{"line":62,"column":4},"end":{"line":62,"column":31}},"11":{"start":{"line":70,"column":4},"end":{"line":70,"column":50}},"12":{"start":{"line":72,"column":4},"end":{"line":72,"column":2329}},"13":{"start":{"line":79,"column":4},"end":{"line":79,"column":2536}},"14":{"start":{"line":83,"column":4},"end":{"line":83,"column":98}},"15":{"start":{"line":84,"column":4},"end":{"line":84,"column":2764}},"16":{"start":{"line":88,"column":4},"end":{"line":88,"column":2897}},"17":{"start":{"line":92,"column":4},"end":{"line":92,"column":3032}},"18":{"start":{"line":97,"column":4},"end":{"line":97,"column":68}},"19":{"start":{"line":101,"column":4},"end":{"line":101,"column":64}}},"branchMap":{"1":{"line":33,"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":33,"column":4}},{"start":{"line":33,"column":4},"end":{"line":33,"column":4}}]},"2":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":72,"column":4}},{"start":{"line":72,"column":4},"end":{"line":72,"column":4}}]}}},"src/models/EternalModel.sol":{"l":{"30":37132,"37":10550,"44":48238,"51":22518,"58":0,"65":0,"77":18056,"85":4616,"93":5386,"101":6999,"109":0,"117":0,"128":0,"135":0,"142":0,"149":0,"156":0,"163":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/EternalModel.sol","s":{"1":37132,"2":10550,"3":48238,"4":22518,"5":0,"6":0,"7":18056,"8":4616,"9":5386,"10":6999,"11":0,"12":0},"b":{},"f":{"1":37132,"2":10550,"3":48238,"4":22518,"5":0,"6":0,"7":18056,"8":4616,"9":5386,"10":6999,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0},"fnMap":{"1":{"name":"getUint","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":31,"column":2}}},"2":{"name":"getString","line":36,"loc":{"start":{"line":36,"column":2},"end":{"line":38,"column":2}}},"3":{"name":"getAddress","line":43,"loc":{"start":{"line":43,"column":2},"end":{"line":45,"column":2}}},"4":{"name":"getBool","line":50,"loc":{"start":{"line":50,"column":2},"end":{"line":52,"column":2}}},"5":{"name":"getInt","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":59,"column":2}}},"6":{"name":"getBytes","line":64,"loc":{"start":{"line":64,"column":2},"end":{"line":66,"column":2}}},"7":{"name":"setUint","line":76,"loc":{"start":{"line":76,"column":2},"end":{"line":78,"column":2}}},"8":{"name":"setString","line":84,"loc":{"start":{"line":84,"column":2},"end":{"line":86,"column":2}}},"9":{"name":"setAddress","line":92,"loc":{"start":{"line":92,"column":2},"end":{"line":94,"column":2}}},"10":{"name":"setBool","line":100,"loc":{"start":{"line":100,"column":2},"end":{"line":102,"column":2}}},"11":{"name":"setInt","line":108,"loc":{"start":{"line":108,"column":2},"end":{"line":110,"column":2}}},"12":{"name":"setBytes","line":116,"loc":{"start":{"line":116,"column":2},"end":{"line":118,"column":2}}},"13":{"name":"deleteUint","line":127,"loc":{"start":{"line":127,"column":2},"end":{"line":129,"column":2}}},"14":{"name":"deleteString","line":134,"loc":{"start":{"line":134,"column":2},"end":{"line":136,"column":2}}},"15":{"name":"deleteAddress","line":141,"loc":{"start":{"line":141,"column":2},"end":{"line":143,"column":2}}},"16":{"name":"deleteBool","line":148,"loc":{"start":{"line":148,"column":2},"end":{"line":150,"column":2}}},"17":{"name":"deleteInt","line":155,"loc":{"start":{"line":155,"column":2},"end":{"line":157,"column":2}}},"18":{"name":"deleteBytes","line":162,"loc":{"start":{"line":162,"column":2},"end":{"line":164,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":30}},"2":{"start":{"line":37,"column":4},"end":{"line":37,"column":32}},"3":{"start":{"line":44,"column":4},"end":{"line":44,"column":33}},"4":{"start":{"line":51,"column":4},"end":{"line":51,"column":30}},"5":{"start":{"line":58,"column":4},"end":{"line":58,"column":29}},"6":{"start":{"line":65,"column":4},"end":{"line":65,"column":31}},"7":{"start":{"line":77,"column":4},"end":{"line":77,"column":31}},"8":{"start":{"line":85,"column":4},"end":{"line":85,"column":33}},"9":{"start":{"line":93,"column":4},"end":{"line":93,"column":34}},"10":{"start":{"line":101,"column":4},"end":{"line":101,"column":31}},"11":{"start":{"line":109,"column":4},"end":{"line":109,"column":30}},"12":{"start":{"line":117,"column":4},"end":{"line":117,"column":32}}},"branchMap":{}},"src/models/Token.sol":{"l":{"42":4031,"43":4031,"45":4031,"46":4027,"47":4027,"48":4027,"49":4027,"50":4027,"51":4027,"52":4027,"53":4027,"54":4027,"55":4027,"58":4031,"62":451,"66":1544,"68":1544,"69":1544,"77":1934,"84":1934,"85":1934,"86":1934,"87":1933,"88":1933,"89":1927,"90":1927,"91":1900,"93":1893,"99":1122,"103":4897},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Token.sol","s":{"1":4031,"2":4031,"3":4031,"4":4027,"5":4027,"6":4027,"7":4027,"8":4027,"9":4027,"10":4027,"11":4027,"12":4027,"13":4027,"14":4031,"15":451,"16":1544,"17":1544,"18":1544,"19":1934,"20":1934,"21":1934,"22":1934,"23":1933,"24":1933,"25":1927,"26":1927,"27":1900,"28":1893,"29":1122,"30":4897},"b":{"1":[4027,4],"2":[1544,0],"3":[1934,0]},"f":{"1":4031,"2":451,"3":1544,"4":1934,"5":1122,"6":4897},"fnMap":{"1":{"name":"deserialize","line":37,"loc":{"start":{"line":37,"column":2},"end":{"line":59,"column":2}}},"2":{"name":"exists","line":61,"loc":{"start":{"line":61,"column":2},"end":{"line":63,"column":2}}},"3":{"name":"incrementCounter","line":65,"loc":{"start":{"line":65,"column":2},"end":{"line":70,"column":2}}},"4":{"name":"serialize","line":76,"loc":{"start":{"line":76,"column":2},"end":{"line":94,"column":2}}},"5":{"name":"updateNumberOfTokenHolders","line":96,"loc":{"start":{"line":96,"column":2},"end":{"line":100,"column":2}}},"6":{"name":"_exists","line":102,"loc":{"start":{"line":102,"column":2},"end":{"line":104,"column":2}}}},"statementMap":{"1":{"start":{"line":42,"column":4},"end":{"line":42,"column":22}},"2":{"start":{"line":43,"column":4},"end":{"line":43,"column":32}},"3":{"start":{"line":45,"column":4},"end":{"line":45,"column":1269}},"4":{"start":{"line":46,"column":6},"end":{"line":46,"column":70}},"5":{"start":{"line":47,"column":6},"end":{"line":47,"column":64}},"6":{"start":{"line":48,"column":6},"end":{"line":48,"column":76}},"7":{"start":{"line":49,"column":6},"end":{"line":49,"column":58}},"8":{"start":{"line":50,"column":6},"end":{"line":50,"column":68}},"9":{"start":{"line":51,"column":6},"end":{"line":51,"column":58}},"10":{"start":{"line":52,"column":6},"end":{"line":52,"column":90}},"11":{"start":{"line":53,"column":6},"end":{"line":53,"column":66}},"12":{"start":{"line":54,"column":6},"end":{"line":54,"column":96}},"13":{"start":{"line":55,"column":6},"end":{"line":55,"column":70}},"14":{"start":{"line":58,"column":4},"end":{"line":58,"column":17}},"15":{"start":{"line":62,"column":4},"end":{"line":62,"column":25}},"16":{"start":{"line":66,"column":4},"end":{"line":66,"column":65}},"17":{"start":{"line":68,"column":4},"end":{"line":68,"column":76}},"18":{"start":{"line":69,"column":4},"end":{"line":69,"column":83}},"19":{"start":{"line":77,"column":4},"end":{"line":77,"column":2629}},"20":{"start":{"line":84,"column":4},"end":{"line":84,"column":69}},"21":{"start":{"line":85,"column":4},"end":{"line":85,"column":73}},"22":{"start":{"line":86,"column":4},"end":{"line":86,"column":67}},"23":{"start":{"line":87,"column":4},"end":{"line":87,"column":79}},"24":{"start":{"line":88,"column":4},"end":{"line":88,"column":61}},"25":{"start":{"line":89,"column":4},"end":{"line":89,"column":71}},"26":{"start":{"line":90,"column":4},"end":{"line":90,"column":61}},"27":{"start":{"line":91,"column":4},"end":{"line":91,"column":93}},"28":{"start":{"line":93,"column":4},"end":{"line":93,"column":62}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":92}},"30":{"start":{"line":103,"column":4},"end":{"line":103,"column":58}}},"branchMap":{"1":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":45,"column":4}},{"start":{"line":45,"column":4},"end":{"line":45,"column":4}}]},"2":{"line":66,"type":"if","locations":[{"start":{"line":66,"column":4},"end":{"line":66,"column":4}},{"start":{"line":66,"column":4},"end":{"line":66,"column":4}}]},"3":{"line":77,"type":"if","locations":[{"start":{"line":77,"column":4},"end":{"line":77,"column":4}},{"start":{"line":77,"column":4},"end":{"line":77,"column":4}}]}}},"src/models/TokenHolder.sol":{"l":{"29":1560,"30":1560,"31":1560,"33":1560,"34":438,"35":438,"38":1560,"46":0,"54":1544,"56":1544,"57":1544,"59":1544,"67":1560},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/TokenHolder.sol","s":{"1":1560,"2":1560,"3":1560,"4":1560,"5":438,"6":438,"7":1560,"8":0,"9":1544,"10":1544,"11":1544,"12":1544,"13":1560},"b":{"1":[438,1122],"2":[1544,0]},"f":{"1":1560,"2":0,"3":1544,"4":1560},"fnMap":{"1":{"name":"deserialize","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":39,"column":2}}},"2":{"name":"exists","line":41,"loc":{"start":{"line":41,"column":2},"end":{"line":47,"column":2}}},"3":{"name":"serialize","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":60,"column":2}}},"4":{"name":"_exists","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":68,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":28}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":32}},"3":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":1003}},"5":{"start":{"line":34,"column":6},"end":{"line":34,"column":98}},"6":{"start":{"line":35,"column":6},"end":{"line":35,"column":96}},"7":{"start":{"line":38,"column":4},"end":{"line":38,"column":17}},"8":{"start":{"line":46,"column":4},"end":{"line":46,"column":48}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":71}},"10":{"start":{"line":56,"column":4},"end":{"line":56,"column":95}},"11":{"start":{"line":57,"column":4},"end":{"line":57,"column":93}},"12":{"start":{"line":59,"column":4},"end":{"line":59,"column":84}},"13":{"start":{"line":67,"column":4},"end":{"line":67,"column":74}}},"branchMap":{"1":{"line":33,"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":33,"column":4}},{"start":{"line":33,"column":4},"end":{"line":33,"column":4}}]},"2":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":54,"column":4}},{"start":{"line":54,"column":4},"end":{"line":54,"column":4}}]}}},"src/services/Configurator.sol":{"l":{"30":412,"31":412,"32":412,"33":412,"34":412,"35":412,"36":412,"37":412,"38":412,"50":412,"52":412,"55":412,"56":412,"57":412,"58":412,"61":412,"63":412,"64":412,"89":442,"90":442,"91":442,"92":442,"93":442,"94":442,"95":442,"96":442,"97":442,"98":442,"99":442,"101":415,"102":415,"103":415,"105":341},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/services/Configurator.sol","s":{"1":412,"2":412,"3":412,"4":412,"5":412,"6":412,"7":412,"8":412,"9":412,"10":412,"11":412,"12":412,"13":412,"14":412,"15":412,"16":412,"17":412,"18":412,"19":442,"20":442,"21":442,"22":442,"23":442,"24":442,"25":442,"26":442,"27":442,"28":442,"29":442,"30":415,"31":415,"32":415,"33":341},"b":{},"f":{"1":412,"2":412,"3":442},"fnMap":{"1":{"name":"buildDAO","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":39,"column":2}}},"2":{"name":"buildEcosystem","line":46,"loc":{"start":{"line":46,"column":2},"end":{"line":65,"column":2}}},"3":{"name":"buildToken","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":106,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":52}},"2":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":29}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":19}},"5":{"start":{"line":34,"column":4},"end":{"line":34,"column":45}},"6":{"start":{"line":35,"column":4},"end":{"line":35,"column":23}},"7":{"start":{"line":36,"column":4},"end":{"line":36,"column":29}},"8":{"start":{"line":37,"column":4},"end":{"line":37,"column":28}},"9":{"start":{"line":38,"column":4},"end":{"line":38,"column":14}},"10":{"start":{"line":50,"column":4},"end":{"line":50,"column":74}},"11":{"start":{"line":52,"column":4},"end":{"line":52,"column":36}},"12":{"start":{"line":55,"column":4},"end":{"line":55,"column":55}},"13":{"start":{"line":56,"column":4},"end":{"line":56,"column":67}},"14":{"start":{"line":57,"column":4},"end":{"line":57,"column":71}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":59}},"16":{"start":{"line":61,"column":4},"end":{"line":61,"column":63}},"17":{"start":{"line":63,"column":4},"end":{"line":63,"column":40}},"18":{"start":{"line":64,"column":4},"end":{"line":64,"column":20}},"19":{"start":{"line":89,"column":4},"end":{"line":89,"column":60}},"20":{"start":{"line":90,"column":4},"end":{"line":90,"column":21}},"21":{"start":{"line":91,"column":4},"end":{"line":91,"column":31}},"22":{"start":{"line":92,"column":4},"end":{"line":92,"column":33}},"23":{"start":{"line":93,"column":4},"end":{"line":93,"column":15}},"24":{"start":{"line":94,"column":4},"end":{"line":94,"column":19}},"25":{"start":{"line":95,"column":4},"end":{"line":95,"column":32}},"26":{"start":{"line":96,"column":4},"end":{"line":96,"column":47}},"27":{"start":{"line":97,"column":4},"end":{"line":97,"column":21}},"28":{"start":{"line":98,"column":4},"end":{"line":98,"column":25}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":97}},"30":{"start":{"line":101,"column":4},"end":{"line":101,"column":49}},"31":{"start":{"line":102,"column":4},"end":{"line":102,"column":68}},"32":{"start":{"line":103,"column":4},"end":{"line":103,"column":32}},"33":{"start":{"line":105,"column":4},"end":{"line":105,"column":16}}},"branchMap":{}},"src/tokens/ElasticGovernanceToken.sol":{"l":{"28":706,"29":706,"33":29,"34":28,"38":1477,"39":1476,"43":442,"44":442,"45":442,"46":442,"59":3,"78":6,"79":6,"88":13,"89":13,"90":13,"92":13,"101":1,"102":1,"106":2,"107":2,"108":2,"109":2,"111":2,"112":1,"114":1,"130":14,"131":12,"146":14,"147":14,"155":1,"165":3,"167":3,"169":3,"170":3,"180":6,"181":6,"191":3,"193":3,"208":1473,"209":1380,"217":1,"221":1,"225":353,"229":353,"238":1,"251":18,"252":18,"256":1,"257":1,"269":6,"270":6,"288":14,"290":14,"292":13,"293":13,"295":13,"298":10,"308":15,"309":15,"311":15,"313":15,"317":14,"318":14,"319":14,"323":28,"324":28,"325":28,"326":28,"327":28,"329":28,"331":28,"332":28,"334":28,"335":28,"336":26,"340":3,"341":3,"342":3,"346":1476,"347":1476,"348":1476,"349":1476,"350":1476,"352":1476,"354":1476,"356":1476,"357":1476,"359":1476,"360":1476,"361":1474,"363":1444,"371":20,"372":20,"373":20,"375":20,"376":20,"377":20,"378":20,"380":20,"381":20,"383":20,"384":20,"386":20,"387":20,"388":20,"389":19,"390":19,"392":19,"401":1544,"403":1544,"404":1544,"406":1544,"407":1496,"409":48,"412":1544,"414":1544,"423":1538,"424":1122,"427":1508,"428":0,"435":4682,"439":1560,"440":1560,"449":54,"450":54},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/tokens/ElasticGovernanceToken.sol","s":{"1":706,"2":29,"3":1477,"4":442,"5":442,"6":442,"7":442,"8":3,"9":6,"10":6,"11":13,"12":13,"13":13,"14":13,"15":1,"16":1,"17":2,"18":2,"19":2,"20":2,"21":2,"22":1,"23":1,"24":14,"25":12,"26":14,"27":14,"28":1,"29":3,"30":3,"31":3,"32":3,"33":6,"34":6,"35":3,"36":3,"37":1473,"38":1380,"39":1,"40":1,"41":353,"42":353,"43":1,"44":18,"45":18,"46":1,"47":1,"48":6,"49":6,"50":14,"51":14,"52":13,"53":13,"54":13,"55":10,"56":15,"57":15,"58":15,"59":15,"60":14,"61":14,"62":14,"63":28,"64":28,"65":28,"66":28,"67":28,"68":28,"69":28,"70":28,"71":28,"72":28,"73":26,"74":3,"75":3,"76":3,"77":1476,"78":1476,"79":1476,"80":1476,"81":1476,"82":1476,"83":1476,"84":1476,"85":1476,"86":1476,"87":1476,"88":1474,"89":1444,"90":20,"91":20,"92":20,"93":20,"94":20,"95":20,"96":20,"97":20,"98":20,"99":20,"100":20,"101":20,"102":20,"103":20,"104":19,"105":19,"106":19,"107":1544,"108":1544,"109":1544,"110":1544,"111":1496,"112":48,"113":1544,"114":1544,"115":1538,"116":1122,"117":1508,"118":0,"119":4682,"120":1560,"121":1560,"122":54,"123":54},"b":{"1":[706,0],"2":[28,1],"3":[1476,1],"4":[1,1],"5":[3,0],"6":[14,0],"7":[13,0],"8":[15,0],"9":[15,0],"10":[1496,48],"11":[1122,416],"12":[0,1508]},"f":{"1":706,"2":29,"3":1477,"4":442,"5":3,"6":6,"7":13,"8":1,"9":2,"10":14,"11":14,"12":1,"13":3,"14":6,"15":3,"16":1473,"17":1,"18":1,"19":353,"20":353,"21":1,"22":18,"23":1,"24":6,"25":14,"26":15,"27":14,"28":28,"29":3,"30":1476,"31":20,"32":1544,"33":1538,"34":4682,"35":1560,"36":54},"fnMap":{"1":{"name":"onlyDAO","line":27,"loc":{"start":{"line":27,"column":2},"end":{"line":30,"column":2}}},"2":{"name":"onlyDAOorBurner","line":32,"loc":{"start":{"line":32,"column":2},"end":{"line":35,"column":2}}},"3":{"name":"onlyDAOorMinter","line":37,"loc":{"start":{"line":37,"column":2},"end":{"line":40,"column":2}}},"4":{"name":"constructor","line":42,"loc":{"start":{"line":42,"column":2},"end":{"line":47,"column":2}}},"5":{"name":"allowance","line":58,"loc":{"start":{"line":58,"column":2},"end":{"line":60,"column":2}}},"6":{"name":"approve","line":77,"loc":{"start":{"line":77,"column":2},"end":{"line":80,"column":2}}},"7":{"name":"balanceOf","line":87,"loc":{"start":{"line":87,"column":2},"end":{"line":93,"column":2}}},"8":{"name":"balanceOfInShares","line":100,"loc":{"start":{"line":100,"column":2},"end":{"line":103,"column":2}}},"9":{"name":"balanceOfVoting","line":105,"loc":{"start":{"line":105,"column":2},"end":{"line":116,"column":2}}},"10":{"name":"burn","line":127,"loc":{"start":{"line":124,"column":2},"end":{"line":132,"column":2}}},"11":{"name":"burnShares","line":143,"loc":{"start":{"line":140,"column":2},"end":{"line":148,"column":2}}},"12":{"name":"decimals","line":154,"loc":{"start":{"line":154,"column":2},"end":{"line":156,"column":2}}},"13":{"name":"decreaseAllowance","line":164,"loc":{"start":{"line":164,"column":2},"end":{"line":171,"column":2}}},"14":{"name":"increaseAllowance","line":179,"loc":{"start":{"line":179,"column":2},"end":{"line":182,"column":2}}},"15":{"name":"mint","line":190,"loc":{"start":{"line":190,"column":2},"end":{"line":194,"column":2}}},"16":{"name":"mintShares","line":205,"loc":{"start":{"line":202,"column":2},"end":{"line":210,"column":2}}},"17":{"name":"name","line":216,"loc":{"start":{"line":216,"column":2},"end":{"line":218,"column":2}}},"18":{"name":"numberOfTokenHolders","line":220,"loc":{"start":{"line":220,"column":2},"end":{"line":222,"column":2}}},"19":{"name":"setBurner","line":224,"loc":{"start":{"line":224,"column":2},"end":{"line":226,"column":2}}},"20":{"name":"setMinter","line":228,"loc":{"start":{"line":228,"column":2},"end":{"line":230,"column":2}}},"21":{"name":"symbol","line":237,"loc":{"start":{"line":237,"column":2},"end":{"line":239,"column":2}}},"22":{"name":"totalSupply","line":250,"loc":{"start":{"line":250,"column":2},"end":{"line":253,"column":2}}},"23":{"name":"totalSupplyInShares","line":255,"loc":{"start":{"line":255,"column":2},"end":{"line":258,"column":2}}},"24":{"name":"transfer","line":268,"loc":{"start":{"line":268,"column":2},"end":{"line":271,"column":2}}},"25":{"name":"transferFrom","line":283,"loc":{"start":{"line":283,"column":2},"end":{"line":299,"column":2}}},"26":{"name":"_approve","line":303,"loc":{"start":{"line":303,"column":2},"end":{"line":314,"column":2}}},"27":{"name":"_burn","line":316,"loc":{"start":{"line":316,"column":2},"end":{"line":320,"column":2}}},"28":{"name":"_burnShares","line":322,"loc":{"start":{"line":322,"column":2},"end":{"line":337,"column":2}}},"29":{"name":"_mint","line":339,"loc":{"start":{"line":339,"column":2},"end":{"line":343,"column":2}}},"30":{"name":"_mintShares","line":345,"loc":{"start":{"line":345,"column":2},"end":{"line":364,"column":2}}},"31":{"name":"_transfer","line":366,"loc":{"start":{"line":366,"column":2},"end":{"line":393,"column":2}}},"32":{"name":"_updateBalance","line":395,"loc":{"start":{"line":395,"column":2},"end":{"line":415,"column":2}}},"33":{"name":"_updateNumberOfTokenHolders","line":417,"loc":{"start":{"line":417,"column":2},"end":{"line":430,"column":2}}},"34":{"name":"_getEcosystem","line":434,"loc":{"start":{"line":434,"column":2},"end":{"line":436,"column":2}}},"35":{"name":"_getTokenHolder","line":438,"loc":{"start":{"line":438,"column":2},"end":{"line":446,"column":2}}},"36":{"name":"_getToken","line":448,"loc":{"start":{"line":448,"column":2},"end":{"line":451,"column":2}}}},"statementMap":{"1":{"start":{"line":28,"column":4},"end":{"line":28,"column":90}},"2":{"start":{"line":33,"column":4},"end":{"line":33,"column":90}},"3":{"start":{"line":38,"column":4},"end":{"line":38,"column":90}},"4":{"start":{"line":43,"column":4},"end":{"line":43,"column":23}},"5":{"start":{"line":44,"column":4},"end":{"line":44,"column":27}},"6":{"start":{"line":45,"column":4},"end":{"line":45,"column":49}},"7":{"start":{"line":46,"column":4},"end":{"line":46,"column":23}},"8":{"start":{"line":59,"column":4},"end":{"line":59,"column":40}},"9":{"start":{"line":78,"column":4},"end":{"line":78,"column":42}},"10":{"start":{"line":79,"column":4},"end":{"line":79,"column":15}},"11":{"start":{"line":88,"column":4},"end":{"line":88,"column":45}},"12":{"start":{"line":89,"column":4},"end":{"line":89,"column":71}},"13":{"start":{"line":90,"column":4},"end":{"line":90,"column":67}},"14":{"start":{"line":92,"column":4},"end":{"line":92,"column":12}},"15":{"start":{"line":101,"column":4},"end":{"line":101,"column":71}},"16":{"start":{"line":102,"column":4},"end":{"line":102,"column":29}},"17":{"start":{"line":106,"column":4},"end":{"line":106,"column":45}},"18":{"start":{"line":107,"column":4},"end":{"line":107,"column":71}},"19":{"start":{"line":108,"column":4},"end":{"line":108,"column":59}},"20":{"start":{"line":109,"column":4},"end":{"line":109,"column":58}},"21":{"start":{"line":111,"column":4},"end":{"line":111,"column":3813}},"22":{"start":{"line":112,"column":6},"end":{"line":112,"column":61}},"23":{"start":{"line":114,"column":6},"end":{"line":114,"column":64}},"24":{"start":{"line":130,"column":4},"end":{"line":130,"column":27}},"25":{"start":{"line":131,"column":4},"end":{"line":131,"column":15}},"26":{"start":{"line":146,"column":4},"end":{"line":146,"column":33}},"27":{"start":{"line":147,"column":4},"end":{"line":147,"column":15}},"28":{"start":{"line":155,"column":4},"end":{"line":155,"column":13}},"29":{"start":{"line":165,"column":4},"end":{"line":165,"column":92}},"30":{"start":{"line":167,"column":4},"end":{"line":167,"column":74}},"31":{"start":{"line":169,"column":4},"end":{"line":169,"column":47}},"32":{"start":{"line":170,"column":4},"end":{"line":170,"column":15}},"33":{"start":{"line":180,"column":4},"end":{"line":180,"column":95}},"34":{"start":{"line":181,"column":4},"end":{"line":181,"column":15}},"35":{"start":{"line":191,"column":4},"end":{"line":191,"column":27}},"36":{"start":{"line":193,"column":4},"end":{"line":193,"column":15}},"37":{"start":{"line":208,"column":4},"end":{"line":208,"column":33}},"38":{"start":{"line":209,"column":4},"end":{"line":209,"column":15}},"39":{"start":{"line":217,"column":4},"end":{"line":217,"column":27}},"40":{"start":{"line":221,"column":4},"end":{"line":221,"column":43}},"41":{"start":{"line":225,"column":4},"end":{"line":225,"column":19}},"42":{"start":{"line":229,"column":4},"end":{"line":229,"column":19}},"43":{"start":{"line":238,"column":4},"end":{"line":238,"column":29}},"44":{"start":{"line":251,"column":4},"end":{"line":251,"column":45}},"45":{"start":{"line":252,"column":4},"end":{"line":252,"column":56}},"46":{"start":{"line":256,"column":4},"end":{"line":256,"column":45}},"47":{"start":{"line":257,"column":4},"end":{"line":257,"column":23}},"48":{"start":{"line":269,"column":4},"end":{"line":269,"column":38}},"49":{"start":{"line":270,"column":4},"end":{"line":270,"column":15}},"50":{"start":{"line":288,"column":4},"end":{"line":288,"column":97}},"51":{"start":{"line":290,"column":4},"end":{"line":290,"column":33}},"52":{"start":{"line":292,"column":4},"end":{"line":292,"column":9064}},"53":{"start":{"line":293,"column":6},"end":{"line":293,"column":91}},"54":{"start":{"line":295,"column":6},"end":{"line":295,"column":68}},"55":{"start":{"line":298,"column":4},"end":{"line":298,"column":15}},"56":{"start":{"line":308,"column":4},"end":{"line":308,"column":72}},"57":{"start":{"line":309,"column":4},"end":{"line":309,"column":72}},"58":{"start":{"line":311,"column":4},"end":{"line":311,"column":42}},"59":{"start":{"line":313,"column":4},"end":{"line":313,"column":44}},"60":{"start":{"line":317,"column":4},"end":{"line":317,"column":45}},"61":{"start":{"line":318,"column":4},"end":{"line":318,"column":76}},"62":{"start":{"line":319,"column":4},"end":{"line":319,"column":37}},"63":{"start":{"line":323,"column":4},"end":{"line":323,"column":57}},"64":{"start":{"line":324,"column":4},"end":{"line":324,"column":59}},"65":{"start":{"line":325,"column":4},"end":{"line":325,"column":84}},"66":{"start":{"line":326,"column":4},"end":{"line":326,"column":71}},"67":{"start":{"line":327,"column":4},"end":{"line":327,"column":52}},"68":{"start":{"line":329,"column":4},"end":{"line":329,"column":72}},"69":{"start":{"line":331,"column":4},"end":{"line":331,"column":58}},"70":{"start":{"line":332,"column":4},"end":{"line":332,"column":32}},"71":{"start":{"line":334,"column":4},"end":{"line":334,"column":83}},"72":{"start":{"line":335,"column":4},"end":{"line":335,"column":44}},"73":{"start":{"line":336,"column":4},"end":{"line":336,"column":84}},"74":{"start":{"line":340,"column":4},"end":{"line":340,"column":45}},"75":{"start":{"line":341,"column":4},"end":{"line":341,"column":76}},"76":{"start":{"line":342,"column":4},"end":{"line":342,"column":37}},"77":{"start":{"line":346,"column":4},"end":{"line":346,"column":57}},"78":{"start":{"line":347,"column":4},"end":{"line":347,"column":59}},"79":{"start":{"line":348,"column":4},"end":{"line":348,"column":84}},"80":{"start":{"line":349,"column":4},"end":{"line":349,"column":71}},"81":{"start":{"line":350,"column":4},"end":{"line":350,"column":52}},"82":{"start":{"line":352,"column":4},"end":{"line":352,"column":66}},"83":{"start":{"line":354,"column":4},"end":{"line":354,"column":71}},"84":{"start":{"line":356,"column":4},"end":{"line":356,"column":58}},"85":{"start":{"line":357,"column":4},"end":{"line":357,"column":32}},"86":{"start":{"line":359,"column":4},"end":{"line":359,"column":83}},"87":{"start":{"line":360,"column":4},"end":{"line":360,"column":44}},"88":{"start":{"line":361,"column":4},"end":{"line":361,"column":84}},"89":{"start":{"line":363,"column":4},"end":{"line":363,"column":47}},"90":{"start":{"line":371,"column":4},"end":{"line":371,"column":57}},"91":{"start":{"line":372,"column":4},"end":{"line":372,"column":59}},"92":{"start":{"line":373,"column":4},"end":{"line":373,"column":84}},"93":{"start":{"line":375,"column":4},"end":{"line":375,"column":72}},"94":{"start":{"line":376,"column":4},"end":{"line":376,"column":68}},"95":{"start":{"line":377,"column":4},"end":{"line":377,"column":60}},"96":{"start":{"line":378,"column":4},"end":{"line":378,"column":56}},"97":{"start":{"line":380,"column":4},"end":{"line":380,"column":76}},"98":{"start":{"line":381,"column":4},"end":{"line":381,"column":65}},"99":{"start":{"line":383,"column":4},"end":{"line":383,"column":79}},"100":{"start":{"line":384,"column":4},"end":{"line":384,"column":74}},"101":{"start":{"line":386,"column":4},"end":{"line":386,"column":83}},"102":{"start":{"line":387,"column":4},"end":{"line":387,"column":48}},"103":{"start":{"line":388,"column":4},"end":{"line":388,"column":46}},"104":{"start":{"line":389,"column":4},"end":{"line":389,"column":92}},"105":{"start":{"line":390,"column":4},"end":{"line":390,"column":88}},"106":{"start":{"line":392,"column":4},"end":{"line":392,"column":37}},"107":{"start":{"line":401,"column":4},"end":{"line":401,"column":57}},"108":{"start":{"line":403,"column":4},"end":{"line":403,"column":51}},"109":{"start":{"line":404,"column":4},"end":{"line":404,"column":63}},"110":{"start":{"line":406,"column":4},"end":{"line":406,"column":13569}},"111":{"start":{"line":407,"column":6},"end":{"line":407,"column":74}},"112":{"start":{"line":409,"column":6},"end":{"line":409,"column":74}},"113":{"start":{"line":412,"column":4},"end":{"line":412,"column":62}},"114":{"start":{"line":414,"column":4},"end":{"line":414,"column":23}},"115":{"start":{"line":423,"column":4},"end":{"line":423,"column":14049}},"116":{"start":{"line":424,"column":6},"end":{"line":424,"column":96}},"117":{"start":{"line":427,"column":4},"end":{"line":427,"column":14220}},"118":{"start":{"line":428,"column":6},"end":{"line":428,"column":96}},"119":{"start":{"line":435,"column":4},"end":{"line":435,"column":67}},"120":{"start":{"line":439,"column":4},"end":{"line":439,"column":57}},"121":{"start":{"line":440,"column":4},"end":{"line":440,"column":14723}},"122":{"start":{"line":449,"column":4},"end":{"line":449,"column":57}},"123":{"start":{"line":450,"column":4},"end":{"line":450,"column":83}}},"branchMap":{"1":{"line":28,"type":"if","locations":[{"start":{"line":28,"column":4},"end":{"line":28,"column":4}},{"start":{"line":28,"column":4},"end":{"line":28,"column":4}}]},"2":{"line":33,"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":33,"column":4}},{"start":{"line":33,"column":4},"end":{"line":33,"column":4}}]},"3":{"line":38,"type":"if","locations":[{"start":{"line":38,"column":4},"end":{"line":38,"column":4}},{"start":{"line":38,"column":4},"end":{"line":38,"column":4}}]},"4":{"line":111,"type":"if","locations":[{"start":{"line":111,"column":4},"end":{"line":111,"column":4}},{"start":{"line":111,"column":4},"end":{"line":111,"column":4}}]},"5":{"line":167,"type":"if","locations":[{"start":{"line":167,"column":4},"end":{"line":167,"column":4}},{"start":{"line":167,"column":4},"end":{"line":167,"column":4}}]},"6":{"line":288,"type":"if","locations":[{"start":{"line":288,"column":4},"end":{"line":288,"column":4}},{"start":{"line":288,"column":4},"end":{"line":288,"column":4}}]},"7":{"line":292,"type":"if","locations":[{"start":{"line":292,"column":4},"end":{"line":292,"column":4}},{"start":{"line":292,"column":4},"end":{"line":292,"column":4}}]},"8":{"line":308,"type":"if","locations":[{"start":{"line":308,"column":4},"end":{"line":308,"column":4}},{"start":{"line":308,"column":4},"end":{"line":308,"column":4}}]},"9":{"line":309,"type":"if","locations":[{"start":{"line":309,"column":4},"end":{"line":309,"column":4}},{"start":{"line":309,"column":4},"end":{"line":309,"column":4}}]},"10":{"line":406,"type":"if","locations":[{"start":{"line":406,"column":4},"end":{"line":406,"column":4}},{"start":{"line":406,"column":4},"end":{"line":406,"column":4}}]},"11":{"line":423,"type":"if","locations":[{"start":{"line":423,"column":4},"end":{"line":423,"column":4}},{"start":{"line":423,"column":4},"end":{"line":423,"column":4}}]},"12":{"line":427,"type":"if","locations":[{"start":{"line":427,"column":4},"end":{"line":427,"column":4}},{"start":{"line":427,"column":4},"end":{"line":427,"column":4}}]}}}} \ No newline at end of file diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index 9bbe14f..7ca02d1 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -12,13 +12,18 @@ import '../models/Token.sol'; import '../services/Configurator.sol'; contract ElasticDAO { - address internal deployer; - address internal ecosystemModelAddress; + address public deployer; + address public ecosystemModelAddress; address public controller; address[] public summoners; uint256 public maxVotingLambda; event ElasticGovernanceTokenDeployed(address indexed tokenAddress); + event SettingsChanged(address indexed daoAddress, bytes32 settingName, uint256 value); + event ExitDAO(address indexed daoAddress, address indexed memberAddress, uint256 amount); + event JoinDAO(address indexed daoAddress, address indexed memberAddress, uint256 amount); + event SeedDAO(address indexed daoAddress, address indexed summonerAddress, uint256 amount); + event SummonedDAO(address indexed daoAddress, address indexed summonedBy); modifier onlyAfterSummoning() { DAO.Instance memory dao = _getDAO(); @@ -162,6 +167,8 @@ contract ElasticDAO { // tokencontract mint shares tokenContract.mintShares(msg.sender, _deltaLambda); + + emit JoinDAO(address(this), msg.sender, _deltaLambda); } function setController(address _controller) external onlyController { @@ -189,6 +196,8 @@ contract ElasticDAO { uint256 deltaE = msg.value; uint256 deltaLambda = ElasticMath.wdiv(deltaE, token.eByL); ElasticGovernanceToken(token.uuid).mintShares(msg.sender, deltaLambda); + + emit SeedDAO(address(this), msg.sender, deltaLambda); } function summon(uint256 _deltaLambda) public onlyBeforeSummoning onlySummoners { @@ -206,6 +215,8 @@ contract ElasticDAO { } dao.summoned = true; daoContract.serialize(dao); + + emit SummonedDAO(address(this), msg.sender); } // Getters diff --git a/src/core/ElasticDAOFactory.sol b/src/core/ElasticDAOFactory.sol index 8ea65cf..ab08cba 100644 --- a/src/core/ElasticDAOFactory.sol +++ b/src/core/ElasticDAOFactory.sol @@ -7,13 +7,13 @@ import '../models/Ecosystem.sol'; // This contract is the facory contract for ElasticDAO contract ElasticDAOFactory { - address internal deployer; - address internal ecosystemModelAddress; + address public deployer; + address public ecosystemModelAddress; address payable feeAddress; address[] public deployedDAOAddresses; uint256 public deployedDAOCount = 0; - event DAODeployed(address indexed daoAddress); + event DeployedDAO(address indexed daoAddress); event FeeAddressUpdated(address indexed feeReceiver); event FeesCollected(address treasuryAddress, uint256 amount); @@ -51,7 +51,7 @@ contract ElasticDAOFactory { deployedDAOAddresses.push(address(elasticDAO)); deployedDAOCount = SafeMath.add(deployedDAOCount, 1); - emit DAODeployed(address(elasticDAO)); + emit DeployedDAO(address(elasticDAO)); } function updateFeeAddress(address _feeReceiver) external onlyDeployer { diff --git a/src/models/Ecosystem.sol b/src/models/Ecosystem.sol index 46601da..cb5470c 100644 --- a/src/models/Ecosystem.sol +++ b/src/models/Ecosystem.sol @@ -54,7 +54,7 @@ contract Ecosystem is EternalModel { } /** - * @dev checks if @param _daoAddress and @param _name exist + * @dev checks if @param _daoAddress * @param _daoAddress - address of the unique user ID * @return recordExists bool */ diff --git a/src/models/TokenHolder.sol b/src/models/TokenHolder.sol index 24840a0..7a11ab8 100644 --- a/src/models/TokenHolder.sol +++ b/src/models/TokenHolder.sol @@ -6,6 +6,7 @@ import './Ecosystem.sol'; import './EternalModel.sol'; import './Token.sol'; import '../libraries/SafeMath.sol'; +import 'hardhat/console.sol'; /// @author ElasticDAO - https://ElasticDAO.org /// @notice This contract is used for storing token data @@ -30,7 +31,13 @@ contract TokenHolder is EternalModel { record.ecosystem = _ecosystem; record.token = _token; - if (_exists(_account, _ecosystem, _token)) { + console.log("EXISTS DESERIALIZE"); + console.logBool(_exists(_account, _token)); + console.logAddress(record.account); + console.log(record.token.uuid); + + + if (_exists(_account, _token)) { record.counter = getUint(keccak256(abi.encode(record.token.uuid, record.account, 'counter'))); record.lambda = getUint(keccak256(abi.encode(record.token.uuid, record.account, 'lambda'))); } @@ -40,10 +47,12 @@ contract TokenHolder is EternalModel { function exists( address _account, - Ecosystem.Instance memory _ecosystem, Token.Instance memory _token - ) external view returns (bool recordExists) { - return _exists(_account, _ecosystem, _token); + ) external view returns (bool) { + console.log("EXISTS"); + console.logBool(_exists(_account, _token)); + + return _exists(_account, _token); } /** @@ -61,9 +70,8 @@ contract TokenHolder is EternalModel { function _exists( address _account, - Ecosystem.Instance memory, Token.Instance memory _token - ) internal view returns (bool recordExists) { + ) internal view returns (bool) { return getBool(keccak256(abi.encode(_token.uuid, _account, 'exists'))); } } diff --git a/test/tokenHolderModelTests.js b/test/tokenHolderModelTests.js new file mode 100644 index 0000000..dc571b1 --- /dev/null +++ b/test/tokenHolderModelTests.js @@ -0,0 +1,19 @@ +// const { expect } = require('chai'); +// const { ethers } = require('ethers'); +// const { deployments } = require('hardhat'); + +const { signers, summonedDAO } = require('./helpers'); + +describe('ElasticDAO: TokenHolder Model', () => { + it.only('Should check to see if a token holder record exists by account address', async () => { + const dao = await summonedDAO(); + const { summoner1 } = await signers(); + const { TokenHolder } = dao.sdk.models; + const token = await dao.token(); + + console.log('token', token.uuid, await TokenHolder.exists(summoner1.address, token)); + // const recordExists = await tokenHolderStorage.exists(summoner1.address, token); + // console.log('recordExits', recordExists); + // expect(recordExists).to.equal(true); + }); +}); From 7c8b6ec8ca6b60a966f3dda1d48ceb613f8b4474 Mon Sep 17 00:00:00 2001 From: alleycatdev Date: Sun, 7 Feb 2021 16:24:44 -0500 Subject: [PATCH 022/118] proxies all deployed call contracts --- coverage.json | 2 +- deploy/configurator.js | 1 + deploy/dao.js | 1 + deploy/ecosystem.js | 1 + deploy/elasticDAOFactory.js | 1 + deploy/token.js | 1 + deploy/tokenHolder.js | 1 + src/models/TokenHolder.sol | 15 ++++----------- test/tokenHolderModelTests.js | 32 ++++++++++++++++---------------- 9 files changed, 27 insertions(+), 28 deletions(-) diff --git a/coverage.json b/coverage.json index 37e3b3a..54514a8 100644 --- a/coverage.json +++ b/coverage.json @@ -1 +1 @@ -{"src/core/ElasticDAO.sol":{"l":{"24":30,"25":30,"26":30,"29":451,"30":451,"32":451,"33":450,"36":1234,"37":1234,"38":1233,"41":17,"42":15,"45":443,"46":442,"49":790,"50":790,"51":790,"52":790,"54":790,"55":788,"58":16,"59":16,"69":412,"70":412,"71":412,"72":412,"73":412,"74":412,"76":412,"77":412,"78":412,"83":14,"84":14,"85":14,"88":14,"89":14,"91":14,"102":442,"103":442,"105":442,"116":341,"117":341,"118":341,"120":341,"124":16,"126":16,"131":16,"132":16,"141":16,"151":16,"154":15,"155":15,"158":15,"159":15,"160":15,"161":15,"164":15,"168":12,"169":12,"170":12,"171":12,"175":3,"187":450,"189":450,"190":450,"191":450,"195":337,"197":336,"198":336,"199":336,"200":336,"202":336,"204":336,"205":1008,"207":336,"208":336,"214":1,"218":2,"224":1265,"225":1265,"229":4244,"233":492,"234":492},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAO.sol","s":{"1":30,"2":30,"3":451,"4":451,"5":451,"6":1234,"7":1234,"8":17,"9":443,"10":790,"11":790,"12":790,"13":790,"14":790,"15":16,"16":412,"17":412,"18":412,"19":412,"20":412,"21":412,"22":412,"23":412,"24":412,"25":14,"26":14,"27":14,"28":14,"29":14,"30":14,"31":442,"32":442,"33":442,"34":341,"35":341,"36":341,"37":341,"38":16,"39":16,"40":16,"41":16,"42":16,"43":16,"44":15,"45":15,"46":15,"47":15,"48":15,"49":15,"50":15,"51":12,"52":12,"53":12,"54":12,"55":3,"56":450,"57":450,"58":450,"59":450,"60":337,"61":336,"62":336,"63":336,"64":336,"65":336,"66":336,"67":1008,"68":336,"69":336,"70":1,"71":2,"72":1265,"73":1265,"74":4244,"75":492,"76":492},"b":{"1":[30,0],"2":[450,1],"3":[1233,1],"4":[15,2],"5":[442,1],"6":[788,2],"7":[16,0],"8":[442,0],"9":[16,0],"10":[15,1],"11":[336,1]},"f":{"1":30,"2":451,"3":1234,"4":17,"5":443,"6":790,"7":16,"8":412,"9":14,"10":442,"11":16,"12":12,"13":3,"14":450,"15":337,"16":1,"17":2,"18":1265,"19":4244,"20":492,"21":0},"fnMap":{"1":{"name":"onlyAfterSummoning","line":23,"loc":{"start":{"line":23,"column":2},"end":{"line":27,"column":2}}},"2":{"name":"onlyAfterTokenInitialized","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":34,"column":2}}},"3":{"name":"onlyBeforeSummoning","line":35,"loc":{"start":{"line":35,"column":2},"end":{"line":39,"column":2}}},"4":{"name":"onlyController","line":40,"loc":{"start":{"line":40,"column":2},"end":{"line":43,"column":2}}},"5":{"name":"onlyDeployer","line":44,"loc":{"start":{"line":44,"column":2},"end":{"line":47,"column":2}}},"6":{"name":"onlySummoners","line":48,"loc":{"start":{"line":48,"column":2},"end":{"line":56,"column":2}}},"7":{"name":"onlyWhenOpen","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":60,"column":2}}},"8":{"name":"constructor","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":79,"column":2}}},"9":{"name":"exit","line":81,"loc":{"start":{"line":81,"column":2},"end":{"line":92,"column":2}}},"10":{"name":"initializeToken","line":101,"loc":{"start":{"line":94,"column":2},"end":{"line":121,"column":2}}},"11":{"name":"join","line":123,"loc":{"start":{"line":123,"column":2},"end":{"line":165,"column":2}}},"12":{"name":"setController","line":167,"loc":{"start":{"line":167,"column":2},"end":{"line":172,"column":2}}},"13":{"name":"setMaxVotingLambda","line":174,"loc":{"start":{"line":174,"column":2},"end":{"line":176,"column":2}}},"14":{"name":"seedSummoning","line":185,"loc":{"start":{"line":180,"column":2},"end":{"line":192,"column":2}}},"15":{"name":"summon","line":194,"loc":{"start":{"line":194,"column":2},"end":{"line":209,"column":2}}},"16":{"name":"getDAO","line":213,"loc":{"start":{"line":213,"column":2},"end":{"line":215,"column":2}}},"17":{"name":"getEcosystem","line":217,"loc":{"start":{"line":217,"column":2},"end":{"line":219,"column":2}}},"18":{"name":"_getDAO","line":223,"loc":{"start":{"line":223,"column":2},"end":{"line":226,"column":2}}},"19":{"name":"_getEcosystem","line":228,"loc":{"start":{"line":228,"column":2},"end":{"line":230,"column":2}}},"20":{"name":"_getToken","line":232,"loc":{"start":{"line":232,"column":2},"end":{"line":236,"column":2}}},"21":{"name":null,"line":240,"loc":{"start":{"line":240,"column":2},"end":{"line":240,"column":31}}}},"statementMap":{"1":{"start":{"line":24,"column":4},"end":{"line":24,"column":39}},"2":{"start":{"line":25,"column":4},"end":{"line":25,"column":60}},"3":{"start":{"line":29,"column":4},"end":{"line":29,"column":57}},"4":{"start":{"line":30,"column":4},"end":{"line":30,"column":911}},"5":{"start":{"line":32,"column":4},"end":{"line":32,"column":77}},"6":{"start":{"line":36,"column":4},"end":{"line":36,"column":39}},"7":{"start":{"line":37,"column":4},"end":{"line":37,"column":73}},"8":{"start":{"line":41,"column":4},"end":{"line":41,"column":67}},"9":{"start":{"line":45,"column":4},"end":{"line":45,"column":63}},"10":{"start":{"line":49,"column":4},"end":{"line":49,"column":57}},"11":{"start":{"line":50,"column":4},"end":{"line":50,"column":52}},"12":{"start":{"line":51,"column":4},"end":{"line":51,"column":79}},"13":{"start":{"line":52,"column":4},"end":{"line":52,"column":64}},"14":{"start":{"line":54,"column":4},"end":{"line":54,"column":55}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":71}},"16":{"start":{"line":69,"column":4},"end":{"line":69,"column":49}},"17":{"start":{"line":70,"column":4},"end":{"line":70,"column":27}},"18":{"start":{"line":71,"column":4},"end":{"line":71,"column":24}},"19":{"start":{"line":72,"column":4},"end":{"line":72,"column":98}},"20":{"start":{"line":73,"column":4},"end":{"line":73,"column":40}},"21":{"start":{"line":74,"column":4},"end":{"line":74,"column":25}},"22":{"start":{"line":76,"column":4},"end":{"line":76,"column":74}},"23":{"start":{"line":77,"column":4},"end":{"line":77,"column":79}},"24":{"start":{"line":78,"column":4},"end":{"line":78,"column":74}},"25":{"start":{"line":83,"column":4},"end":{"line":83,"column":45}},"26":{"start":{"line":84,"column":4},"end":{"line":84,"column":77}},"27":{"start":{"line":85,"column":4},"end":{"line":85,"column":53}},"28":{"start":{"line":88,"column":4},"end":{"line":88,"column":72}},"29":{"start":{"line":89,"column":4},"end":{"line":89,"column":86}},"30":{"start":{"line":91,"column":4},"end":{"line":91,"column":41}},"31":{"start":{"line":102,"column":4},"end":{"line":102,"column":88}},"32":{"start":{"line":103,"column":4},"end":{"line":103,"column":57}},"33":{"start":{"line":105,"column":4},"end":{"line":105,"column":3531}},"34":{"start":{"line":116,"column":4},"end":{"line":116,"column":77}},"35":{"start":{"line":117,"column":4},"end":{"line":117,"column":38}},"36":{"start":{"line":118,"column":4},"end":{"line":118,"column":38}},"37":{"start":{"line":120,"column":4},"end":{"line":120,"column":51}},"38":{"start":{"line":124,"column":4},"end":{"line":124,"column":45}},"39":{"start":{"line":126,"column":4},"end":{"line":126,"column":4115}},"40":{"start":{"line":131,"column":4},"end":{"line":131,"column":77}},"41":{"start":{"line":132,"column":4},"end":{"line":132,"column":4326}},"42":{"start":{"line":141,"column":4},"end":{"line":141,"column":4772}},"43":{"start":{"line":151,"column":4},"end":{"line":151,"column":67}},"44":{"start":{"line":154,"column":4},"end":{"line":154,"column":65}},"45":{"start":{"line":155,"column":4},"end":{"line":155,"column":72}},"46":{"start":{"line":158,"column":4},"end":{"line":158,"column":57}},"47":{"start":{"line":159,"column":4},"end":{"line":159,"column":59}},"48":{"start":{"line":160,"column":4},"end":{"line":160,"column":18}},"49":{"start":{"line":161,"column":4},"end":{"line":161,"column":32}},"50":{"start":{"line":164,"column":4},"end":{"line":164,"column":53}},"51":{"start":{"line":168,"column":4},"end":{"line":168,"column":27}},"52":{"start":{"line":169,"column":4},"end":{"line":169,"column":83}},"53":{"start":{"line":170,"column":4},"end":{"line":170,"column":38}},"54":{"start":{"line":171,"column":4},"end":{"line":171,"column":38}},"55":{"start":{"line":175,"column":4},"end":{"line":175,"column":37}},"56":{"start":{"line":187,"column":4},"end":{"line":187,"column":45}},"57":{"start":{"line":189,"column":4},"end":{"line":189,"column":30}},"58":{"start":{"line":190,"column":4},"end":{"line":190,"column":62}},"59":{"start":{"line":191,"column":4},"end":{"line":191,"column":73}},"60":{"start":{"line":195,"column":4},"end":{"line":195,"column":98}},"61":{"start":{"line":197,"column":4},"end":{"line":197,"column":57}},"62":{"start":{"line":198,"column":4},"end":{"line":198,"column":52}},"63":{"start":{"line":199,"column":4},"end":{"line":199,"column":79}},"64":{"start":{"line":200,"column":4},"end":{"line":200,"column":6715}},"65":{"start":{"line":202,"column":4},"end":{"line":202,"column":77}},"66":{"start":{"line":204,"column":4},"end":{"line":204,"column":6835}},"67":{"start":{"line":205,"column":6},"end":{"line":205,"column":76}},"68":{"start":{"line":207,"column":4},"end":{"line":207,"column":22}},"69":{"start":{"line":208,"column":4},"end":{"line":208,"column":29}},"70":{"start":{"line":214,"column":4},"end":{"line":214,"column":20}},"71":{"start":{"line":218,"column":4},"end":{"line":218,"column":26}},"72":{"start":{"line":224,"column":4},"end":{"line":224,"column":57}},"73":{"start":{"line":225,"column":4},"end":{"line":225,"column":79}},"74":{"start":{"line":229,"column":4},"end":{"line":229,"column":70}},"75":{"start":{"line":233,"column":4},"end":{"line":233,"column":57}},"76":{"start":{"line":234,"column":4},"end":{"line":234,"column":7878}}},"branchMap":{"1":{"line":25,"type":"if","locations":[{"start":{"line":25,"column":4},"end":{"line":25,"column":4}},{"start":{"line":25,"column":4},"end":{"line":25,"column":4}}]},"2":{"line":32,"type":"if","locations":[{"start":{"line":32,"column":4},"end":{"line":32,"column":4}},{"start":{"line":32,"column":4},"end":{"line":32,"column":4}}]},"3":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":37,"column":4}},{"start":{"line":37,"column":4},"end":{"line":37,"column":4}}]},"4":{"line":41,"type":"if","locations":[{"start":{"line":41,"column":4},"end":{"line":41,"column":4}},{"start":{"line":41,"column":4},"end":{"line":41,"column":4}}]},"5":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":45,"column":4}},{"start":{"line":45,"column":4},"end":{"line":45,"column":4}}]},"6":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":54,"column":4}},{"start":{"line":54,"column":4},"end":{"line":54,"column":4}}]},"7":{"line":58,"type":"if","locations":[{"start":{"line":58,"column":4},"end":{"line":58,"column":4}},{"start":{"line":58,"column":4},"end":{"line":58,"column":4}}]},"8":{"line":102,"type":"if","locations":[{"start":{"line":102,"column":4},"end":{"line":102,"column":4}},{"start":{"line":102,"column":4},"end":{"line":102,"column":4}}]},"9":{"line":126,"type":"if","locations":[{"start":{"line":126,"column":4},"end":{"line":126,"column":4}},{"start":{"line":126,"column":4},"end":{"line":126,"column":4}}]},"10":{"line":151,"type":"if","locations":[{"start":{"line":151,"column":4},"end":{"line":151,"column":4}},{"start":{"line":151,"column":4},"end":{"line":151,"column":4}}]},"11":{"line":195,"type":"if","locations":[{"start":{"line":195,"column":4},"end":{"line":195,"column":4}},{"start":{"line":195,"column":4},"end":{"line":195,"column":4}}]}}},"src/core/ElasticDAOFactory.sol":{"l":{"21":7,"22":6,"26":3,"27":3,"46":364,"50":364,"52":281,"53":281,"54":281,"58":6,"59":6,"63":3,"65":3,"66":3},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAOFactory.sol","s":{"1":7,"2":3,"3":3,"4":364,"5":364,"6":281,"7":281,"8":281,"9":6,"10":6,"11":3,"12":3,"13":3},"b":{"1":[6,1]},"f":{"1":7,"2":3,"3":364,"4":6,"5":3,"6":0},"fnMap":{"1":{"name":"onlyDeployer","line":20,"loc":{"start":{"line":20,"column":2},"end":{"line":23,"column":2}}},"2":{"name":"constructor","line":25,"loc":{"start":{"line":25,"column":2},"end":{"line":28,"column":2}}},"3":{"name":"deployDAOAndToken","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":55,"column":2}}},"4":{"name":"updateFeeAddress","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":60,"column":2}}},"5":{"name":"collectFees","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":67,"column":2}}},"6":{"name":null,"line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":71,"column":31}}}},"statementMap":{"1":{"start":{"line":21,"column":4},"end":{"line":21,"column":63}},"2":{"start":{"line":26,"column":4},"end":{"line":26,"column":24}},"3":{"start":{"line":27,"column":4},"end":{"line":27,"column":49}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":1354}},"5":{"start":{"line":50,"column":4},"end":{"line":50,"column":96}},"6":{"start":{"line":52,"column":4},"end":{"line":52,"column":49}},"7":{"start":{"line":53,"column":4},"end":{"line":53,"column":55}},"8":{"start":{"line":54,"column":4},"end":{"line":54,"column":41}},"9":{"start":{"line":58,"column":4},"end":{"line":58,"column":37}},"10":{"start":{"line":59,"column":4},"end":{"line":59,"column":40}},"11":{"start":{"line":63,"column":4},"end":{"line":63,"column":42}},"12":{"start":{"line":65,"column":4},"end":{"line":65,"column":30}},"13":{"start":{"line":66,"column":4},"end":{"line":66,"column":51}}},"branchMap":{"1":{"line":21,"type":"if","locations":[{"start":{"line":21,"column":4},"end":{"line":21,"column":4}},{"start":{"line":21,"column":4},"end":{"line":21,"column":4}}]}}},"src/interfaces/IElasticToken.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IElasticToken.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/interfaces/IERC20.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IERC20.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/libraries/ElasticMath.sol":{"l":{"16":16,"40":16,"42":16,"45":16,"48":16,"51":16,"54":16,"57":16,"60":16,"63":16,"66":16,"74":37,"92":31,"105":16,"122":1529,"132":3220,"142":548},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/ElasticMath.sol","s":{"1":16,"2":16,"3":16,"4":16,"5":16,"6":16,"7":16,"8":16,"9":16,"10":16,"11":16,"12":37,"13":31,"14":16,"15":1529,"16":3220,"17":548},"b":{},"f":{"1":16,"2":16,"3":37,"4":31,"5":16,"6":1529,"7":3220,"8":548},"fnMap":{"1":{"name":"capitalDelta","line":11,"loc":{"start":{"line":11,"column":2},"end":{"line":17,"column":2}}},"2":{"name":"deltaE","line":32,"loc":{"start":{"line":32,"column":2},"end":{"line":67,"column":2}}},"3":{"name":"lambdaFromT","line":69,"loc":{"start":{"line":69,"column":2},"end":{"line":75,"column":2}}},"4":{"name":"mDash","line":87,"loc":{"start":{"line":87,"column":2},"end":{"line":93,"column":2}}},"5":{"name":"revamp","line":104,"loc":{"start":{"line":104,"column":2},"end":{"line":106,"column":2}}},"6":{"name":"t","line":117,"loc":{"start":{"line":117,"column":2},"end":{"line":123,"column":2}}},"7":{"name":"wmul","line":131,"loc":{"start":{"line":131,"column":2},"end":{"line":133,"column":2}}},"8":{"name":"wdiv","line":141,"loc":{"start":{"line":141,"column":2},"end":{"line":143,"column":2}}}},"statementMap":{"1":{"start":{"line":16,"column":4},"end":{"line":16,"column":53}},"2":{"start":{"line":40,"column":4},"end":{"line":40,"column":58}},"3":{"start":{"line":42,"column":4},"end":{"line":42,"column":42}},"4":{"start":{"line":45,"column":4},"end":{"line":45,"column":34}},"5":{"start":{"line":48,"column":4},"end":{"line":48,"column":31}},"6":{"start":{"line":51,"column":4},"end":{"line":51,"column":44}},"7":{"start":{"line":54,"column":4},"end":{"line":54,"column":26}},"8":{"start":{"line":57,"column":4},"end":{"line":57,"column":35}},"9":{"start":{"line":60,"column":4},"end":{"line":60,"column":34}},"10":{"start":{"line":63,"column":4},"end":{"line":63,"column":27}},"11":{"start":{"line":66,"column":4},"end":{"line":66,"column":22}},"12":{"start":{"line":74,"column":4},"end":{"line":74,"column":30}},"13":{"start":{"line":92,"column":4},"end":{"line":92,"column":44}},"14":{"start":{"line":105,"column":4},"end":{"line":105,"column":57}},"15":{"start":{"line":122,"column":4},"end":{"line":122,"column":35}},"16":{"start":{"line":132,"column":4},"end":{"line":132,"column":90}},"17":{"start":{"line":142,"column":4},"end":{"line":142,"column":72}}},"branchMap":{}},"src/libraries/SafeMath.sol":{"l":{"29":15344,"30":15344,"32":15344,"46":108,"64":108,"65":108,"67":108,"84":4040,"85":0,"88":4040,"89":4040,"91":4040,"107":0,"127":0,"128":0,"131":0,"147":0,"167":0,"168":0,"172":16,"173":0,"175":0,"177":0,"179":16,"180":16,"181":16,"189":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/SafeMath.sol","s":{"1":15344,"2":15344,"3":15344,"4":108,"5":108,"6":108,"7":108,"8":4040,"9":0,"10":4040,"11":4040,"12":4040,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":16,"21":0,"22":16,"23":0,"24":16,"25":0,"26":16,"27":16,"28":272,"29":16,"30":0},"b":{"1":[15344,0],"2":[108,0],"3":[0,4040],"4":[4040,0],"5":[0,0],"6":[0,0],"7":[0,16],"8":[0,16],"9":[0,16]},"f":{"1":15344,"2":108,"3":108,"4":4040,"5":0,"6":0,"7":0,"8":0,"9":16,"10":0},"fnMap":{"1":{"name":"add","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":33,"column":2}}},"2":{"name":"sub","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":2}}},"3":{"name":"sub","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":68,"column":2}}},"4":{"name":"mul","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":92,"column":2}}},"5":{"name":"div","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":108,"column":2}}},"6":{"name":"div","line":122,"loc":{"start":{"line":122,"column":2},"end":{"line":132,"column":2}}},"7":{"name":"mod","line":146,"loc":{"start":{"line":146,"column":2},"end":{"line":148,"column":2}}},"8":{"name":"mod","line":162,"loc":{"start":{"line":162,"column":2},"end":{"line":169,"column":2}}},"9":{"name":"pow","line":171,"loc":{"start":{"line":171,"column":2},"end":{"line":183,"column":2}}},"10":{"name":"max","line":188,"loc":{"start":{"line":188,"column":2},"end":{"line":190,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":21}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":49}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":12}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":54}},"5":{"start":{"line":64,"column":4},"end":{"line":64,"column":32}},"6":{"start":{"line":65,"column":4},"end":{"line":65,"column":21}},"7":{"start":{"line":67,"column":4},"end":{"line":67,"column":12}},"8":{"start":{"line":84,"column":4},"end":{"line":84,"column":2356}},"9":{"start":{"line":85,"column":6},"end":{"line":85,"column":14}},"10":{"start":{"line":88,"column":4},"end":{"line":88,"column":21}},"11":{"start":{"line":89,"column":4},"end":{"line":89,"column":59}},"12":{"start":{"line":91,"column":4},"end":{"line":91,"column":12}},"13":{"start":{"line":107,"column":4},"end":{"line":107,"column":50}},"14":{"start":{"line":127,"column":4},"end":{"line":127,"column":31}},"15":{"start":{"line":128,"column":4},"end":{"line":128,"column":21}},"16":{"start":{"line":131,"column":4},"end":{"line":131,"column":12}},"17":{"start":{"line":147,"column":4},"end":{"line":147,"column":48}},"18":{"start":{"line":167,"column":4},"end":{"line":167,"column":32}},"19":{"start":{"line":168,"column":4},"end":{"line":168,"column":16}},"20":{"start":{"line":172,"column":4},"end":{"line":172,"column":5030}},"21":{"start":{"line":173,"column":6},"end":{"line":173,"column":14}},"22":{"start":{"line":174,"column":11},"end":{"line":174,"column":5078}},"23":{"start":{"line":175,"column":6},"end":{"line":175,"column":17}},"24":{"start":{"line":176,"column":11},"end":{"line":176,"column":5129}},"25":{"start":{"line":177,"column":6},"end":{"line":177,"column":14}},"26":{"start":{"line":179,"column":6},"end":{"line":179,"column":22}},"27":{"start":{"line":180,"column":6},"end":{"line":180,"column":71}},"28":{"start":{"line":180,"column":55},"end":{"line":180,"column":70}},"29":{"start":{"line":181,"column":6},"end":{"line":181,"column":14}},"30":{"start":{"line":189,"column":4},"end":{"line":189,"column":25}}},"branchMap":{"1":{"line":30,"type":"if","locations":[{"start":{"line":30,"column":4},"end":{"line":30,"column":4}},{"start":{"line":30,"column":4},"end":{"line":30,"column":4}}]},"2":{"line":64,"type":"if","locations":[{"start":{"line":64,"column":4},"end":{"line":64,"column":4}},{"start":{"line":64,"column":4},"end":{"line":64,"column":4}}]},"3":{"line":84,"type":"if","locations":[{"start":{"line":84,"column":4},"end":{"line":84,"column":4}},{"start":{"line":84,"column":4},"end":{"line":84,"column":4}}]},"4":{"line":89,"type":"if","locations":[{"start":{"line":89,"column":4},"end":{"line":89,"column":4}},{"start":{"line":89,"column":4},"end":{"line":89,"column":4}}]},"5":{"line":127,"type":"if","locations":[{"start":{"line":127,"column":4},"end":{"line":127,"column":4}},{"start":{"line":127,"column":4},"end":{"line":127,"column":4}}]},"6":{"line":167,"type":"if","locations":[{"start":{"line":167,"column":4},"end":{"line":167,"column":4}},{"start":{"line":167,"column":4},"end":{"line":167,"column":4}}]},"7":{"line":172,"type":"if","locations":[{"start":{"line":172,"column":4},"end":{"line":172,"column":4}},{"start":{"line":172,"column":4},"end":{"line":172,"column":4}}]},"8":{"line":174,"type":"if","locations":[{"start":{"line":174,"column":11},"end":{"line":174,"column":11}},{"start":{"line":174,"column":11},"end":{"line":174,"column":11}}]},"9":{"line":176,"type":"if","locations":[{"start":{"line":176,"column":11},"end":{"line":176,"column":11}},{"start":{"line":176,"column":11},"end":{"line":176,"column":11}}]}}},"src/models/DAO.sol":{"l":{"32":2496,"33":2496,"35":2496,"36":2496,"37":2496,"38":2496,"41":2496,"50":2,"54":1008,"64":790,"72":748,"77":748,"78":748,"79":748,"81":748,"82":412,"83":1236,"84":1236,"88":748,"92":2498},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/DAO.sol","s":{"1":2496,"2":2496,"3":2496,"4":2496,"5":2496,"6":2496,"7":2496,"8":2,"9":1008,"10":790,"11":748,"12":748,"13":748,"14":748,"15":748,"16":412,"17":1236,"18":1236,"19":748,"20":2498},"b":{"1":[2496,0],"2":[748,0],"3":[412,336]},"f":{"1":2496,"2":2,"3":1008,"4":790,"5":748,"6":2498},"fnMap":{"1":{"name":"deserialize","line":27,"loc":{"start":{"line":27,"column":2},"end":{"line":42,"column":2}}},"2":{"name":"exists","line":49,"loc":{"start":{"line":49,"column":2},"end":{"line":51,"column":2}}},"3":{"name":"getSummoner","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":55,"column":2}}},"4":{"name":"isSummoner","line":63,"loc":{"start":{"line":63,"column":2},"end":{"line":65,"column":2}}},"5":{"name":"serialize","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":89,"column":2}}},"6":{"name":"_exists","line":91,"loc":{"start":{"line":91,"column":2},"end":{"line":93,"column":2}}}},"statementMap":{"1":{"start":{"line":32,"column":4},"end":{"line":32,"column":22}},"2":{"start":{"line":33,"column":4},"end":{"line":33,"column":32}},"3":{"start":{"line":35,"column":4},"end":{"line":35,"column":903}},"4":{"start":{"line":36,"column":6},"end":{"line":36,"column":66}},"5":{"start":{"line":37,"column":6},"end":{"line":37,"column":90}},"6":{"start":{"line":38,"column":6},"end":{"line":38,"column":72}},"7":{"start":{"line":41,"column":4},"end":{"line":41,"column":17}},"8":{"start":{"line":50,"column":4},"end":{"line":50,"column":25}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":76}},"10":{"start":{"line":64,"column":4},"end":{"line":64,"column":82}},"11":{"start":{"line":72,"column":4},"end":{"line":72,"column":2126}},"12":{"start":{"line":77,"column":4},"end":{"line":77,"column":69}},"13":{"start":{"line":78,"column":4},"end":{"line":78,"column":93}},"14":{"start":{"line":79,"column":4},"end":{"line":79,"column":75}},"15":{"start":{"line":81,"column":4},"end":{"line":81,"column":2514}},"16":{"start":{"line":82,"column":6},"end":{"line":82,"column":2581}},"17":{"start":{"line":83,"column":8},"end":{"line":83,"column":89}},"18":{"start":{"line":84,"column":8},"end":{"line":84,"column":90}},"19":{"start":{"line":88,"column":4},"end":{"line":88,"column":62}},"20":{"start":{"line":92,"column":4},"end":{"line":92,"column":58}}},"branchMap":{"1":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":35,"column":4}},{"start":{"line":35,"column":4},"end":{"line":35,"column":4}}]},"2":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":72,"column":4}},{"start":{"line":72,"column":4},"end":{"line":72,"column":4}}]},"3":{"line":81,"type":"if","locations":[{"start":{"line":81,"column":4},"end":{"line":81,"column":4}},{"start":{"line":81,"column":4},"end":{"line":81,"column":4}}]}}},"src/models/Ecosystem.sol":{"l":{"33":9446,"34":9446,"35":9446,"38":9446,"41":9446,"42":9446,"45":9446,"48":9446,"53":9446,"62":1,"70":830,"72":830,"79":830,"83":830,"84":830,"88":830,"92":830,"97":830,"101":10277},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Ecosystem.sol","s":{"1":9446,"2":9446,"3":9446,"4":9446,"5":9446,"6":9446,"7":9446,"8":9446,"9":9446,"10":1,"11":830,"12":830,"13":830,"14":830,"15":830,"16":830,"17":830,"18":830,"19":10277},"b":{"1":[9446,0],"2":[830,0]},"f":{"1":9446,"2":1,"3":830,"4":10277},"fnMap":{"1":{"name":"deserialize","line":32,"loc":{"start":{"line":32,"column":2},"end":{"line":54,"column":2}}},"2":{"name":"exists","line":61,"loc":{"start":{"line":61,"column":2},"end":{"line":63,"column":2}}},"3":{"name":"serialize","line":69,"loc":{"start":{"line":69,"column":2},"end":{"line":98,"column":2}}},"4":{"name":"_exists","line":100,"loc":{"start":{"line":100,"column":2},"end":{"line":102,"column":2}}}},"statementMap":{"1":{"start":{"line":33,"column":4},"end":{"line":33,"column":1065}},"2":{"start":{"line":34,"column":6},"end":{"line":34,"column":36}},"3":{"start":{"line":35,"column":6},"end":{"line":35,"column":1140}},"4":{"start":{"line":38,"column":6},"end":{"line":38,"column":1268}},"5":{"start":{"line":41,"column":6},"end":{"line":41,"column":49}},"6":{"start":{"line":42,"column":6},"end":{"line":42,"column":1440}},"7":{"start":{"line":45,"column":6},"end":{"line":45,"column":1574}},"8":{"start":{"line":48,"column":6},"end":{"line":48,"column":1710}},"9":{"start":{"line":53,"column":4},"end":{"line":53,"column":17}},"10":{"start":{"line":62,"column":4},"end":{"line":62,"column":31}},"11":{"start":{"line":70,"column":4},"end":{"line":70,"column":50}},"12":{"start":{"line":72,"column":4},"end":{"line":72,"column":2329}},"13":{"start":{"line":79,"column":4},"end":{"line":79,"column":2536}},"14":{"start":{"line":83,"column":4},"end":{"line":83,"column":98}},"15":{"start":{"line":84,"column":4},"end":{"line":84,"column":2764}},"16":{"start":{"line":88,"column":4},"end":{"line":88,"column":2897}},"17":{"start":{"line":92,"column":4},"end":{"line":92,"column":3032}},"18":{"start":{"line":97,"column":4},"end":{"line":97,"column":68}},"19":{"start":{"line":101,"column":4},"end":{"line":101,"column":64}}},"branchMap":{"1":{"line":33,"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":33,"column":4}},{"start":{"line":33,"column":4},"end":{"line":33,"column":4}}]},"2":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":72,"column":4}},{"start":{"line":72,"column":4},"end":{"line":72,"column":4}}]}}},"src/models/EternalModel.sol":{"l":{"30":37132,"37":10550,"44":48238,"51":22518,"58":0,"65":0,"77":18056,"85":4616,"93":5386,"101":6999,"109":0,"117":0,"128":0,"135":0,"142":0,"149":0,"156":0,"163":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/EternalModel.sol","s":{"1":37132,"2":10550,"3":48238,"4":22518,"5":0,"6":0,"7":18056,"8":4616,"9":5386,"10":6999,"11":0,"12":0},"b":{},"f":{"1":37132,"2":10550,"3":48238,"4":22518,"5":0,"6":0,"7":18056,"8":4616,"9":5386,"10":6999,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0},"fnMap":{"1":{"name":"getUint","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":31,"column":2}}},"2":{"name":"getString","line":36,"loc":{"start":{"line":36,"column":2},"end":{"line":38,"column":2}}},"3":{"name":"getAddress","line":43,"loc":{"start":{"line":43,"column":2},"end":{"line":45,"column":2}}},"4":{"name":"getBool","line":50,"loc":{"start":{"line":50,"column":2},"end":{"line":52,"column":2}}},"5":{"name":"getInt","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":59,"column":2}}},"6":{"name":"getBytes","line":64,"loc":{"start":{"line":64,"column":2},"end":{"line":66,"column":2}}},"7":{"name":"setUint","line":76,"loc":{"start":{"line":76,"column":2},"end":{"line":78,"column":2}}},"8":{"name":"setString","line":84,"loc":{"start":{"line":84,"column":2},"end":{"line":86,"column":2}}},"9":{"name":"setAddress","line":92,"loc":{"start":{"line":92,"column":2},"end":{"line":94,"column":2}}},"10":{"name":"setBool","line":100,"loc":{"start":{"line":100,"column":2},"end":{"line":102,"column":2}}},"11":{"name":"setInt","line":108,"loc":{"start":{"line":108,"column":2},"end":{"line":110,"column":2}}},"12":{"name":"setBytes","line":116,"loc":{"start":{"line":116,"column":2},"end":{"line":118,"column":2}}},"13":{"name":"deleteUint","line":127,"loc":{"start":{"line":127,"column":2},"end":{"line":129,"column":2}}},"14":{"name":"deleteString","line":134,"loc":{"start":{"line":134,"column":2},"end":{"line":136,"column":2}}},"15":{"name":"deleteAddress","line":141,"loc":{"start":{"line":141,"column":2},"end":{"line":143,"column":2}}},"16":{"name":"deleteBool","line":148,"loc":{"start":{"line":148,"column":2},"end":{"line":150,"column":2}}},"17":{"name":"deleteInt","line":155,"loc":{"start":{"line":155,"column":2},"end":{"line":157,"column":2}}},"18":{"name":"deleteBytes","line":162,"loc":{"start":{"line":162,"column":2},"end":{"line":164,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":30}},"2":{"start":{"line":37,"column":4},"end":{"line":37,"column":32}},"3":{"start":{"line":44,"column":4},"end":{"line":44,"column":33}},"4":{"start":{"line":51,"column":4},"end":{"line":51,"column":30}},"5":{"start":{"line":58,"column":4},"end":{"line":58,"column":29}},"6":{"start":{"line":65,"column":4},"end":{"line":65,"column":31}},"7":{"start":{"line":77,"column":4},"end":{"line":77,"column":31}},"8":{"start":{"line":85,"column":4},"end":{"line":85,"column":33}},"9":{"start":{"line":93,"column":4},"end":{"line":93,"column":34}},"10":{"start":{"line":101,"column":4},"end":{"line":101,"column":31}},"11":{"start":{"line":109,"column":4},"end":{"line":109,"column":30}},"12":{"start":{"line":117,"column":4},"end":{"line":117,"column":32}}},"branchMap":{}},"src/models/Token.sol":{"l":{"42":4031,"43":4031,"45":4031,"46":4027,"47":4027,"48":4027,"49":4027,"50":4027,"51":4027,"52":4027,"53":4027,"54":4027,"55":4027,"58":4031,"62":451,"66":1544,"68":1544,"69":1544,"77":1934,"84":1934,"85":1934,"86":1934,"87":1933,"88":1933,"89":1927,"90":1927,"91":1900,"93":1893,"99":1122,"103":4897},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Token.sol","s":{"1":4031,"2":4031,"3":4031,"4":4027,"5":4027,"6":4027,"7":4027,"8":4027,"9":4027,"10":4027,"11":4027,"12":4027,"13":4027,"14":4031,"15":451,"16":1544,"17":1544,"18":1544,"19":1934,"20":1934,"21":1934,"22":1934,"23":1933,"24":1933,"25":1927,"26":1927,"27":1900,"28":1893,"29":1122,"30":4897},"b":{"1":[4027,4],"2":[1544,0],"3":[1934,0]},"f":{"1":4031,"2":451,"3":1544,"4":1934,"5":1122,"6":4897},"fnMap":{"1":{"name":"deserialize","line":37,"loc":{"start":{"line":37,"column":2},"end":{"line":59,"column":2}}},"2":{"name":"exists","line":61,"loc":{"start":{"line":61,"column":2},"end":{"line":63,"column":2}}},"3":{"name":"incrementCounter","line":65,"loc":{"start":{"line":65,"column":2},"end":{"line":70,"column":2}}},"4":{"name":"serialize","line":76,"loc":{"start":{"line":76,"column":2},"end":{"line":94,"column":2}}},"5":{"name":"updateNumberOfTokenHolders","line":96,"loc":{"start":{"line":96,"column":2},"end":{"line":100,"column":2}}},"6":{"name":"_exists","line":102,"loc":{"start":{"line":102,"column":2},"end":{"line":104,"column":2}}}},"statementMap":{"1":{"start":{"line":42,"column":4},"end":{"line":42,"column":22}},"2":{"start":{"line":43,"column":4},"end":{"line":43,"column":32}},"3":{"start":{"line":45,"column":4},"end":{"line":45,"column":1269}},"4":{"start":{"line":46,"column":6},"end":{"line":46,"column":70}},"5":{"start":{"line":47,"column":6},"end":{"line":47,"column":64}},"6":{"start":{"line":48,"column":6},"end":{"line":48,"column":76}},"7":{"start":{"line":49,"column":6},"end":{"line":49,"column":58}},"8":{"start":{"line":50,"column":6},"end":{"line":50,"column":68}},"9":{"start":{"line":51,"column":6},"end":{"line":51,"column":58}},"10":{"start":{"line":52,"column":6},"end":{"line":52,"column":90}},"11":{"start":{"line":53,"column":6},"end":{"line":53,"column":66}},"12":{"start":{"line":54,"column":6},"end":{"line":54,"column":96}},"13":{"start":{"line":55,"column":6},"end":{"line":55,"column":70}},"14":{"start":{"line":58,"column":4},"end":{"line":58,"column":17}},"15":{"start":{"line":62,"column":4},"end":{"line":62,"column":25}},"16":{"start":{"line":66,"column":4},"end":{"line":66,"column":65}},"17":{"start":{"line":68,"column":4},"end":{"line":68,"column":76}},"18":{"start":{"line":69,"column":4},"end":{"line":69,"column":83}},"19":{"start":{"line":77,"column":4},"end":{"line":77,"column":2629}},"20":{"start":{"line":84,"column":4},"end":{"line":84,"column":69}},"21":{"start":{"line":85,"column":4},"end":{"line":85,"column":73}},"22":{"start":{"line":86,"column":4},"end":{"line":86,"column":67}},"23":{"start":{"line":87,"column":4},"end":{"line":87,"column":79}},"24":{"start":{"line":88,"column":4},"end":{"line":88,"column":61}},"25":{"start":{"line":89,"column":4},"end":{"line":89,"column":71}},"26":{"start":{"line":90,"column":4},"end":{"line":90,"column":61}},"27":{"start":{"line":91,"column":4},"end":{"line":91,"column":93}},"28":{"start":{"line":93,"column":4},"end":{"line":93,"column":62}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":92}},"30":{"start":{"line":103,"column":4},"end":{"line":103,"column":58}}},"branchMap":{"1":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":45,"column":4}},{"start":{"line":45,"column":4},"end":{"line":45,"column":4}}]},"2":{"line":66,"type":"if","locations":[{"start":{"line":66,"column":4},"end":{"line":66,"column":4}},{"start":{"line":66,"column":4},"end":{"line":66,"column":4}}]},"3":{"line":77,"type":"if","locations":[{"start":{"line":77,"column":4},"end":{"line":77,"column":4}},{"start":{"line":77,"column":4},"end":{"line":77,"column":4}}]}}},"src/models/TokenHolder.sol":{"l":{"29":1560,"30":1560,"31":1560,"33":1560,"34":438,"35":438,"38":1560,"46":0,"54":1544,"56":1544,"57":1544,"59":1544,"67":1560},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/TokenHolder.sol","s":{"1":1560,"2":1560,"3":1560,"4":1560,"5":438,"6":438,"7":1560,"8":0,"9":1544,"10":1544,"11":1544,"12":1544,"13":1560},"b":{"1":[438,1122],"2":[1544,0]},"f":{"1":1560,"2":0,"3":1544,"4":1560},"fnMap":{"1":{"name":"deserialize","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":39,"column":2}}},"2":{"name":"exists","line":41,"loc":{"start":{"line":41,"column":2},"end":{"line":47,"column":2}}},"3":{"name":"serialize","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":60,"column":2}}},"4":{"name":"_exists","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":68,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":28}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":32}},"3":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":1003}},"5":{"start":{"line":34,"column":6},"end":{"line":34,"column":98}},"6":{"start":{"line":35,"column":6},"end":{"line":35,"column":96}},"7":{"start":{"line":38,"column":4},"end":{"line":38,"column":17}},"8":{"start":{"line":46,"column":4},"end":{"line":46,"column":48}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":71}},"10":{"start":{"line":56,"column":4},"end":{"line":56,"column":95}},"11":{"start":{"line":57,"column":4},"end":{"line":57,"column":93}},"12":{"start":{"line":59,"column":4},"end":{"line":59,"column":84}},"13":{"start":{"line":67,"column":4},"end":{"line":67,"column":74}}},"branchMap":{"1":{"line":33,"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":33,"column":4}},{"start":{"line":33,"column":4},"end":{"line":33,"column":4}}]},"2":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":54,"column":4}},{"start":{"line":54,"column":4},"end":{"line":54,"column":4}}]}}},"src/services/Configurator.sol":{"l":{"30":412,"31":412,"32":412,"33":412,"34":412,"35":412,"36":412,"37":412,"38":412,"50":412,"52":412,"55":412,"56":412,"57":412,"58":412,"61":412,"63":412,"64":412,"89":442,"90":442,"91":442,"92":442,"93":442,"94":442,"95":442,"96":442,"97":442,"98":442,"99":442,"101":415,"102":415,"103":415,"105":341},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/services/Configurator.sol","s":{"1":412,"2":412,"3":412,"4":412,"5":412,"6":412,"7":412,"8":412,"9":412,"10":412,"11":412,"12":412,"13":412,"14":412,"15":412,"16":412,"17":412,"18":412,"19":442,"20":442,"21":442,"22":442,"23":442,"24":442,"25":442,"26":442,"27":442,"28":442,"29":442,"30":415,"31":415,"32":415,"33":341},"b":{},"f":{"1":412,"2":412,"3":442},"fnMap":{"1":{"name":"buildDAO","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":39,"column":2}}},"2":{"name":"buildEcosystem","line":46,"loc":{"start":{"line":46,"column":2},"end":{"line":65,"column":2}}},"3":{"name":"buildToken","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":106,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":52}},"2":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":29}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":19}},"5":{"start":{"line":34,"column":4},"end":{"line":34,"column":45}},"6":{"start":{"line":35,"column":4},"end":{"line":35,"column":23}},"7":{"start":{"line":36,"column":4},"end":{"line":36,"column":29}},"8":{"start":{"line":37,"column":4},"end":{"line":37,"column":28}},"9":{"start":{"line":38,"column":4},"end":{"line":38,"column":14}},"10":{"start":{"line":50,"column":4},"end":{"line":50,"column":74}},"11":{"start":{"line":52,"column":4},"end":{"line":52,"column":36}},"12":{"start":{"line":55,"column":4},"end":{"line":55,"column":55}},"13":{"start":{"line":56,"column":4},"end":{"line":56,"column":67}},"14":{"start":{"line":57,"column":4},"end":{"line":57,"column":71}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":59}},"16":{"start":{"line":61,"column":4},"end":{"line":61,"column":63}},"17":{"start":{"line":63,"column":4},"end":{"line":63,"column":40}},"18":{"start":{"line":64,"column":4},"end":{"line":64,"column":20}},"19":{"start":{"line":89,"column":4},"end":{"line":89,"column":60}},"20":{"start":{"line":90,"column":4},"end":{"line":90,"column":21}},"21":{"start":{"line":91,"column":4},"end":{"line":91,"column":31}},"22":{"start":{"line":92,"column":4},"end":{"line":92,"column":33}},"23":{"start":{"line":93,"column":4},"end":{"line":93,"column":15}},"24":{"start":{"line":94,"column":4},"end":{"line":94,"column":19}},"25":{"start":{"line":95,"column":4},"end":{"line":95,"column":32}},"26":{"start":{"line":96,"column":4},"end":{"line":96,"column":47}},"27":{"start":{"line":97,"column":4},"end":{"line":97,"column":21}},"28":{"start":{"line":98,"column":4},"end":{"line":98,"column":25}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":97}},"30":{"start":{"line":101,"column":4},"end":{"line":101,"column":49}},"31":{"start":{"line":102,"column":4},"end":{"line":102,"column":68}},"32":{"start":{"line":103,"column":4},"end":{"line":103,"column":32}},"33":{"start":{"line":105,"column":4},"end":{"line":105,"column":16}}},"branchMap":{}},"src/tokens/ElasticGovernanceToken.sol":{"l":{"28":706,"29":706,"33":29,"34":28,"38":1477,"39":1476,"43":442,"44":442,"45":442,"46":442,"59":3,"78":6,"79":6,"88":13,"89":13,"90":13,"92":13,"101":1,"102":1,"106":2,"107":2,"108":2,"109":2,"111":2,"112":1,"114":1,"130":14,"131":12,"146":14,"147":14,"155":1,"165":3,"167":3,"169":3,"170":3,"180":6,"181":6,"191":3,"193":3,"208":1473,"209":1380,"217":1,"221":1,"225":353,"229":353,"238":1,"251":18,"252":18,"256":1,"257":1,"269":6,"270":6,"288":14,"290":14,"292":13,"293":13,"295":13,"298":10,"308":15,"309":15,"311":15,"313":15,"317":14,"318":14,"319":14,"323":28,"324":28,"325":28,"326":28,"327":28,"329":28,"331":28,"332":28,"334":28,"335":28,"336":26,"340":3,"341":3,"342":3,"346":1476,"347":1476,"348":1476,"349":1476,"350":1476,"352":1476,"354":1476,"356":1476,"357":1476,"359":1476,"360":1476,"361":1474,"363":1444,"371":20,"372":20,"373":20,"375":20,"376":20,"377":20,"378":20,"380":20,"381":20,"383":20,"384":20,"386":20,"387":20,"388":20,"389":19,"390":19,"392":19,"401":1544,"403":1544,"404":1544,"406":1544,"407":1496,"409":48,"412":1544,"414":1544,"423":1538,"424":1122,"427":1508,"428":0,"435":4682,"439":1560,"440":1560,"449":54,"450":54},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/tokens/ElasticGovernanceToken.sol","s":{"1":706,"2":29,"3":1477,"4":442,"5":442,"6":442,"7":442,"8":3,"9":6,"10":6,"11":13,"12":13,"13":13,"14":13,"15":1,"16":1,"17":2,"18":2,"19":2,"20":2,"21":2,"22":1,"23":1,"24":14,"25":12,"26":14,"27":14,"28":1,"29":3,"30":3,"31":3,"32":3,"33":6,"34":6,"35":3,"36":3,"37":1473,"38":1380,"39":1,"40":1,"41":353,"42":353,"43":1,"44":18,"45":18,"46":1,"47":1,"48":6,"49":6,"50":14,"51":14,"52":13,"53":13,"54":13,"55":10,"56":15,"57":15,"58":15,"59":15,"60":14,"61":14,"62":14,"63":28,"64":28,"65":28,"66":28,"67":28,"68":28,"69":28,"70":28,"71":28,"72":28,"73":26,"74":3,"75":3,"76":3,"77":1476,"78":1476,"79":1476,"80":1476,"81":1476,"82":1476,"83":1476,"84":1476,"85":1476,"86":1476,"87":1476,"88":1474,"89":1444,"90":20,"91":20,"92":20,"93":20,"94":20,"95":20,"96":20,"97":20,"98":20,"99":20,"100":20,"101":20,"102":20,"103":20,"104":19,"105":19,"106":19,"107":1544,"108":1544,"109":1544,"110":1544,"111":1496,"112":48,"113":1544,"114":1544,"115":1538,"116":1122,"117":1508,"118":0,"119":4682,"120":1560,"121":1560,"122":54,"123":54},"b":{"1":[706,0],"2":[28,1],"3":[1476,1],"4":[1,1],"5":[3,0],"6":[14,0],"7":[13,0],"8":[15,0],"9":[15,0],"10":[1496,48],"11":[1122,416],"12":[0,1508]},"f":{"1":706,"2":29,"3":1477,"4":442,"5":3,"6":6,"7":13,"8":1,"9":2,"10":14,"11":14,"12":1,"13":3,"14":6,"15":3,"16":1473,"17":1,"18":1,"19":353,"20":353,"21":1,"22":18,"23":1,"24":6,"25":14,"26":15,"27":14,"28":28,"29":3,"30":1476,"31":20,"32":1544,"33":1538,"34":4682,"35":1560,"36":54},"fnMap":{"1":{"name":"onlyDAO","line":27,"loc":{"start":{"line":27,"column":2},"end":{"line":30,"column":2}}},"2":{"name":"onlyDAOorBurner","line":32,"loc":{"start":{"line":32,"column":2},"end":{"line":35,"column":2}}},"3":{"name":"onlyDAOorMinter","line":37,"loc":{"start":{"line":37,"column":2},"end":{"line":40,"column":2}}},"4":{"name":"constructor","line":42,"loc":{"start":{"line":42,"column":2},"end":{"line":47,"column":2}}},"5":{"name":"allowance","line":58,"loc":{"start":{"line":58,"column":2},"end":{"line":60,"column":2}}},"6":{"name":"approve","line":77,"loc":{"start":{"line":77,"column":2},"end":{"line":80,"column":2}}},"7":{"name":"balanceOf","line":87,"loc":{"start":{"line":87,"column":2},"end":{"line":93,"column":2}}},"8":{"name":"balanceOfInShares","line":100,"loc":{"start":{"line":100,"column":2},"end":{"line":103,"column":2}}},"9":{"name":"balanceOfVoting","line":105,"loc":{"start":{"line":105,"column":2},"end":{"line":116,"column":2}}},"10":{"name":"burn","line":127,"loc":{"start":{"line":124,"column":2},"end":{"line":132,"column":2}}},"11":{"name":"burnShares","line":143,"loc":{"start":{"line":140,"column":2},"end":{"line":148,"column":2}}},"12":{"name":"decimals","line":154,"loc":{"start":{"line":154,"column":2},"end":{"line":156,"column":2}}},"13":{"name":"decreaseAllowance","line":164,"loc":{"start":{"line":164,"column":2},"end":{"line":171,"column":2}}},"14":{"name":"increaseAllowance","line":179,"loc":{"start":{"line":179,"column":2},"end":{"line":182,"column":2}}},"15":{"name":"mint","line":190,"loc":{"start":{"line":190,"column":2},"end":{"line":194,"column":2}}},"16":{"name":"mintShares","line":205,"loc":{"start":{"line":202,"column":2},"end":{"line":210,"column":2}}},"17":{"name":"name","line":216,"loc":{"start":{"line":216,"column":2},"end":{"line":218,"column":2}}},"18":{"name":"numberOfTokenHolders","line":220,"loc":{"start":{"line":220,"column":2},"end":{"line":222,"column":2}}},"19":{"name":"setBurner","line":224,"loc":{"start":{"line":224,"column":2},"end":{"line":226,"column":2}}},"20":{"name":"setMinter","line":228,"loc":{"start":{"line":228,"column":2},"end":{"line":230,"column":2}}},"21":{"name":"symbol","line":237,"loc":{"start":{"line":237,"column":2},"end":{"line":239,"column":2}}},"22":{"name":"totalSupply","line":250,"loc":{"start":{"line":250,"column":2},"end":{"line":253,"column":2}}},"23":{"name":"totalSupplyInShares","line":255,"loc":{"start":{"line":255,"column":2},"end":{"line":258,"column":2}}},"24":{"name":"transfer","line":268,"loc":{"start":{"line":268,"column":2},"end":{"line":271,"column":2}}},"25":{"name":"transferFrom","line":283,"loc":{"start":{"line":283,"column":2},"end":{"line":299,"column":2}}},"26":{"name":"_approve","line":303,"loc":{"start":{"line":303,"column":2},"end":{"line":314,"column":2}}},"27":{"name":"_burn","line":316,"loc":{"start":{"line":316,"column":2},"end":{"line":320,"column":2}}},"28":{"name":"_burnShares","line":322,"loc":{"start":{"line":322,"column":2},"end":{"line":337,"column":2}}},"29":{"name":"_mint","line":339,"loc":{"start":{"line":339,"column":2},"end":{"line":343,"column":2}}},"30":{"name":"_mintShares","line":345,"loc":{"start":{"line":345,"column":2},"end":{"line":364,"column":2}}},"31":{"name":"_transfer","line":366,"loc":{"start":{"line":366,"column":2},"end":{"line":393,"column":2}}},"32":{"name":"_updateBalance","line":395,"loc":{"start":{"line":395,"column":2},"end":{"line":415,"column":2}}},"33":{"name":"_updateNumberOfTokenHolders","line":417,"loc":{"start":{"line":417,"column":2},"end":{"line":430,"column":2}}},"34":{"name":"_getEcosystem","line":434,"loc":{"start":{"line":434,"column":2},"end":{"line":436,"column":2}}},"35":{"name":"_getTokenHolder","line":438,"loc":{"start":{"line":438,"column":2},"end":{"line":446,"column":2}}},"36":{"name":"_getToken","line":448,"loc":{"start":{"line":448,"column":2},"end":{"line":451,"column":2}}}},"statementMap":{"1":{"start":{"line":28,"column":4},"end":{"line":28,"column":90}},"2":{"start":{"line":33,"column":4},"end":{"line":33,"column":90}},"3":{"start":{"line":38,"column":4},"end":{"line":38,"column":90}},"4":{"start":{"line":43,"column":4},"end":{"line":43,"column":23}},"5":{"start":{"line":44,"column":4},"end":{"line":44,"column":27}},"6":{"start":{"line":45,"column":4},"end":{"line":45,"column":49}},"7":{"start":{"line":46,"column":4},"end":{"line":46,"column":23}},"8":{"start":{"line":59,"column":4},"end":{"line":59,"column":40}},"9":{"start":{"line":78,"column":4},"end":{"line":78,"column":42}},"10":{"start":{"line":79,"column":4},"end":{"line":79,"column":15}},"11":{"start":{"line":88,"column":4},"end":{"line":88,"column":45}},"12":{"start":{"line":89,"column":4},"end":{"line":89,"column":71}},"13":{"start":{"line":90,"column":4},"end":{"line":90,"column":67}},"14":{"start":{"line":92,"column":4},"end":{"line":92,"column":12}},"15":{"start":{"line":101,"column":4},"end":{"line":101,"column":71}},"16":{"start":{"line":102,"column":4},"end":{"line":102,"column":29}},"17":{"start":{"line":106,"column":4},"end":{"line":106,"column":45}},"18":{"start":{"line":107,"column":4},"end":{"line":107,"column":71}},"19":{"start":{"line":108,"column":4},"end":{"line":108,"column":59}},"20":{"start":{"line":109,"column":4},"end":{"line":109,"column":58}},"21":{"start":{"line":111,"column":4},"end":{"line":111,"column":3813}},"22":{"start":{"line":112,"column":6},"end":{"line":112,"column":61}},"23":{"start":{"line":114,"column":6},"end":{"line":114,"column":64}},"24":{"start":{"line":130,"column":4},"end":{"line":130,"column":27}},"25":{"start":{"line":131,"column":4},"end":{"line":131,"column":15}},"26":{"start":{"line":146,"column":4},"end":{"line":146,"column":33}},"27":{"start":{"line":147,"column":4},"end":{"line":147,"column":15}},"28":{"start":{"line":155,"column":4},"end":{"line":155,"column":13}},"29":{"start":{"line":165,"column":4},"end":{"line":165,"column":92}},"30":{"start":{"line":167,"column":4},"end":{"line":167,"column":74}},"31":{"start":{"line":169,"column":4},"end":{"line":169,"column":47}},"32":{"start":{"line":170,"column":4},"end":{"line":170,"column":15}},"33":{"start":{"line":180,"column":4},"end":{"line":180,"column":95}},"34":{"start":{"line":181,"column":4},"end":{"line":181,"column":15}},"35":{"start":{"line":191,"column":4},"end":{"line":191,"column":27}},"36":{"start":{"line":193,"column":4},"end":{"line":193,"column":15}},"37":{"start":{"line":208,"column":4},"end":{"line":208,"column":33}},"38":{"start":{"line":209,"column":4},"end":{"line":209,"column":15}},"39":{"start":{"line":217,"column":4},"end":{"line":217,"column":27}},"40":{"start":{"line":221,"column":4},"end":{"line":221,"column":43}},"41":{"start":{"line":225,"column":4},"end":{"line":225,"column":19}},"42":{"start":{"line":229,"column":4},"end":{"line":229,"column":19}},"43":{"start":{"line":238,"column":4},"end":{"line":238,"column":29}},"44":{"start":{"line":251,"column":4},"end":{"line":251,"column":45}},"45":{"start":{"line":252,"column":4},"end":{"line":252,"column":56}},"46":{"start":{"line":256,"column":4},"end":{"line":256,"column":45}},"47":{"start":{"line":257,"column":4},"end":{"line":257,"column":23}},"48":{"start":{"line":269,"column":4},"end":{"line":269,"column":38}},"49":{"start":{"line":270,"column":4},"end":{"line":270,"column":15}},"50":{"start":{"line":288,"column":4},"end":{"line":288,"column":97}},"51":{"start":{"line":290,"column":4},"end":{"line":290,"column":33}},"52":{"start":{"line":292,"column":4},"end":{"line":292,"column":9064}},"53":{"start":{"line":293,"column":6},"end":{"line":293,"column":91}},"54":{"start":{"line":295,"column":6},"end":{"line":295,"column":68}},"55":{"start":{"line":298,"column":4},"end":{"line":298,"column":15}},"56":{"start":{"line":308,"column":4},"end":{"line":308,"column":72}},"57":{"start":{"line":309,"column":4},"end":{"line":309,"column":72}},"58":{"start":{"line":311,"column":4},"end":{"line":311,"column":42}},"59":{"start":{"line":313,"column":4},"end":{"line":313,"column":44}},"60":{"start":{"line":317,"column":4},"end":{"line":317,"column":45}},"61":{"start":{"line":318,"column":4},"end":{"line":318,"column":76}},"62":{"start":{"line":319,"column":4},"end":{"line":319,"column":37}},"63":{"start":{"line":323,"column":4},"end":{"line":323,"column":57}},"64":{"start":{"line":324,"column":4},"end":{"line":324,"column":59}},"65":{"start":{"line":325,"column":4},"end":{"line":325,"column":84}},"66":{"start":{"line":326,"column":4},"end":{"line":326,"column":71}},"67":{"start":{"line":327,"column":4},"end":{"line":327,"column":52}},"68":{"start":{"line":329,"column":4},"end":{"line":329,"column":72}},"69":{"start":{"line":331,"column":4},"end":{"line":331,"column":58}},"70":{"start":{"line":332,"column":4},"end":{"line":332,"column":32}},"71":{"start":{"line":334,"column":4},"end":{"line":334,"column":83}},"72":{"start":{"line":335,"column":4},"end":{"line":335,"column":44}},"73":{"start":{"line":336,"column":4},"end":{"line":336,"column":84}},"74":{"start":{"line":340,"column":4},"end":{"line":340,"column":45}},"75":{"start":{"line":341,"column":4},"end":{"line":341,"column":76}},"76":{"start":{"line":342,"column":4},"end":{"line":342,"column":37}},"77":{"start":{"line":346,"column":4},"end":{"line":346,"column":57}},"78":{"start":{"line":347,"column":4},"end":{"line":347,"column":59}},"79":{"start":{"line":348,"column":4},"end":{"line":348,"column":84}},"80":{"start":{"line":349,"column":4},"end":{"line":349,"column":71}},"81":{"start":{"line":350,"column":4},"end":{"line":350,"column":52}},"82":{"start":{"line":352,"column":4},"end":{"line":352,"column":66}},"83":{"start":{"line":354,"column":4},"end":{"line":354,"column":71}},"84":{"start":{"line":356,"column":4},"end":{"line":356,"column":58}},"85":{"start":{"line":357,"column":4},"end":{"line":357,"column":32}},"86":{"start":{"line":359,"column":4},"end":{"line":359,"column":83}},"87":{"start":{"line":360,"column":4},"end":{"line":360,"column":44}},"88":{"start":{"line":361,"column":4},"end":{"line":361,"column":84}},"89":{"start":{"line":363,"column":4},"end":{"line":363,"column":47}},"90":{"start":{"line":371,"column":4},"end":{"line":371,"column":57}},"91":{"start":{"line":372,"column":4},"end":{"line":372,"column":59}},"92":{"start":{"line":373,"column":4},"end":{"line":373,"column":84}},"93":{"start":{"line":375,"column":4},"end":{"line":375,"column":72}},"94":{"start":{"line":376,"column":4},"end":{"line":376,"column":68}},"95":{"start":{"line":377,"column":4},"end":{"line":377,"column":60}},"96":{"start":{"line":378,"column":4},"end":{"line":378,"column":56}},"97":{"start":{"line":380,"column":4},"end":{"line":380,"column":76}},"98":{"start":{"line":381,"column":4},"end":{"line":381,"column":65}},"99":{"start":{"line":383,"column":4},"end":{"line":383,"column":79}},"100":{"start":{"line":384,"column":4},"end":{"line":384,"column":74}},"101":{"start":{"line":386,"column":4},"end":{"line":386,"column":83}},"102":{"start":{"line":387,"column":4},"end":{"line":387,"column":48}},"103":{"start":{"line":388,"column":4},"end":{"line":388,"column":46}},"104":{"start":{"line":389,"column":4},"end":{"line":389,"column":92}},"105":{"start":{"line":390,"column":4},"end":{"line":390,"column":88}},"106":{"start":{"line":392,"column":4},"end":{"line":392,"column":37}},"107":{"start":{"line":401,"column":4},"end":{"line":401,"column":57}},"108":{"start":{"line":403,"column":4},"end":{"line":403,"column":51}},"109":{"start":{"line":404,"column":4},"end":{"line":404,"column":63}},"110":{"start":{"line":406,"column":4},"end":{"line":406,"column":13569}},"111":{"start":{"line":407,"column":6},"end":{"line":407,"column":74}},"112":{"start":{"line":409,"column":6},"end":{"line":409,"column":74}},"113":{"start":{"line":412,"column":4},"end":{"line":412,"column":62}},"114":{"start":{"line":414,"column":4},"end":{"line":414,"column":23}},"115":{"start":{"line":423,"column":4},"end":{"line":423,"column":14049}},"116":{"start":{"line":424,"column":6},"end":{"line":424,"column":96}},"117":{"start":{"line":427,"column":4},"end":{"line":427,"column":14220}},"118":{"start":{"line":428,"column":6},"end":{"line":428,"column":96}},"119":{"start":{"line":435,"column":4},"end":{"line":435,"column":67}},"120":{"start":{"line":439,"column":4},"end":{"line":439,"column":57}},"121":{"start":{"line":440,"column":4},"end":{"line":440,"column":14723}},"122":{"start":{"line":449,"column":4},"end":{"line":449,"column":57}},"123":{"start":{"line":450,"column":4},"end":{"line":450,"column":83}}},"branchMap":{"1":{"line":28,"type":"if","locations":[{"start":{"line":28,"column":4},"end":{"line":28,"column":4}},{"start":{"line":28,"column":4},"end":{"line":28,"column":4}}]},"2":{"line":33,"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":33,"column":4}},{"start":{"line":33,"column":4},"end":{"line":33,"column":4}}]},"3":{"line":38,"type":"if","locations":[{"start":{"line":38,"column":4},"end":{"line":38,"column":4}},{"start":{"line":38,"column":4},"end":{"line":38,"column":4}}]},"4":{"line":111,"type":"if","locations":[{"start":{"line":111,"column":4},"end":{"line":111,"column":4}},{"start":{"line":111,"column":4},"end":{"line":111,"column":4}}]},"5":{"line":167,"type":"if","locations":[{"start":{"line":167,"column":4},"end":{"line":167,"column":4}},{"start":{"line":167,"column":4},"end":{"line":167,"column":4}}]},"6":{"line":288,"type":"if","locations":[{"start":{"line":288,"column":4},"end":{"line":288,"column":4}},{"start":{"line":288,"column":4},"end":{"line":288,"column":4}}]},"7":{"line":292,"type":"if","locations":[{"start":{"line":292,"column":4},"end":{"line":292,"column":4}},{"start":{"line":292,"column":4},"end":{"line":292,"column":4}}]},"8":{"line":308,"type":"if","locations":[{"start":{"line":308,"column":4},"end":{"line":308,"column":4}},{"start":{"line":308,"column":4},"end":{"line":308,"column":4}}]},"9":{"line":309,"type":"if","locations":[{"start":{"line":309,"column":4},"end":{"line":309,"column":4}},{"start":{"line":309,"column":4},"end":{"line":309,"column":4}}]},"10":{"line":406,"type":"if","locations":[{"start":{"line":406,"column":4},"end":{"line":406,"column":4}},{"start":{"line":406,"column":4},"end":{"line":406,"column":4}}]},"11":{"line":423,"type":"if","locations":[{"start":{"line":423,"column":4},"end":{"line":423,"column":4}},{"start":{"line":423,"column":4},"end":{"line":423,"column":4}}]},"12":{"line":427,"type":"if","locations":[{"start":{"line":427,"column":4},"end":{"line":427,"column":4}},{"start":{"line":427,"column":4},"end":{"line":427,"column":4}}]}}}} \ No newline at end of file +{"src/core/ElasticDAO.sol":{"l":{"29":30,"30":30,"31":30,"34":451,"35":451,"37":451,"38":450,"41":1234,"42":1234,"43":1233,"46":17,"47":15,"50":443,"51":442,"54":790,"55":790,"56":790,"57":790,"59":790,"60":788,"63":16,"64":16,"74":412,"75":412,"76":412,"77":412,"78":412,"79":412,"81":412,"82":412,"83":412,"88":14,"89":14,"90":14,"93":14,"94":14,"96":14,"107":442,"108":442,"110":442,"121":341,"122":341,"123":341,"125":341,"129":16,"131":16,"136":16,"137":16,"146":16,"156":16,"159":15,"160":15,"163":15,"164":15,"165":15,"166":15,"169":15,"171":12,"175":12,"176":12,"177":12,"178":12,"182":3,"194":450,"196":450,"197":450,"198":450,"200":360,"204":337,"206":336,"207":336,"208":336,"209":336,"211":336,"213":336,"214":1008,"216":336,"217":336,"219":308,"225":1,"229":2,"235":1265,"236":1265,"240":4244,"244":492,"245":492},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAO.sol","s":{"1":30,"2":30,"3":451,"4":451,"5":451,"6":1234,"7":1234,"8":17,"9":443,"10":790,"11":790,"12":790,"13":790,"14":790,"15":16,"16":412,"17":412,"18":412,"19":412,"20":412,"21":412,"22":412,"23":412,"24":412,"25":14,"26":14,"27":14,"28":14,"29":14,"30":14,"31":442,"32":442,"33":442,"34":341,"35":341,"36":341,"37":341,"38":16,"39":16,"40":16,"41":16,"42":16,"43":16,"44":15,"45":15,"46":15,"47":15,"48":15,"49":15,"50":15,"51":12,"52":12,"53":12,"54":12,"55":12,"56":3,"57":450,"58":450,"59":450,"60":450,"61":360,"62":337,"63":336,"64":336,"65":336,"66":336,"67":336,"68":336,"69":1008,"70":336,"71":336,"72":308,"73":1,"74":2,"75":1265,"76":1265,"77":4244,"78":492,"79":492},"b":{"1":[30,0],"2":[450,1],"3":[1233,1],"4":[15,2],"5":[442,1],"6":[788,2],"7":[16,0],"8":[442,0],"9":[16,0],"10":[15,1],"11":[336,1]},"f":{"1":30,"2":451,"3":1234,"4":17,"5":443,"6":790,"7":16,"8":412,"9":14,"10":442,"11":16,"12":12,"13":3,"14":450,"15":337,"16":1,"17":2,"18":1265,"19":4244,"20":492,"21":0},"fnMap":{"1":{"name":"onlyAfterSummoning","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":32,"column":2}}},"2":{"name":"onlyAfterTokenInitialized","line":33,"loc":{"start":{"line":33,"column":2},"end":{"line":39,"column":2}}},"3":{"name":"onlyBeforeSummoning","line":40,"loc":{"start":{"line":40,"column":2},"end":{"line":44,"column":2}}},"4":{"name":"onlyController","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":48,"column":2}}},"5":{"name":"onlyDeployer","line":49,"loc":{"start":{"line":49,"column":2},"end":{"line":52,"column":2}}},"6":{"name":"onlySummoners","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":61,"column":2}}},"7":{"name":"onlyWhenOpen","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":65,"column":2}}},"8":{"name":"constructor","line":67,"loc":{"start":{"line":67,"column":2},"end":{"line":84,"column":2}}},"9":{"name":"exit","line":86,"loc":{"start":{"line":86,"column":2},"end":{"line":97,"column":2}}},"10":{"name":"initializeToken","line":106,"loc":{"start":{"line":99,"column":2},"end":{"line":126,"column":2}}},"11":{"name":"join","line":128,"loc":{"start":{"line":128,"column":2},"end":{"line":172,"column":2}}},"12":{"name":"setController","line":174,"loc":{"start":{"line":174,"column":2},"end":{"line":179,"column":2}}},"13":{"name":"setMaxVotingLambda","line":181,"loc":{"start":{"line":181,"column":2},"end":{"line":183,"column":2}}},"14":{"name":"seedSummoning","line":192,"loc":{"start":{"line":187,"column":2},"end":{"line":201,"column":2}}},"15":{"name":"summon","line":203,"loc":{"start":{"line":203,"column":2},"end":{"line":220,"column":2}}},"16":{"name":"getDAO","line":224,"loc":{"start":{"line":224,"column":2},"end":{"line":226,"column":2}}},"17":{"name":"getEcosystem","line":228,"loc":{"start":{"line":228,"column":2},"end":{"line":230,"column":2}}},"18":{"name":"_getDAO","line":234,"loc":{"start":{"line":234,"column":2},"end":{"line":237,"column":2}}},"19":{"name":"_getEcosystem","line":239,"loc":{"start":{"line":239,"column":2},"end":{"line":241,"column":2}}},"20":{"name":"_getToken","line":243,"loc":{"start":{"line":243,"column":2},"end":{"line":247,"column":2}}},"21":{"name":null,"line":251,"loc":{"start":{"line":251,"column":2},"end":{"line":251,"column":31}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":39}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":60}},"3":{"start":{"line":34,"column":4},"end":{"line":34,"column":57}},"4":{"start":{"line":35,"column":4},"end":{"line":35,"column":1351}},"5":{"start":{"line":37,"column":4},"end":{"line":37,"column":77}},"6":{"start":{"line":41,"column":4},"end":{"line":41,"column":39}},"7":{"start":{"line":42,"column":4},"end":{"line":42,"column":73}},"8":{"start":{"line":46,"column":4},"end":{"line":46,"column":67}},"9":{"start":{"line":50,"column":4},"end":{"line":50,"column":63}},"10":{"start":{"line":54,"column":4},"end":{"line":54,"column":57}},"11":{"start":{"line":55,"column":4},"end":{"line":55,"column":52}},"12":{"start":{"line":56,"column":4},"end":{"line":56,"column":79}},"13":{"start":{"line":57,"column":4},"end":{"line":57,"column":64}},"14":{"start":{"line":59,"column":4},"end":{"line":59,"column":55}},"15":{"start":{"line":63,"column":4},"end":{"line":63,"column":71}},"16":{"start":{"line":74,"column":4},"end":{"line":74,"column":49}},"17":{"start":{"line":75,"column":4},"end":{"line":75,"column":27}},"18":{"start":{"line":76,"column":4},"end":{"line":76,"column":24}},"19":{"start":{"line":77,"column":4},"end":{"line":77,"column":98}},"20":{"start":{"line":78,"column":4},"end":{"line":78,"column":40}},"21":{"start":{"line":79,"column":4},"end":{"line":79,"column":25}},"22":{"start":{"line":81,"column":4},"end":{"line":81,"column":74}},"23":{"start":{"line":82,"column":4},"end":{"line":82,"column":79}},"24":{"start":{"line":83,"column":4},"end":{"line":83,"column":74}},"25":{"start":{"line":88,"column":4},"end":{"line":88,"column":45}},"26":{"start":{"line":89,"column":4},"end":{"line":89,"column":77}},"27":{"start":{"line":90,"column":4},"end":{"line":90,"column":53}},"28":{"start":{"line":93,"column":4},"end":{"line":93,"column":72}},"29":{"start":{"line":94,"column":4},"end":{"line":94,"column":86}},"30":{"start":{"line":96,"column":4},"end":{"line":96,"column":41}},"31":{"start":{"line":107,"column":4},"end":{"line":107,"column":88}},"32":{"start":{"line":108,"column":4},"end":{"line":108,"column":57}},"33":{"start":{"line":110,"column":4},"end":{"line":110,"column":3971}},"34":{"start":{"line":121,"column":4},"end":{"line":121,"column":77}},"35":{"start":{"line":122,"column":4},"end":{"line":122,"column":38}},"36":{"start":{"line":123,"column":4},"end":{"line":123,"column":38}},"37":{"start":{"line":125,"column":4},"end":{"line":125,"column":51}},"38":{"start":{"line":129,"column":4},"end":{"line":129,"column":45}},"39":{"start":{"line":131,"column":4},"end":{"line":131,"column":4555}},"40":{"start":{"line":136,"column":4},"end":{"line":136,"column":77}},"41":{"start":{"line":137,"column":4},"end":{"line":137,"column":4766}},"42":{"start":{"line":146,"column":4},"end":{"line":146,"column":5212}},"43":{"start":{"line":156,"column":4},"end":{"line":156,"column":67}},"44":{"start":{"line":159,"column":4},"end":{"line":159,"column":65}},"45":{"start":{"line":160,"column":4},"end":{"line":160,"column":72}},"46":{"start":{"line":163,"column":4},"end":{"line":163,"column":57}},"47":{"start":{"line":164,"column":4},"end":{"line":164,"column":59}},"48":{"start":{"line":165,"column":4},"end":{"line":165,"column":18}},"49":{"start":{"line":166,"column":4},"end":{"line":166,"column":32}},"50":{"start":{"line":169,"column":4},"end":{"line":169,"column":53}},"51":{"start":{"line":171,"column":4},"end":{"line":171,"column":57}},"52":{"start":{"line":175,"column":4},"end":{"line":175,"column":27}},"53":{"start":{"line":176,"column":4},"end":{"line":176,"column":83}},"54":{"start":{"line":177,"column":4},"end":{"line":177,"column":38}},"55":{"start":{"line":178,"column":4},"end":{"line":178,"column":38}},"56":{"start":{"line":182,"column":4},"end":{"line":182,"column":37}},"57":{"start":{"line":194,"column":4},"end":{"line":194,"column":45}},"58":{"start":{"line":196,"column":4},"end":{"line":196,"column":30}},"59":{"start":{"line":197,"column":4},"end":{"line":197,"column":62}},"60":{"start":{"line":198,"column":4},"end":{"line":198,"column":73}},"61":{"start":{"line":200,"column":4},"end":{"line":200,"column":56}},"62":{"start":{"line":204,"column":4},"end":{"line":204,"column":98}},"63":{"start":{"line":206,"column":4},"end":{"line":206,"column":57}},"64":{"start":{"line":207,"column":4},"end":{"line":207,"column":52}},"65":{"start":{"line":208,"column":4},"end":{"line":208,"column":79}},"66":{"start":{"line":209,"column":4},"end":{"line":209,"column":7274}},"67":{"start":{"line":211,"column":4},"end":{"line":211,"column":77}},"68":{"start":{"line":213,"column":4},"end":{"line":213,"column":7394}},"69":{"start":{"line":214,"column":6},"end":{"line":214,"column":76}},"70":{"start":{"line":216,"column":4},"end":{"line":216,"column":22}},"71":{"start":{"line":217,"column":4},"end":{"line":217,"column":29}},"72":{"start":{"line":219,"column":4},"end":{"line":219,"column":47}},"73":{"start":{"line":225,"column":4},"end":{"line":225,"column":20}},"74":{"start":{"line":229,"column":4},"end":{"line":229,"column":26}},"75":{"start":{"line":235,"column":4},"end":{"line":235,"column":57}},"76":{"start":{"line":236,"column":4},"end":{"line":236,"column":79}},"77":{"start":{"line":240,"column":4},"end":{"line":240,"column":70}},"78":{"start":{"line":244,"column":4},"end":{"line":244,"column":57}},"79":{"start":{"line":245,"column":4},"end":{"line":245,"column":8487}}},"branchMap":{"1":{"line":30,"type":"if","locations":[{"start":{"line":30,"column":4},"end":{"line":30,"column":4}},{"start":{"line":30,"column":4},"end":{"line":30,"column":4}}]},"2":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":37,"column":4}},{"start":{"line":37,"column":4},"end":{"line":37,"column":4}}]},"3":{"line":42,"type":"if","locations":[{"start":{"line":42,"column":4},"end":{"line":42,"column":4}},{"start":{"line":42,"column":4},"end":{"line":42,"column":4}}]},"4":{"line":46,"type":"if","locations":[{"start":{"line":46,"column":4},"end":{"line":46,"column":4}},{"start":{"line":46,"column":4},"end":{"line":46,"column":4}}]},"5":{"line":50,"type":"if","locations":[{"start":{"line":50,"column":4},"end":{"line":50,"column":4}},{"start":{"line":50,"column":4},"end":{"line":50,"column":4}}]},"6":{"line":59,"type":"if","locations":[{"start":{"line":59,"column":4},"end":{"line":59,"column":4}},{"start":{"line":59,"column":4},"end":{"line":59,"column":4}}]},"7":{"line":63,"type":"if","locations":[{"start":{"line":63,"column":4},"end":{"line":63,"column":4}},{"start":{"line":63,"column":4},"end":{"line":63,"column":4}}]},"8":{"line":107,"type":"if","locations":[{"start":{"line":107,"column":4},"end":{"line":107,"column":4}},{"start":{"line":107,"column":4},"end":{"line":107,"column":4}}]},"9":{"line":131,"type":"if","locations":[{"start":{"line":131,"column":4},"end":{"line":131,"column":4}},{"start":{"line":131,"column":4},"end":{"line":131,"column":4}}]},"10":{"line":156,"type":"if","locations":[{"start":{"line":156,"column":4},"end":{"line":156,"column":4}},{"start":{"line":156,"column":4},"end":{"line":156,"column":4}}]},"11":{"line":204,"type":"if","locations":[{"start":{"line":204,"column":4},"end":{"line":204,"column":4}},{"start":{"line":204,"column":4},"end":{"line":204,"column":4}}]}}},"src/core/ElasticDAOFactory.sol":{"l":{"21":7,"22":6,"26":3,"27":3,"46":364,"50":364,"52":281,"53":281,"54":281,"58":6,"59":6,"63":3,"65":3,"66":3},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAOFactory.sol","s":{"1":7,"2":3,"3":3,"4":364,"5":364,"6":281,"7":281,"8":281,"9":6,"10":6,"11":3,"12":3,"13":3},"b":{"1":[6,1]},"f":{"1":7,"2":3,"3":364,"4":6,"5":3,"6":0},"fnMap":{"1":{"name":"onlyDeployer","line":20,"loc":{"start":{"line":20,"column":2},"end":{"line":23,"column":2}}},"2":{"name":"constructor","line":25,"loc":{"start":{"line":25,"column":2},"end":{"line":28,"column":2}}},"3":{"name":"deployDAOAndToken","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":55,"column":2}}},"4":{"name":"updateFeeAddress","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":60,"column":2}}},"5":{"name":"collectFees","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":67,"column":2}}},"6":{"name":null,"line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":71,"column":31}}}},"statementMap":{"1":{"start":{"line":21,"column":4},"end":{"line":21,"column":63}},"2":{"start":{"line":26,"column":4},"end":{"line":26,"column":24}},"3":{"start":{"line":27,"column":4},"end":{"line":27,"column":49}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":1350}},"5":{"start":{"line":50,"column":4},"end":{"line":50,"column":96}},"6":{"start":{"line":52,"column":4},"end":{"line":52,"column":49}},"7":{"start":{"line":53,"column":4},"end":{"line":53,"column":55}},"8":{"start":{"line":54,"column":4},"end":{"line":54,"column":41}},"9":{"start":{"line":58,"column":4},"end":{"line":58,"column":37}},"10":{"start":{"line":59,"column":4},"end":{"line":59,"column":40}},"11":{"start":{"line":63,"column":4},"end":{"line":63,"column":42}},"12":{"start":{"line":65,"column":4},"end":{"line":65,"column":30}},"13":{"start":{"line":66,"column":4},"end":{"line":66,"column":51}}},"branchMap":{"1":{"line":21,"type":"if","locations":[{"start":{"line":21,"column":4},"end":{"line":21,"column":4}},{"start":{"line":21,"column":4},"end":{"line":21,"column":4}}]}}},"src/interfaces/IElasticToken.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IElasticToken.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/interfaces/IERC20.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IERC20.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/libraries/ElasticMath.sol":{"l":{"16":16,"40":16,"42":16,"45":16,"48":16,"51":16,"54":16,"57":16,"60":16,"63":16,"66":16,"74":37,"92":31,"105":16,"122":1529,"132":3220,"142":548},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/ElasticMath.sol","s":{"1":16,"2":16,"3":16,"4":16,"5":16,"6":16,"7":16,"8":16,"9":16,"10":16,"11":16,"12":37,"13":31,"14":16,"15":1529,"16":3220,"17":548},"b":{},"f":{"1":16,"2":16,"3":37,"4":31,"5":16,"6":1529,"7":3220,"8":548},"fnMap":{"1":{"name":"capitalDelta","line":11,"loc":{"start":{"line":11,"column":2},"end":{"line":17,"column":2}}},"2":{"name":"deltaE","line":32,"loc":{"start":{"line":32,"column":2},"end":{"line":67,"column":2}}},"3":{"name":"lambdaFromT","line":69,"loc":{"start":{"line":69,"column":2},"end":{"line":75,"column":2}}},"4":{"name":"mDash","line":87,"loc":{"start":{"line":87,"column":2},"end":{"line":93,"column":2}}},"5":{"name":"revamp","line":104,"loc":{"start":{"line":104,"column":2},"end":{"line":106,"column":2}}},"6":{"name":"t","line":117,"loc":{"start":{"line":117,"column":2},"end":{"line":123,"column":2}}},"7":{"name":"wmul","line":131,"loc":{"start":{"line":131,"column":2},"end":{"line":133,"column":2}}},"8":{"name":"wdiv","line":141,"loc":{"start":{"line":141,"column":2},"end":{"line":143,"column":2}}}},"statementMap":{"1":{"start":{"line":16,"column":4},"end":{"line":16,"column":53}},"2":{"start":{"line":40,"column":4},"end":{"line":40,"column":58}},"3":{"start":{"line":42,"column":4},"end":{"line":42,"column":42}},"4":{"start":{"line":45,"column":4},"end":{"line":45,"column":34}},"5":{"start":{"line":48,"column":4},"end":{"line":48,"column":31}},"6":{"start":{"line":51,"column":4},"end":{"line":51,"column":44}},"7":{"start":{"line":54,"column":4},"end":{"line":54,"column":26}},"8":{"start":{"line":57,"column":4},"end":{"line":57,"column":35}},"9":{"start":{"line":60,"column":4},"end":{"line":60,"column":34}},"10":{"start":{"line":63,"column":4},"end":{"line":63,"column":27}},"11":{"start":{"line":66,"column":4},"end":{"line":66,"column":22}},"12":{"start":{"line":74,"column":4},"end":{"line":74,"column":30}},"13":{"start":{"line":92,"column":4},"end":{"line":92,"column":44}},"14":{"start":{"line":105,"column":4},"end":{"line":105,"column":57}},"15":{"start":{"line":122,"column":4},"end":{"line":122,"column":35}},"16":{"start":{"line":132,"column":4},"end":{"line":132,"column":90}},"17":{"start":{"line":142,"column":4},"end":{"line":142,"column":72}}},"branchMap":{}},"src/libraries/SafeMath.sol":{"l":{"29":15344,"30":15344,"32":15344,"46":108,"64":108,"65":108,"67":108,"84":4040,"85":0,"88":4040,"89":4040,"91":4040,"107":0,"127":0,"128":0,"131":0,"147":0,"167":0,"168":0,"172":16,"173":0,"175":0,"177":0,"179":16,"180":16,"181":16,"189":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/SafeMath.sol","s":{"1":15344,"2":15344,"3":15344,"4":108,"5":108,"6":108,"7":108,"8":4040,"9":0,"10":4040,"11":4040,"12":4040,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":16,"21":0,"22":16,"23":0,"24":16,"25":0,"26":16,"27":16,"28":272,"29":16,"30":0},"b":{"1":[15344,0],"2":[108,0],"3":[0,4040],"4":[4040,0],"5":[0,0],"6":[0,0],"7":[0,16],"8":[0,16],"9":[0,16]},"f":{"1":15344,"2":108,"3":108,"4":4040,"5":0,"6":0,"7":0,"8":0,"9":16,"10":0},"fnMap":{"1":{"name":"add","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":33,"column":2}}},"2":{"name":"sub","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":2}}},"3":{"name":"sub","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":68,"column":2}}},"4":{"name":"mul","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":92,"column":2}}},"5":{"name":"div","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":108,"column":2}}},"6":{"name":"div","line":122,"loc":{"start":{"line":122,"column":2},"end":{"line":132,"column":2}}},"7":{"name":"mod","line":146,"loc":{"start":{"line":146,"column":2},"end":{"line":148,"column":2}}},"8":{"name":"mod","line":162,"loc":{"start":{"line":162,"column":2},"end":{"line":169,"column":2}}},"9":{"name":"pow","line":171,"loc":{"start":{"line":171,"column":2},"end":{"line":183,"column":2}}},"10":{"name":"max","line":188,"loc":{"start":{"line":188,"column":2},"end":{"line":190,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":21}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":49}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":12}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":54}},"5":{"start":{"line":64,"column":4},"end":{"line":64,"column":32}},"6":{"start":{"line":65,"column":4},"end":{"line":65,"column":21}},"7":{"start":{"line":67,"column":4},"end":{"line":67,"column":12}},"8":{"start":{"line":84,"column":4},"end":{"line":84,"column":2356}},"9":{"start":{"line":85,"column":6},"end":{"line":85,"column":14}},"10":{"start":{"line":88,"column":4},"end":{"line":88,"column":21}},"11":{"start":{"line":89,"column":4},"end":{"line":89,"column":59}},"12":{"start":{"line":91,"column":4},"end":{"line":91,"column":12}},"13":{"start":{"line":107,"column":4},"end":{"line":107,"column":50}},"14":{"start":{"line":127,"column":4},"end":{"line":127,"column":31}},"15":{"start":{"line":128,"column":4},"end":{"line":128,"column":21}},"16":{"start":{"line":131,"column":4},"end":{"line":131,"column":12}},"17":{"start":{"line":147,"column":4},"end":{"line":147,"column":48}},"18":{"start":{"line":167,"column":4},"end":{"line":167,"column":32}},"19":{"start":{"line":168,"column":4},"end":{"line":168,"column":16}},"20":{"start":{"line":172,"column":4},"end":{"line":172,"column":5030}},"21":{"start":{"line":173,"column":6},"end":{"line":173,"column":14}},"22":{"start":{"line":174,"column":11},"end":{"line":174,"column":5078}},"23":{"start":{"line":175,"column":6},"end":{"line":175,"column":17}},"24":{"start":{"line":176,"column":11},"end":{"line":176,"column":5129}},"25":{"start":{"line":177,"column":6},"end":{"line":177,"column":14}},"26":{"start":{"line":179,"column":6},"end":{"line":179,"column":22}},"27":{"start":{"line":180,"column":6},"end":{"line":180,"column":71}},"28":{"start":{"line":180,"column":55},"end":{"line":180,"column":70}},"29":{"start":{"line":181,"column":6},"end":{"line":181,"column":14}},"30":{"start":{"line":189,"column":4},"end":{"line":189,"column":25}}},"branchMap":{"1":{"line":30,"type":"if","locations":[{"start":{"line":30,"column":4},"end":{"line":30,"column":4}},{"start":{"line":30,"column":4},"end":{"line":30,"column":4}}]},"2":{"line":64,"type":"if","locations":[{"start":{"line":64,"column":4},"end":{"line":64,"column":4}},{"start":{"line":64,"column":4},"end":{"line":64,"column":4}}]},"3":{"line":84,"type":"if","locations":[{"start":{"line":84,"column":4},"end":{"line":84,"column":4}},{"start":{"line":84,"column":4},"end":{"line":84,"column":4}}]},"4":{"line":89,"type":"if","locations":[{"start":{"line":89,"column":4},"end":{"line":89,"column":4}},{"start":{"line":89,"column":4},"end":{"line":89,"column":4}}]},"5":{"line":127,"type":"if","locations":[{"start":{"line":127,"column":4},"end":{"line":127,"column":4}},{"start":{"line":127,"column":4},"end":{"line":127,"column":4}}]},"6":{"line":167,"type":"if","locations":[{"start":{"line":167,"column":4},"end":{"line":167,"column":4}},{"start":{"line":167,"column":4},"end":{"line":167,"column":4}}]},"7":{"line":172,"type":"if","locations":[{"start":{"line":172,"column":4},"end":{"line":172,"column":4}},{"start":{"line":172,"column":4},"end":{"line":172,"column":4}}]},"8":{"line":174,"type":"if","locations":[{"start":{"line":174,"column":11},"end":{"line":174,"column":11}},{"start":{"line":174,"column":11},"end":{"line":174,"column":11}}]},"9":{"line":176,"type":"if","locations":[{"start":{"line":176,"column":11},"end":{"line":176,"column":11}},{"start":{"line":176,"column":11},"end":{"line":176,"column":11}}]}}},"src/models/DAO.sol":{"l":{"32":2496,"33":2496,"35":2496,"36":2496,"37":2496,"38":2496,"41":2496,"50":2,"54":1008,"64":790,"72":748,"77":748,"78":748,"79":748,"81":748,"82":412,"83":1236,"84":1236,"88":748,"92":2498},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/DAO.sol","s":{"1":2496,"2":2496,"3":2496,"4":2496,"5":2496,"6":2496,"7":2496,"8":2,"9":1008,"10":790,"11":748,"12":748,"13":748,"14":748,"15":748,"16":412,"17":1236,"18":1236,"19":748,"20":2498},"b":{"1":[2496,0],"2":[748,0],"3":[412,336]},"f":{"1":2496,"2":2,"3":1008,"4":790,"5":748,"6":2498},"fnMap":{"1":{"name":"deserialize","line":27,"loc":{"start":{"line":27,"column":2},"end":{"line":42,"column":2}}},"2":{"name":"exists","line":49,"loc":{"start":{"line":49,"column":2},"end":{"line":51,"column":2}}},"3":{"name":"getSummoner","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":55,"column":2}}},"4":{"name":"isSummoner","line":63,"loc":{"start":{"line":63,"column":2},"end":{"line":65,"column":2}}},"5":{"name":"serialize","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":89,"column":2}}},"6":{"name":"_exists","line":91,"loc":{"start":{"line":91,"column":2},"end":{"line":93,"column":2}}}},"statementMap":{"1":{"start":{"line":32,"column":4},"end":{"line":32,"column":22}},"2":{"start":{"line":33,"column":4},"end":{"line":33,"column":32}},"3":{"start":{"line":35,"column":4},"end":{"line":35,"column":903}},"4":{"start":{"line":36,"column":6},"end":{"line":36,"column":66}},"5":{"start":{"line":37,"column":6},"end":{"line":37,"column":90}},"6":{"start":{"line":38,"column":6},"end":{"line":38,"column":72}},"7":{"start":{"line":41,"column":4},"end":{"line":41,"column":17}},"8":{"start":{"line":50,"column":4},"end":{"line":50,"column":25}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":76}},"10":{"start":{"line":64,"column":4},"end":{"line":64,"column":82}},"11":{"start":{"line":72,"column":4},"end":{"line":72,"column":2126}},"12":{"start":{"line":77,"column":4},"end":{"line":77,"column":69}},"13":{"start":{"line":78,"column":4},"end":{"line":78,"column":93}},"14":{"start":{"line":79,"column":4},"end":{"line":79,"column":75}},"15":{"start":{"line":81,"column":4},"end":{"line":81,"column":2514}},"16":{"start":{"line":82,"column":6},"end":{"line":82,"column":2581}},"17":{"start":{"line":83,"column":8},"end":{"line":83,"column":89}},"18":{"start":{"line":84,"column":8},"end":{"line":84,"column":90}},"19":{"start":{"line":88,"column":4},"end":{"line":88,"column":62}},"20":{"start":{"line":92,"column":4},"end":{"line":92,"column":58}}},"branchMap":{"1":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":35,"column":4}},{"start":{"line":35,"column":4},"end":{"line":35,"column":4}}]},"2":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":72,"column":4}},{"start":{"line":72,"column":4},"end":{"line":72,"column":4}}]},"3":{"line":81,"type":"if","locations":[{"start":{"line":81,"column":4},"end":{"line":81,"column":4}},{"start":{"line":81,"column":4},"end":{"line":81,"column":4}}]}}},"src/models/Ecosystem.sol":{"l":{"33":9446,"34":9446,"35":9446,"38":9446,"41":9446,"42":9446,"45":9446,"48":9446,"53":9446,"62":1,"70":830,"72":830,"79":830,"83":830,"84":830,"88":830,"92":830,"97":830,"101":10277},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Ecosystem.sol","s":{"1":9446,"2":9446,"3":9446,"4":9446,"5":9446,"6":9446,"7":9446,"8":9446,"9":9446,"10":1,"11":830,"12":830,"13":830,"14":830,"15":830,"16":830,"17":830,"18":830,"19":10277},"b":{"1":[9446,0],"2":[830,0]},"f":{"1":9446,"2":1,"3":830,"4":10277},"fnMap":{"1":{"name":"deserialize","line":32,"loc":{"start":{"line":32,"column":2},"end":{"line":54,"column":2}}},"2":{"name":"exists","line":61,"loc":{"start":{"line":61,"column":2},"end":{"line":63,"column":2}}},"3":{"name":"serialize","line":69,"loc":{"start":{"line":69,"column":2},"end":{"line":98,"column":2}}},"4":{"name":"_exists","line":100,"loc":{"start":{"line":100,"column":2},"end":{"line":102,"column":2}}}},"statementMap":{"1":{"start":{"line":33,"column":4},"end":{"line":33,"column":1065}},"2":{"start":{"line":34,"column":6},"end":{"line":34,"column":36}},"3":{"start":{"line":35,"column":6},"end":{"line":35,"column":1140}},"4":{"start":{"line":38,"column":6},"end":{"line":38,"column":1268}},"5":{"start":{"line":41,"column":6},"end":{"line":41,"column":49}},"6":{"start":{"line":42,"column":6},"end":{"line":42,"column":1440}},"7":{"start":{"line":45,"column":6},"end":{"line":45,"column":1574}},"8":{"start":{"line":48,"column":6},"end":{"line":48,"column":1710}},"9":{"start":{"line":53,"column":4},"end":{"line":53,"column":17}},"10":{"start":{"line":62,"column":4},"end":{"line":62,"column":31}},"11":{"start":{"line":70,"column":4},"end":{"line":70,"column":50}},"12":{"start":{"line":72,"column":4},"end":{"line":72,"column":2306}},"13":{"start":{"line":79,"column":4},"end":{"line":79,"column":2513}},"14":{"start":{"line":83,"column":4},"end":{"line":83,"column":98}},"15":{"start":{"line":84,"column":4},"end":{"line":84,"column":2741}},"16":{"start":{"line":88,"column":4},"end":{"line":88,"column":2874}},"17":{"start":{"line":92,"column":4},"end":{"line":92,"column":3009}},"18":{"start":{"line":97,"column":4},"end":{"line":97,"column":68}},"19":{"start":{"line":101,"column":4},"end":{"line":101,"column":64}}},"branchMap":{"1":{"line":33,"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":33,"column":4}},{"start":{"line":33,"column":4},"end":{"line":33,"column":4}}]},"2":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":72,"column":4}},{"start":{"line":72,"column":4},"end":{"line":72,"column":4}}]}}},"src/models/EternalModel.sol":{"l":{"30":37132,"37":10550,"44":48238,"51":24078,"58":0,"65":0,"77":18056,"85":4616,"93":5386,"101":7000,"109":0,"117":0,"128":0,"135":0,"142":0,"149":0,"156":0,"163":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/EternalModel.sol","s":{"1":37132,"2":10550,"3":48238,"4":24078,"5":0,"6":0,"7":18056,"8":4616,"9":5386,"10":7000,"11":0,"12":0},"b":{},"f":{"1":37132,"2":10550,"3":48238,"4":24078,"5":0,"6":0,"7":18056,"8":4616,"9":5386,"10":7000,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0},"fnMap":{"1":{"name":"getUint","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":31,"column":2}}},"2":{"name":"getString","line":36,"loc":{"start":{"line":36,"column":2},"end":{"line":38,"column":2}}},"3":{"name":"getAddress","line":43,"loc":{"start":{"line":43,"column":2},"end":{"line":45,"column":2}}},"4":{"name":"getBool","line":50,"loc":{"start":{"line":50,"column":2},"end":{"line":52,"column":2}}},"5":{"name":"getInt","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":59,"column":2}}},"6":{"name":"getBytes","line":64,"loc":{"start":{"line":64,"column":2},"end":{"line":66,"column":2}}},"7":{"name":"setUint","line":76,"loc":{"start":{"line":76,"column":2},"end":{"line":78,"column":2}}},"8":{"name":"setString","line":84,"loc":{"start":{"line":84,"column":2},"end":{"line":86,"column":2}}},"9":{"name":"setAddress","line":92,"loc":{"start":{"line":92,"column":2},"end":{"line":94,"column":2}}},"10":{"name":"setBool","line":100,"loc":{"start":{"line":100,"column":2},"end":{"line":102,"column":2}}},"11":{"name":"setInt","line":108,"loc":{"start":{"line":108,"column":2},"end":{"line":110,"column":2}}},"12":{"name":"setBytes","line":116,"loc":{"start":{"line":116,"column":2},"end":{"line":118,"column":2}}},"13":{"name":"deleteUint","line":127,"loc":{"start":{"line":127,"column":2},"end":{"line":129,"column":2}}},"14":{"name":"deleteString","line":134,"loc":{"start":{"line":134,"column":2},"end":{"line":136,"column":2}}},"15":{"name":"deleteAddress","line":141,"loc":{"start":{"line":141,"column":2},"end":{"line":143,"column":2}}},"16":{"name":"deleteBool","line":148,"loc":{"start":{"line":148,"column":2},"end":{"line":150,"column":2}}},"17":{"name":"deleteInt","line":155,"loc":{"start":{"line":155,"column":2},"end":{"line":157,"column":2}}},"18":{"name":"deleteBytes","line":162,"loc":{"start":{"line":162,"column":2},"end":{"line":164,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":30}},"2":{"start":{"line":37,"column":4},"end":{"line":37,"column":32}},"3":{"start":{"line":44,"column":4},"end":{"line":44,"column":33}},"4":{"start":{"line":51,"column":4},"end":{"line":51,"column":30}},"5":{"start":{"line":58,"column":4},"end":{"line":58,"column":29}},"6":{"start":{"line":65,"column":4},"end":{"line":65,"column":31}},"7":{"start":{"line":77,"column":4},"end":{"line":77,"column":31}},"8":{"start":{"line":85,"column":4},"end":{"line":85,"column":33}},"9":{"start":{"line":93,"column":4},"end":{"line":93,"column":34}},"10":{"start":{"line":101,"column":4},"end":{"line":101,"column":31}},"11":{"start":{"line":109,"column":4},"end":{"line":109,"column":30}},"12":{"start":{"line":117,"column":4},"end":{"line":117,"column":32}}},"branchMap":{}},"src/models/Token.sol":{"l":{"42":4031,"43":4031,"45":4031,"46":4027,"47":4027,"48":4027,"49":4027,"50":4027,"51":4027,"52":4027,"53":4027,"54":4027,"55":4027,"58":4031,"62":451,"66":1544,"68":1544,"69":1544,"77":1934,"84":1934,"85":1934,"86":1934,"87":1933,"88":1933,"89":1927,"90":1927,"91":1900,"93":1894,"99":1122,"103":4897},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Token.sol","s":{"1":4031,"2":4031,"3":4031,"4":4027,"5":4027,"6":4027,"7":4027,"8":4027,"9":4027,"10":4027,"11":4027,"12":4027,"13":4027,"14":4031,"15":451,"16":1544,"17":1544,"18":1544,"19":1934,"20":1934,"21":1934,"22":1934,"23":1933,"24":1933,"25":1927,"26":1927,"27":1900,"28":1894,"29":1122,"30":4897},"b":{"1":[4027,4],"2":[1544,0],"3":[1934,0]},"f":{"1":4031,"2":451,"3":1544,"4":1934,"5":1122,"6":4897},"fnMap":{"1":{"name":"deserialize","line":37,"loc":{"start":{"line":37,"column":2},"end":{"line":59,"column":2}}},"2":{"name":"exists","line":61,"loc":{"start":{"line":61,"column":2},"end":{"line":63,"column":2}}},"3":{"name":"incrementCounter","line":65,"loc":{"start":{"line":65,"column":2},"end":{"line":70,"column":2}}},"4":{"name":"serialize","line":76,"loc":{"start":{"line":76,"column":2},"end":{"line":94,"column":2}}},"5":{"name":"updateNumberOfTokenHolders","line":96,"loc":{"start":{"line":96,"column":2},"end":{"line":100,"column":2}}},"6":{"name":"_exists","line":102,"loc":{"start":{"line":102,"column":2},"end":{"line":104,"column":2}}}},"statementMap":{"1":{"start":{"line":42,"column":4},"end":{"line":42,"column":22}},"2":{"start":{"line":43,"column":4},"end":{"line":43,"column":32}},"3":{"start":{"line":45,"column":4},"end":{"line":45,"column":1269}},"4":{"start":{"line":46,"column":6},"end":{"line":46,"column":70}},"5":{"start":{"line":47,"column":6},"end":{"line":47,"column":64}},"6":{"start":{"line":48,"column":6},"end":{"line":48,"column":76}},"7":{"start":{"line":49,"column":6},"end":{"line":49,"column":58}},"8":{"start":{"line":50,"column":6},"end":{"line":50,"column":68}},"9":{"start":{"line":51,"column":6},"end":{"line":51,"column":58}},"10":{"start":{"line":52,"column":6},"end":{"line":52,"column":90}},"11":{"start":{"line":53,"column":6},"end":{"line":53,"column":66}},"12":{"start":{"line":54,"column":6},"end":{"line":54,"column":96}},"13":{"start":{"line":55,"column":6},"end":{"line":55,"column":70}},"14":{"start":{"line":58,"column":4},"end":{"line":58,"column":17}},"15":{"start":{"line":62,"column":4},"end":{"line":62,"column":25}},"16":{"start":{"line":66,"column":4},"end":{"line":66,"column":65}},"17":{"start":{"line":68,"column":4},"end":{"line":68,"column":76}},"18":{"start":{"line":69,"column":4},"end":{"line":69,"column":83}},"19":{"start":{"line":77,"column":4},"end":{"line":77,"column":2629}},"20":{"start":{"line":84,"column":4},"end":{"line":84,"column":69}},"21":{"start":{"line":85,"column":4},"end":{"line":85,"column":73}},"22":{"start":{"line":86,"column":4},"end":{"line":86,"column":67}},"23":{"start":{"line":87,"column":4},"end":{"line":87,"column":79}},"24":{"start":{"line":88,"column":4},"end":{"line":88,"column":61}},"25":{"start":{"line":89,"column":4},"end":{"line":89,"column":71}},"26":{"start":{"line":90,"column":4},"end":{"line":90,"column":61}},"27":{"start":{"line":91,"column":4},"end":{"line":91,"column":93}},"28":{"start":{"line":93,"column":4},"end":{"line":93,"column":62}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":92}},"30":{"start":{"line":103,"column":4},"end":{"line":103,"column":58}}},"branchMap":{"1":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":45,"column":4}},{"start":{"line":45,"column":4},"end":{"line":45,"column":4}}]},"2":{"line":66,"type":"if","locations":[{"start":{"line":66,"column":4},"end":{"line":66,"column":4}},{"start":{"line":66,"column":4},"end":{"line":66,"column":4}}]},"3":{"line":77,"type":"if","locations":[{"start":{"line":77,"column":4},"end":{"line":77,"column":4}},{"start":{"line":77,"column":4},"end":{"line":77,"column":4}}]}}},"src/models/TokenHolder.sol":{"l":{"30":1560,"31":1560,"32":1560,"34":1560,"35":1560,"36":1560,"37":1560,"39":1560,"40":438,"41":438,"44":1560,"48":0,"49":0,"51":0,"59":1544,"61":1544,"62":1544,"64":1544,"68":3120},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/TokenHolder.sol","s":{"1":1560,"2":1560,"3":1560,"4":1560,"5":1560,"6":1560,"7":1560,"8":1560,"9":438,"10":438,"11":1560,"12":0,"13":0,"14":0,"15":1544,"16":1544,"17":1544,"18":1544,"19":3120},"b":{"1":[438,1122],"2":[1544,0]},"f":{"1":1560,"2":0,"3":1544,"4":3120},"fnMap":{"1":{"name":"deserialize","line":25,"loc":{"start":{"line":25,"column":2},"end":{"line":45,"column":2}}},"2":{"name":"exists","line":47,"loc":{"start":{"line":47,"column":2},"end":{"line":52,"column":2}}},"3":{"name":"serialize","line":58,"loc":{"start":{"line":58,"column":2},"end":{"line":65,"column":2}}},"4":{"name":"_exists","line":67,"loc":{"start":{"line":67,"column":2},"end":{"line":69,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":28}},"2":{"start":{"line":31,"column":4},"end":{"line":31,"column":32}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":24}},"4":{"start":{"line":34,"column":4},"end":{"line":34,"column":36}},"5":{"start":{"line":35,"column":4},"end":{"line":35,"column":45}},"6":{"start":{"line":36,"column":4},"end":{"line":36,"column":37}},"7":{"start":{"line":37,"column":4},"end":{"line":37,"column":33}},"8":{"start":{"line":39,"column":4},"end":{"line":39,"column":1197}},"9":{"start":{"line":40,"column":6},"end":{"line":40,"column":98}},"10":{"start":{"line":41,"column":6},"end":{"line":41,"column":96}},"11":{"start":{"line":44,"column":4},"end":{"line":44,"column":17}},"12":{"start":{"line":48,"column":4},"end":{"line":48,"column":24}},"13":{"start":{"line":49,"column":4},"end":{"line":49,"column":45}},"14":{"start":{"line":51,"column":4},"end":{"line":51,"column":36}},"15":{"start":{"line":59,"column":4},"end":{"line":59,"column":71}},"16":{"start":{"line":61,"column":4},"end":{"line":61,"column":95}},"17":{"start":{"line":62,"column":4},"end":{"line":62,"column":93}},"18":{"start":{"line":64,"column":4},"end":{"line":64,"column":84}},"19":{"start":{"line":68,"column":4},"end":{"line":68,"column":74}}},"branchMap":{"1":{"line":39,"type":"if","locations":[{"start":{"line":39,"column":4},"end":{"line":39,"column":4}},{"start":{"line":39,"column":4},"end":{"line":39,"column":4}}]},"2":{"line":59,"type":"if","locations":[{"start":{"line":59,"column":4},"end":{"line":59,"column":4}},{"start":{"line":59,"column":4},"end":{"line":59,"column":4}}]}}},"src/services/Configurator.sol":{"l":{"30":412,"31":412,"32":412,"33":412,"34":412,"35":412,"36":412,"37":412,"38":412,"50":412,"52":412,"55":412,"56":412,"57":412,"58":412,"61":412,"63":412,"64":412,"89":442,"90":442,"91":442,"92":442,"93":442,"94":442,"95":442,"96":442,"97":442,"98":442,"99":442,"101":415,"102":415,"103":415,"105":341},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/services/Configurator.sol","s":{"1":412,"2":412,"3":412,"4":412,"5":412,"6":412,"7":412,"8":412,"9":412,"10":412,"11":412,"12":412,"13":412,"14":412,"15":412,"16":412,"17":412,"18":412,"19":442,"20":442,"21":442,"22":442,"23":442,"24":442,"25":442,"26":442,"27":442,"28":442,"29":442,"30":415,"31":415,"32":415,"33":341},"b":{},"f":{"1":412,"2":412,"3":442},"fnMap":{"1":{"name":"buildDAO","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":39,"column":2}}},"2":{"name":"buildEcosystem","line":46,"loc":{"start":{"line":46,"column":2},"end":{"line":65,"column":2}}},"3":{"name":"buildToken","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":106,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":52}},"2":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":29}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":19}},"5":{"start":{"line":34,"column":4},"end":{"line":34,"column":45}},"6":{"start":{"line":35,"column":4},"end":{"line":35,"column":23}},"7":{"start":{"line":36,"column":4},"end":{"line":36,"column":29}},"8":{"start":{"line":37,"column":4},"end":{"line":37,"column":28}},"9":{"start":{"line":38,"column":4},"end":{"line":38,"column":14}},"10":{"start":{"line":50,"column":4},"end":{"line":50,"column":74}},"11":{"start":{"line":52,"column":4},"end":{"line":52,"column":36}},"12":{"start":{"line":55,"column":4},"end":{"line":55,"column":55}},"13":{"start":{"line":56,"column":4},"end":{"line":56,"column":67}},"14":{"start":{"line":57,"column":4},"end":{"line":57,"column":71}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":59}},"16":{"start":{"line":61,"column":4},"end":{"line":61,"column":63}},"17":{"start":{"line":63,"column":4},"end":{"line":63,"column":40}},"18":{"start":{"line":64,"column":4},"end":{"line":64,"column":20}},"19":{"start":{"line":89,"column":4},"end":{"line":89,"column":60}},"20":{"start":{"line":90,"column":4},"end":{"line":90,"column":21}},"21":{"start":{"line":91,"column":4},"end":{"line":91,"column":31}},"22":{"start":{"line":92,"column":4},"end":{"line":92,"column":33}},"23":{"start":{"line":93,"column":4},"end":{"line":93,"column":15}},"24":{"start":{"line":94,"column":4},"end":{"line":94,"column":19}},"25":{"start":{"line":95,"column":4},"end":{"line":95,"column":32}},"26":{"start":{"line":96,"column":4},"end":{"line":96,"column":47}},"27":{"start":{"line":97,"column":4},"end":{"line":97,"column":21}},"28":{"start":{"line":98,"column":4},"end":{"line":98,"column":25}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":97}},"30":{"start":{"line":101,"column":4},"end":{"line":101,"column":49}},"31":{"start":{"line":102,"column":4},"end":{"line":102,"column":68}},"32":{"start":{"line":103,"column":4},"end":{"line":103,"column":32}},"33":{"start":{"line":105,"column":4},"end":{"line":105,"column":16}}},"branchMap":{}},"src/tokens/ElasticGovernanceToken.sol":{"l":{"28":706,"29":706,"33":29,"34":28,"38":1477,"39":1476,"43":442,"44":442,"45":442,"46":442,"59":3,"78":6,"79":6,"88":13,"89":13,"90":13,"92":13,"101":1,"102":1,"106":2,"107":2,"108":2,"109":2,"111":2,"112":1,"114":1,"130":14,"131":12,"146":14,"147":14,"155":1,"165":3,"167":3,"169":3,"170":3,"180":6,"181":6,"191":3,"193":3,"208":1473,"209":1411,"217":1,"221":1,"225":353,"229":353,"238":1,"251":18,"252":18,"256":1,"257":1,"269":6,"270":6,"288":14,"290":14,"292":13,"293":13,"295":13,"298":11,"308":15,"309":15,"311":15,"313":15,"317":14,"318":14,"319":14,"323":28,"324":28,"325":28,"326":28,"327":28,"329":28,"331":28,"332":28,"334":28,"335":28,"336":26,"340":3,"341":3,"342":3,"346":1476,"347":1476,"348":1476,"349":1476,"350":1476,"352":1476,"354":1476,"356":1476,"357":1476,"359":1476,"360":1476,"361":1475,"363":1445,"371":20,"372":20,"373":20,"375":20,"376":20,"377":20,"378":20,"380":20,"381":20,"383":20,"384":20,"386":20,"387":20,"388":20,"389":19,"390":19,"392":19,"401":1544,"403":1544,"404":1544,"406":1544,"407":1496,"409":48,"412":1544,"414":1544,"423":1539,"424":1122,"427":1509,"428":0,"435":4682,"439":1560,"440":1560,"449":54,"450":54},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/tokens/ElasticGovernanceToken.sol","s":{"1":706,"2":29,"3":1477,"4":442,"5":442,"6":442,"7":442,"8":3,"9":6,"10":6,"11":13,"12":13,"13":13,"14":13,"15":1,"16":1,"17":2,"18":2,"19":2,"20":2,"21":2,"22":1,"23":1,"24":14,"25":12,"26":14,"27":14,"28":1,"29":3,"30":3,"31":3,"32":3,"33":6,"34":6,"35":3,"36":3,"37":1473,"38":1411,"39":1,"40":1,"41":353,"42":353,"43":1,"44":18,"45":18,"46":1,"47":1,"48":6,"49":6,"50":14,"51":14,"52":13,"53":13,"54":13,"55":11,"56":15,"57":15,"58":15,"59":15,"60":14,"61":14,"62":14,"63":28,"64":28,"65":28,"66":28,"67":28,"68":28,"69":28,"70":28,"71":28,"72":28,"73":26,"74":3,"75":3,"76":3,"77":1476,"78":1476,"79":1476,"80":1476,"81":1476,"82":1476,"83":1476,"84":1476,"85":1476,"86":1476,"87":1476,"88":1475,"89":1445,"90":20,"91":20,"92":20,"93":20,"94":20,"95":20,"96":20,"97":20,"98":20,"99":20,"100":20,"101":20,"102":20,"103":20,"104":19,"105":19,"106":19,"107":1544,"108":1544,"109":1544,"110":1544,"111":1496,"112":48,"113":1544,"114":1544,"115":1539,"116":1122,"117":1509,"118":0,"119":4682,"120":1560,"121":1560,"122":54,"123":54},"b":{"1":[706,0],"2":[28,1],"3":[1476,1],"4":[1,1],"5":[3,0],"6":[14,0],"7":[13,0],"8":[15,0],"9":[15,0],"10":[1496,48],"11":[1122,417],"12":[0,1509]},"f":{"1":706,"2":29,"3":1477,"4":442,"5":3,"6":6,"7":13,"8":1,"9":2,"10":14,"11":14,"12":1,"13":3,"14":6,"15":3,"16":1473,"17":1,"18":1,"19":353,"20":353,"21":1,"22":18,"23":1,"24":6,"25":14,"26":15,"27":14,"28":28,"29":3,"30":1476,"31":20,"32":1544,"33":1539,"34":4682,"35":1560,"36":54},"fnMap":{"1":{"name":"onlyDAO","line":27,"loc":{"start":{"line":27,"column":2},"end":{"line":30,"column":2}}},"2":{"name":"onlyDAOorBurner","line":32,"loc":{"start":{"line":32,"column":2},"end":{"line":35,"column":2}}},"3":{"name":"onlyDAOorMinter","line":37,"loc":{"start":{"line":37,"column":2},"end":{"line":40,"column":2}}},"4":{"name":"constructor","line":42,"loc":{"start":{"line":42,"column":2},"end":{"line":47,"column":2}}},"5":{"name":"allowance","line":58,"loc":{"start":{"line":58,"column":2},"end":{"line":60,"column":2}}},"6":{"name":"approve","line":77,"loc":{"start":{"line":77,"column":2},"end":{"line":80,"column":2}}},"7":{"name":"balanceOf","line":87,"loc":{"start":{"line":87,"column":2},"end":{"line":93,"column":2}}},"8":{"name":"balanceOfInShares","line":100,"loc":{"start":{"line":100,"column":2},"end":{"line":103,"column":2}}},"9":{"name":"balanceOfVoting","line":105,"loc":{"start":{"line":105,"column":2},"end":{"line":116,"column":2}}},"10":{"name":"burn","line":127,"loc":{"start":{"line":124,"column":2},"end":{"line":132,"column":2}}},"11":{"name":"burnShares","line":143,"loc":{"start":{"line":140,"column":2},"end":{"line":148,"column":2}}},"12":{"name":"decimals","line":154,"loc":{"start":{"line":154,"column":2},"end":{"line":156,"column":2}}},"13":{"name":"decreaseAllowance","line":164,"loc":{"start":{"line":164,"column":2},"end":{"line":171,"column":2}}},"14":{"name":"increaseAllowance","line":179,"loc":{"start":{"line":179,"column":2},"end":{"line":182,"column":2}}},"15":{"name":"mint","line":190,"loc":{"start":{"line":190,"column":2},"end":{"line":194,"column":2}}},"16":{"name":"mintShares","line":205,"loc":{"start":{"line":202,"column":2},"end":{"line":210,"column":2}}},"17":{"name":"name","line":216,"loc":{"start":{"line":216,"column":2},"end":{"line":218,"column":2}}},"18":{"name":"numberOfTokenHolders","line":220,"loc":{"start":{"line":220,"column":2},"end":{"line":222,"column":2}}},"19":{"name":"setBurner","line":224,"loc":{"start":{"line":224,"column":2},"end":{"line":226,"column":2}}},"20":{"name":"setMinter","line":228,"loc":{"start":{"line":228,"column":2},"end":{"line":230,"column":2}}},"21":{"name":"symbol","line":237,"loc":{"start":{"line":237,"column":2},"end":{"line":239,"column":2}}},"22":{"name":"totalSupply","line":250,"loc":{"start":{"line":250,"column":2},"end":{"line":253,"column":2}}},"23":{"name":"totalSupplyInShares","line":255,"loc":{"start":{"line":255,"column":2},"end":{"line":258,"column":2}}},"24":{"name":"transfer","line":268,"loc":{"start":{"line":268,"column":2},"end":{"line":271,"column":2}}},"25":{"name":"transferFrom","line":283,"loc":{"start":{"line":283,"column":2},"end":{"line":299,"column":2}}},"26":{"name":"_approve","line":303,"loc":{"start":{"line":303,"column":2},"end":{"line":314,"column":2}}},"27":{"name":"_burn","line":316,"loc":{"start":{"line":316,"column":2},"end":{"line":320,"column":2}}},"28":{"name":"_burnShares","line":322,"loc":{"start":{"line":322,"column":2},"end":{"line":337,"column":2}}},"29":{"name":"_mint","line":339,"loc":{"start":{"line":339,"column":2},"end":{"line":343,"column":2}}},"30":{"name":"_mintShares","line":345,"loc":{"start":{"line":345,"column":2},"end":{"line":364,"column":2}}},"31":{"name":"_transfer","line":366,"loc":{"start":{"line":366,"column":2},"end":{"line":393,"column":2}}},"32":{"name":"_updateBalance","line":395,"loc":{"start":{"line":395,"column":2},"end":{"line":415,"column":2}}},"33":{"name":"_updateNumberOfTokenHolders","line":417,"loc":{"start":{"line":417,"column":2},"end":{"line":430,"column":2}}},"34":{"name":"_getEcosystem","line":434,"loc":{"start":{"line":434,"column":2},"end":{"line":436,"column":2}}},"35":{"name":"_getTokenHolder","line":438,"loc":{"start":{"line":438,"column":2},"end":{"line":446,"column":2}}},"36":{"name":"_getToken","line":448,"loc":{"start":{"line":448,"column":2},"end":{"line":451,"column":2}}}},"statementMap":{"1":{"start":{"line":28,"column":4},"end":{"line":28,"column":90}},"2":{"start":{"line":33,"column":4},"end":{"line":33,"column":90}},"3":{"start":{"line":38,"column":4},"end":{"line":38,"column":90}},"4":{"start":{"line":43,"column":4},"end":{"line":43,"column":23}},"5":{"start":{"line":44,"column":4},"end":{"line":44,"column":27}},"6":{"start":{"line":45,"column":4},"end":{"line":45,"column":49}},"7":{"start":{"line":46,"column":4},"end":{"line":46,"column":23}},"8":{"start":{"line":59,"column":4},"end":{"line":59,"column":40}},"9":{"start":{"line":78,"column":4},"end":{"line":78,"column":42}},"10":{"start":{"line":79,"column":4},"end":{"line":79,"column":15}},"11":{"start":{"line":88,"column":4},"end":{"line":88,"column":45}},"12":{"start":{"line":89,"column":4},"end":{"line":89,"column":71}},"13":{"start":{"line":90,"column":4},"end":{"line":90,"column":67}},"14":{"start":{"line":92,"column":4},"end":{"line":92,"column":12}},"15":{"start":{"line":101,"column":4},"end":{"line":101,"column":71}},"16":{"start":{"line":102,"column":4},"end":{"line":102,"column":29}},"17":{"start":{"line":106,"column":4},"end":{"line":106,"column":45}},"18":{"start":{"line":107,"column":4},"end":{"line":107,"column":71}},"19":{"start":{"line":108,"column":4},"end":{"line":108,"column":59}},"20":{"start":{"line":109,"column":4},"end":{"line":109,"column":58}},"21":{"start":{"line":111,"column":4},"end":{"line":111,"column":3813}},"22":{"start":{"line":112,"column":6},"end":{"line":112,"column":61}},"23":{"start":{"line":114,"column":6},"end":{"line":114,"column":64}},"24":{"start":{"line":130,"column":4},"end":{"line":130,"column":27}},"25":{"start":{"line":131,"column":4},"end":{"line":131,"column":15}},"26":{"start":{"line":146,"column":4},"end":{"line":146,"column":33}},"27":{"start":{"line":147,"column":4},"end":{"line":147,"column":15}},"28":{"start":{"line":155,"column":4},"end":{"line":155,"column":13}},"29":{"start":{"line":165,"column":4},"end":{"line":165,"column":92}},"30":{"start":{"line":167,"column":4},"end":{"line":167,"column":74}},"31":{"start":{"line":169,"column":4},"end":{"line":169,"column":47}},"32":{"start":{"line":170,"column":4},"end":{"line":170,"column":15}},"33":{"start":{"line":180,"column":4},"end":{"line":180,"column":95}},"34":{"start":{"line":181,"column":4},"end":{"line":181,"column":15}},"35":{"start":{"line":191,"column":4},"end":{"line":191,"column":27}},"36":{"start":{"line":193,"column":4},"end":{"line":193,"column":15}},"37":{"start":{"line":208,"column":4},"end":{"line":208,"column":33}},"38":{"start":{"line":209,"column":4},"end":{"line":209,"column":15}},"39":{"start":{"line":217,"column":4},"end":{"line":217,"column":27}},"40":{"start":{"line":221,"column":4},"end":{"line":221,"column":43}},"41":{"start":{"line":225,"column":4},"end":{"line":225,"column":19}},"42":{"start":{"line":229,"column":4},"end":{"line":229,"column":19}},"43":{"start":{"line":238,"column":4},"end":{"line":238,"column":29}},"44":{"start":{"line":251,"column":4},"end":{"line":251,"column":45}},"45":{"start":{"line":252,"column":4},"end":{"line":252,"column":56}},"46":{"start":{"line":256,"column":4},"end":{"line":256,"column":45}},"47":{"start":{"line":257,"column":4},"end":{"line":257,"column":23}},"48":{"start":{"line":269,"column":4},"end":{"line":269,"column":38}},"49":{"start":{"line":270,"column":4},"end":{"line":270,"column":15}},"50":{"start":{"line":288,"column":4},"end":{"line":288,"column":97}},"51":{"start":{"line":290,"column":4},"end":{"line":290,"column":33}},"52":{"start":{"line":292,"column":4},"end":{"line":292,"column":9064}},"53":{"start":{"line":293,"column":6},"end":{"line":293,"column":91}},"54":{"start":{"line":295,"column":6},"end":{"line":295,"column":68}},"55":{"start":{"line":298,"column":4},"end":{"line":298,"column":15}},"56":{"start":{"line":308,"column":4},"end":{"line":308,"column":72}},"57":{"start":{"line":309,"column":4},"end":{"line":309,"column":72}},"58":{"start":{"line":311,"column":4},"end":{"line":311,"column":42}},"59":{"start":{"line":313,"column":4},"end":{"line":313,"column":44}},"60":{"start":{"line":317,"column":4},"end":{"line":317,"column":45}},"61":{"start":{"line":318,"column":4},"end":{"line":318,"column":76}},"62":{"start":{"line":319,"column":4},"end":{"line":319,"column":37}},"63":{"start":{"line":323,"column":4},"end":{"line":323,"column":57}},"64":{"start":{"line":324,"column":4},"end":{"line":324,"column":59}},"65":{"start":{"line":325,"column":4},"end":{"line":325,"column":84}},"66":{"start":{"line":326,"column":4},"end":{"line":326,"column":71}},"67":{"start":{"line":327,"column":4},"end":{"line":327,"column":52}},"68":{"start":{"line":329,"column":4},"end":{"line":329,"column":72}},"69":{"start":{"line":331,"column":4},"end":{"line":331,"column":58}},"70":{"start":{"line":332,"column":4},"end":{"line":332,"column":32}},"71":{"start":{"line":334,"column":4},"end":{"line":334,"column":83}},"72":{"start":{"line":335,"column":4},"end":{"line":335,"column":44}},"73":{"start":{"line":336,"column":4},"end":{"line":336,"column":84}},"74":{"start":{"line":340,"column":4},"end":{"line":340,"column":45}},"75":{"start":{"line":341,"column":4},"end":{"line":341,"column":76}},"76":{"start":{"line":342,"column":4},"end":{"line":342,"column":37}},"77":{"start":{"line":346,"column":4},"end":{"line":346,"column":57}},"78":{"start":{"line":347,"column":4},"end":{"line":347,"column":59}},"79":{"start":{"line":348,"column":4},"end":{"line":348,"column":84}},"80":{"start":{"line":349,"column":4},"end":{"line":349,"column":71}},"81":{"start":{"line":350,"column":4},"end":{"line":350,"column":52}},"82":{"start":{"line":352,"column":4},"end":{"line":352,"column":66}},"83":{"start":{"line":354,"column":4},"end":{"line":354,"column":71}},"84":{"start":{"line":356,"column":4},"end":{"line":356,"column":58}},"85":{"start":{"line":357,"column":4},"end":{"line":357,"column":32}},"86":{"start":{"line":359,"column":4},"end":{"line":359,"column":83}},"87":{"start":{"line":360,"column":4},"end":{"line":360,"column":44}},"88":{"start":{"line":361,"column":4},"end":{"line":361,"column":84}},"89":{"start":{"line":363,"column":4},"end":{"line":363,"column":47}},"90":{"start":{"line":371,"column":4},"end":{"line":371,"column":57}},"91":{"start":{"line":372,"column":4},"end":{"line":372,"column":59}},"92":{"start":{"line":373,"column":4},"end":{"line":373,"column":84}},"93":{"start":{"line":375,"column":4},"end":{"line":375,"column":72}},"94":{"start":{"line":376,"column":4},"end":{"line":376,"column":68}},"95":{"start":{"line":377,"column":4},"end":{"line":377,"column":60}},"96":{"start":{"line":378,"column":4},"end":{"line":378,"column":56}},"97":{"start":{"line":380,"column":4},"end":{"line":380,"column":76}},"98":{"start":{"line":381,"column":4},"end":{"line":381,"column":65}},"99":{"start":{"line":383,"column":4},"end":{"line":383,"column":79}},"100":{"start":{"line":384,"column":4},"end":{"line":384,"column":74}},"101":{"start":{"line":386,"column":4},"end":{"line":386,"column":83}},"102":{"start":{"line":387,"column":4},"end":{"line":387,"column":48}},"103":{"start":{"line":388,"column":4},"end":{"line":388,"column":46}},"104":{"start":{"line":389,"column":4},"end":{"line":389,"column":92}},"105":{"start":{"line":390,"column":4},"end":{"line":390,"column":88}},"106":{"start":{"line":392,"column":4},"end":{"line":392,"column":37}},"107":{"start":{"line":401,"column":4},"end":{"line":401,"column":57}},"108":{"start":{"line":403,"column":4},"end":{"line":403,"column":51}},"109":{"start":{"line":404,"column":4},"end":{"line":404,"column":63}},"110":{"start":{"line":406,"column":4},"end":{"line":406,"column":13569}},"111":{"start":{"line":407,"column":6},"end":{"line":407,"column":74}},"112":{"start":{"line":409,"column":6},"end":{"line":409,"column":74}},"113":{"start":{"line":412,"column":4},"end":{"line":412,"column":62}},"114":{"start":{"line":414,"column":4},"end":{"line":414,"column":23}},"115":{"start":{"line":423,"column":4},"end":{"line":423,"column":14049}},"116":{"start":{"line":424,"column":6},"end":{"line":424,"column":96}},"117":{"start":{"line":427,"column":4},"end":{"line":427,"column":14220}},"118":{"start":{"line":428,"column":6},"end":{"line":428,"column":96}},"119":{"start":{"line":435,"column":4},"end":{"line":435,"column":67}},"120":{"start":{"line":439,"column":4},"end":{"line":439,"column":57}},"121":{"start":{"line":440,"column":4},"end":{"line":440,"column":14723}},"122":{"start":{"line":449,"column":4},"end":{"line":449,"column":57}},"123":{"start":{"line":450,"column":4},"end":{"line":450,"column":83}}},"branchMap":{"1":{"line":28,"type":"if","locations":[{"start":{"line":28,"column":4},"end":{"line":28,"column":4}},{"start":{"line":28,"column":4},"end":{"line":28,"column":4}}]},"2":{"line":33,"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":33,"column":4}},{"start":{"line":33,"column":4},"end":{"line":33,"column":4}}]},"3":{"line":38,"type":"if","locations":[{"start":{"line":38,"column":4},"end":{"line":38,"column":4}},{"start":{"line":38,"column":4},"end":{"line":38,"column":4}}]},"4":{"line":111,"type":"if","locations":[{"start":{"line":111,"column":4},"end":{"line":111,"column":4}},{"start":{"line":111,"column":4},"end":{"line":111,"column":4}}]},"5":{"line":167,"type":"if","locations":[{"start":{"line":167,"column":4},"end":{"line":167,"column":4}},{"start":{"line":167,"column":4},"end":{"line":167,"column":4}}]},"6":{"line":288,"type":"if","locations":[{"start":{"line":288,"column":4},"end":{"line":288,"column":4}},{"start":{"line":288,"column":4},"end":{"line":288,"column":4}}]},"7":{"line":292,"type":"if","locations":[{"start":{"line":292,"column":4},"end":{"line":292,"column":4}},{"start":{"line":292,"column":4},"end":{"line":292,"column":4}}]},"8":{"line":308,"type":"if","locations":[{"start":{"line":308,"column":4},"end":{"line":308,"column":4}},{"start":{"line":308,"column":4},"end":{"line":308,"column":4}}]},"9":{"line":309,"type":"if","locations":[{"start":{"line":309,"column":4},"end":{"line":309,"column":4}},{"start":{"line":309,"column":4},"end":{"line":309,"column":4}}]},"10":{"line":406,"type":"if","locations":[{"start":{"line":406,"column":4},"end":{"line":406,"column":4}},{"start":{"line":406,"column":4},"end":{"line":406,"column":4}}]},"11":{"line":423,"type":"if","locations":[{"start":{"line":423,"column":4},"end":{"line":423,"column":4}},{"start":{"line":423,"column":4},"end":{"line":423,"column":4}}]},"12":{"line":427,"type":"if","locations":[{"start":{"line":427,"column":4},"end":{"line":427,"column":4}},{"start":{"line":427,"column":4},"end":{"line":427,"column":4}}]}}}} \ No newline at end of file diff --git a/deploy/configurator.js b/deploy/configurator.js index bc16c1e..13206ec 100644 --- a/deploy/configurator.js +++ b/deploy/configurator.js @@ -5,6 +5,7 @@ module.exports = async ({ getNamedAccounts, deployments }) => { const configurator = await deploy('Configurator', { from: agent, args: [], + proxy: true, }); if (configurator.newlyDeployed) { diff --git a/deploy/dao.js b/deploy/dao.js index 8a208b0..a5b848e 100644 --- a/deploy/dao.js +++ b/deploy/dao.js @@ -5,6 +5,7 @@ module.exports = async ({ getNamedAccounts, deployments }) => { const daoModel = await deploy('DAO', { from: agent, args: [], + proxy: true, }); if (daoModel.newlyDeployed) { diff --git a/deploy/ecosystem.js b/deploy/ecosystem.js index d94c691..70a3a77 100644 --- a/deploy/ecosystem.js +++ b/deploy/ecosystem.js @@ -5,6 +5,7 @@ module.exports = async ({ getNamedAccounts, deployments }) => { const ecosystemModel = await deploy('Ecosystem', { from: agent, args: [], + proxy: true, }); if (ecosystemModel.newlyDeployed) { diff --git a/deploy/elasticDAOFactory.js b/deploy/elasticDAOFactory.js index 9e94592..5b4f957 100644 --- a/deploy/elasticDAOFactory.js +++ b/deploy/elasticDAOFactory.js @@ -7,6 +7,7 @@ module.exports = async ({ getNamedAccounts, deployments }) => { const elasticDAOFactory = await deploy('ElasticDAOFactory', { from: agent, args: [Ecosystem.address], + proxy: true, }); if (elasticDAOFactory.newlyDeployed) { diff --git a/deploy/token.js b/deploy/token.js index 0f9d372..45483fd 100644 --- a/deploy/token.js +++ b/deploy/token.js @@ -5,6 +5,7 @@ module.exports = async ({ getNamedAccounts, deployments }) => { const tokenModel = await deploy('Token', { from: agent, args: [], + proxy: true, }); if (tokenModel.newlyDeployed) { diff --git a/deploy/tokenHolder.js b/deploy/tokenHolder.js index b577aee..7547eba 100644 --- a/deploy/tokenHolder.js +++ b/deploy/tokenHolder.js @@ -5,6 +5,7 @@ module.exports = async ({ getNamedAccounts, deployments }) => { const tokenHolder = await deploy('TokenHolder', { from: agent, args: [], + proxy: true, }); if (tokenHolder.newlyDeployed) { diff --git a/src/models/TokenHolder.sol b/src/models/TokenHolder.sol index 7a11ab8..c7e2dd6 100644 --- a/src/models/TokenHolder.sol +++ b/src/models/TokenHolder.sol @@ -31,12 +31,11 @@ contract TokenHolder is EternalModel { record.ecosystem = _ecosystem; record.token = _token; - console.log("EXISTS DESERIALIZE"); + console.log('EXISTS DESERIALIZE'); console.logBool(_exists(_account, _token)); console.logAddress(record.account); console.log(record.token.uuid); - if (_exists(_account, _token)) { record.counter = getUint(keccak256(abi.encode(record.token.uuid, record.account, 'counter'))); record.lambda = getUint(keccak256(abi.encode(record.token.uuid, record.account, 'lambda'))); @@ -45,11 +44,8 @@ contract TokenHolder is EternalModel { return record; } - function exists( - address _account, - Token.Instance memory _token - ) external view returns (bool) { - console.log("EXISTS"); + function exists(address _account, Token.Instance memory _token) external view returns (bool) { + console.log('EXISTS'); console.logBool(_exists(_account, _token)); return _exists(_account, _token); @@ -68,10 +64,7 @@ contract TokenHolder is EternalModel { setBool(keccak256(abi.encode(record.token.uuid, record.account, 'exists')), true); } - function _exists( - address _account, - Token.Instance memory _token - ) internal view returns (bool) { + function _exists(address _account, Token.Instance memory _token) internal view returns (bool) { return getBool(keccak256(abi.encode(_token.uuid, _account, 'exists'))); } } diff --git a/test/tokenHolderModelTests.js b/test/tokenHolderModelTests.js index dc571b1..52e4ceb 100644 --- a/test/tokenHolderModelTests.js +++ b/test/tokenHolderModelTests.js @@ -1,19 +1,19 @@ -// const { expect } = require('chai'); -// const { ethers } = require('ethers'); -// const { deployments } = require('hardhat'); +// // const { expect } = require('chai'); +// // const { ethers } = require('ethers'); +// // const { deployments } = require('hardhat'); -const { signers, summonedDAO } = require('./helpers'); +// const { signers, summonedDAO } = require('./helpers'); -describe('ElasticDAO: TokenHolder Model', () => { - it.only('Should check to see if a token holder record exists by account address', async () => { - const dao = await summonedDAO(); - const { summoner1 } = await signers(); - const { TokenHolder } = dao.sdk.models; - const token = await dao.token(); +// describe('ElasticDAO: TokenHolder Model', () => { +// it.only('Should check to see if a token holder record exists by account address', async () => { +// const dao = await summonedDAO(); +// const { summoner1 } = await signers(); +// const { TokenHolder } = dao.sdk.models; +// const token = await dao.token(); - console.log('token', token.uuid, await TokenHolder.exists(summoner1.address, token)); - // const recordExists = await tokenHolderStorage.exists(summoner1.address, token); - // console.log('recordExits', recordExists); - // expect(recordExists).to.equal(true); - }); -}); +// console.log('token', token.uuid, await TokenHolder.exists(summoner1.address, token)); +// // const recordExists = await tokenHolderStorage.exists(summoner1.address, token); +// // console.log('recordExits', recordExists); +// // expect(recordExists).to.equal(true); +// }); +// }); From 3f7b4ce4ab5b5653b94056106c1f3f74ad4f5569 Mon Sep 17 00:00:00 2001 From: alleycatdev Date: Sun, 7 Feb 2021 16:48:41 -0500 Subject: [PATCH 023/118] gets tests passing with proxy deployments --- deploy/elasticDAOFactory.js | 2 +- deploy/initialDeployment.js | 10 +++++----- test/ecosystemTests.js | 10 +++++----- test/elasticDAOTests.js | 2 +- test/env.js | 10 +++++----- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/deploy/elasticDAOFactory.js b/deploy/elasticDAOFactory.js index 5b4f957..c96df09 100644 --- a/deploy/elasticDAOFactory.js +++ b/deploy/elasticDAOFactory.js @@ -2,7 +2,7 @@ module.exports = async ({ getNamedAccounts, deployments }) => { const { deploy, log } = deployments; const { agent } = await getNamedAccounts(); - const Ecosystem = await deployments.get('Ecosystem'); + const Ecosystem = await deployments.get('Ecosystem_Implementation'); const elasticDAOFactory = await deploy('ElasticDAOFactory', { from: agent, diff --git a/deploy/initialDeployment.js b/deploy/initialDeployment.js index e60f904..3210c59 100644 --- a/deploy/initialDeployment.js +++ b/deploy/initialDeployment.js @@ -5,16 +5,16 @@ module.exports = async ({ getNamedAccounts, deployments }) => { const { log } = deployments; const { agent } = await getNamedAccounts(); - const Configurator = await deployments.get('Configurator'); - const Dao = await deployments.get('DAO'); - const Ecosystem = await deployments.get('Ecosystem'); + const Configurator = await deployments.get('Configurator_Implementation'); + const Dao = await deployments.get('DAO_Implementation'); + const Ecosystem = await deployments.get('Ecosystem_Implementation'); const ecosystemStorage = new ethers.Contract( Ecosystem.address, Ecosystem.abi, hre.provider.getSigner(agent), ); - const Token = await deployments.get('Token'); - const TokenHolder = await deployments.get('TokenHolder'); + const Token = await deployments.get('Token_Implementation'); + const TokenHolder = await deployments.get('TokenHolder_Implementation'); const ecosystemStructArray = [ ethers.constants.AddressZero, diff --git a/test/ecosystemTests.js b/test/ecosystemTests.js index 1614ff3..0213281 100644 --- a/test/ecosystemTests.js +++ b/test/ecosystemTests.js @@ -16,12 +16,12 @@ describe('ElasticDAO: Ecosystem Model', () => { [agent] = await hre.getSigners(); // setup needed contracts - Configurator = await deployments.get('Configurator'); - Dao = await deployments.get('DAO'); - Ecosystem = await deployments.get('Ecosystem'); + Configurator = await deployments.get('Configurator_Implementation'); + Dao = await deployments.get('DAO_Implementation'); + Ecosystem = await deployments.get('Ecosystem_Implementation'); ecosystemStorage = new ethers.Contract(Ecosystem.address, Ecosystem.abi, agent); - TokenHolder = await deployments.get('TokenHolder'); - Token = await deployments.get('Token'); + TokenHolder = await deployments.get('TokenHolder_Implementation'); + Token = await deployments.get('Token_Implementation'); }); it('Should look up and return ecosystem instance record by uuid address', async () => { diff --git a/test/elasticDAOTests.js b/test/elasticDAOTests.js index c567a52..a741a11 100644 --- a/test/elasticDAOTests.js +++ b/test/elasticDAOTests.js @@ -245,7 +245,7 @@ describe('ElasticDAO: Core', () => { it('Should check to see if a instance record exists by daoAddress', async () => { const { agent } = await signers(); - const DAOModel = await deployments.get('DAO'); + const DAOModel = await deployments.get('DAO_Implementation'); const DAOModelStorage = new ethers.Contract(DAOModel.address, DAOModel.abi, agent); const ecosystem = await dao.elasticDAO.contract.getEcosystem(); const recordDoesntExist = await DAOModelStorage.exists(ethers.constants.AddressZero, ecosystem); diff --git a/test/env.js b/test/env.js index 88e12e1..cb3978c 100644 --- a/test/env.js +++ b/test/env.js @@ -2,11 +2,11 @@ const { deployments } = require('hardhat'); module.exports = async () => { const [DAO, Ecosystem, Factory, Token, TokenHolder] = await Promise.all([ - deployments.get('DAO'), - deployments.get('Ecosystem'), - deployments.get('ElasticDAOFactory'), - deployments.get('Token'), - deployments.get('TokenHolder'), + deployments.get('DAO_Implementation'), + deployments.get('Ecosystem_Implementation'), + deployments.get('ElasticDAOFactory_Implementation'), + deployments.get('Token_Implementation'), + deployments.get('TokenHolder_Implementation'), ]); const env = { elasticDAO: { From dfedae2764369ef3b7f1cfb008d85d4e69405f18 Mon Sep 17 00:00:00 2001 From: alleycatdev Date: Sun, 7 Feb 2021 17:06:02 -0500 Subject: [PATCH 024/118] adds a few events --- src/core/ElasticDAO.sol | 24 ++++++++++++++++++++---- src/core/ElasticDAOFactory.sol | 1 + 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index 7ca02d1..649cff5 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -19,9 +19,20 @@ contract ElasticDAO { uint256 public maxVotingLambda; event ElasticGovernanceTokenDeployed(address indexed tokenAddress); - event SettingsChanged(address indexed daoAddress, bytes32 settingName, uint256 value); - event ExitDAO(address indexed daoAddress, address indexed memberAddress, uint256 amount); - event JoinDAO(address indexed daoAddress, address indexed memberAddress, uint256 amount); + event MaxVotingLambdaChanged(address indexed daoAddress, bytes32 settingName, uint256 value); + event ControllerChanged(address indexed daoAddress, bytes32 settingName, address value); + event ExitDAO( + address indexed daoAddress, + address indexed memberAddress, + uint256 shareAmount, + uint256 ethAmount + ); + event JoinDAO( + address indexed daoAddress, + address indexed memberAddress, + uint256 shareAmount, + uint256 ethAmount + ); event SeedDAO(address indexed daoAddress, address indexed summonerAddress, uint256 amount); event SummonedDAO(address indexed daoAddress, address indexed summonedBy); @@ -94,6 +105,7 @@ contract ElasticDAO { uint256 ethToBeTransfered = ElasticMath.wmul(ratioOfShares, address(this).balance); // transfer the eth msg.sender.transfer(ethToBeTransfered); + emit ExitDAO(address(this), msg.sender, _deltaLambda, ethToBeTransfered); } function initializeToken( @@ -168,7 +180,7 @@ contract ElasticDAO { // tokencontract mint shares tokenContract.mintShares(msg.sender, _deltaLambda); - emit JoinDAO(address(this), msg.sender, _deltaLambda); + emit JoinDAO(address(this), msg.sender, _deltaLambda, msg.value); } function setController(address _controller) external onlyController { @@ -176,10 +188,14 @@ contract ElasticDAO { ElasticGovernanceToken tokenContract = ElasticGovernanceToken(_getToken().uuid); tokenContract.setBurner(controller); tokenContract.setMinter(controller); + + emit ControllerChanged(address(this), 'setController', controller); } function setMaxVotingLambda(uint256 _maxVotingLambda) external onlyController { maxVotingLambda = _maxVotingLambda; + + emit MaxVotingLambdaChanged(address(this), 'setMaxVotingLambda', _maxVotingLambda); } // Summoning diff --git a/src/core/ElasticDAOFactory.sol b/src/core/ElasticDAOFactory.sol index ab08cba..cc861f6 100644 --- a/src/core/ElasticDAOFactory.sol +++ b/src/core/ElasticDAOFactory.sol @@ -3,6 +3,7 @@ pragma solidity 0.7.2; pragma experimental ABIEncoderV2; import './ElasticDAO.sol'; + import '../models/Ecosystem.sol'; // This contract is the facory contract for ElasticDAO From 4469a69ab699aed0efcb3d164add8df505e0665c Mon Sep 17 00:00:00 2001 From: alleycatdev Date: Mon, 8 Feb 2021 14:02:29 -0500 Subject: [PATCH 025/118] updates token holder model test --- src/models/TokenHolder.sol | 8 -------- test/tokenHolderModelTests.js | 28 ++++++++++++---------------- 2 files changed, 12 insertions(+), 24 deletions(-) diff --git a/src/models/TokenHolder.sol b/src/models/TokenHolder.sol index c7e2dd6..a935189 100644 --- a/src/models/TokenHolder.sol +++ b/src/models/TokenHolder.sol @@ -31,11 +31,6 @@ contract TokenHolder is EternalModel { record.ecosystem = _ecosystem; record.token = _token; - console.log('EXISTS DESERIALIZE'); - console.logBool(_exists(_account, _token)); - console.logAddress(record.account); - console.log(record.token.uuid); - if (_exists(_account, _token)) { record.counter = getUint(keccak256(abi.encode(record.token.uuid, record.account, 'counter'))); record.lambda = getUint(keccak256(abi.encode(record.token.uuid, record.account, 'lambda'))); @@ -45,9 +40,6 @@ contract TokenHolder is EternalModel { } function exists(address _account, Token.Instance memory _token) external view returns (bool) { - console.log('EXISTS'); - console.logBool(_exists(_account, _token)); - return _exists(_account, _token); } diff --git a/test/tokenHolderModelTests.js b/test/tokenHolderModelTests.js index 52e4ceb..a71d362 100644 --- a/test/tokenHolderModelTests.js +++ b/test/tokenHolderModelTests.js @@ -1,19 +1,15 @@ -// // const { expect } = require('chai'); -// // const { ethers } = require('ethers'); -// // const { deployments } = require('hardhat'); +const { expect } = require('chai'); -// const { signers, summonedDAO } = require('./helpers'); +const { signers, summonedDAO } = require('./helpers'); -// describe('ElasticDAO: TokenHolder Model', () => { -// it.only('Should check to see if a token holder record exists by account address', async () => { -// const dao = await summonedDAO(); -// const { summoner1 } = await signers(); -// const { TokenHolder } = dao.sdk.models; -// const token = await dao.token(); +describe('ElasticDAO: TokenHolder Model', () => { + it('Should check to see if a token holder record exists by account address', async () => { + const dao = await summonedDAO(); + const { summoner1 } = await signers(); + const { TokenHolder } = dao.sdk.models; + const token = await dao.token(); -// console.log('token', token.uuid, await TokenHolder.exists(summoner1.address, token)); -// // const recordExists = await tokenHolderStorage.exists(summoner1.address, token); -// // console.log('recordExits', recordExists); -// // expect(recordExists).to.equal(true); -// }); -// }); + const recordExists = await TokenHolder.exists(summoner1.address, token); + expect(recordExists).to.equal(true); + }); +}); From a02682d8c51211e84ec0a814b265910ae0be2336 Mon Sep 17 00:00:00 2001 From: alleycatdev Date: Mon, 8 Feb 2021 18:32:03 -0500 Subject: [PATCH 026/118] release candadate 1 --- coverage.json | 2 +- deploy/initialDeployment.js | 1 + deploy/reentryProtection.js | 15 +++++ package.json | 2 +- src/core/ElasticDAO.sol | 22 ++++--- src/core/ElasticDAOFactory.sol | 9 +-- src/libraries/SafeMath.sol | 84 --------------------------- src/models/DAO.sol | 5 +- src/models/Ecosystem.sol | 7 ++- src/models/EternalModel.sol | 76 ------------------------ src/models/Token.sol | 7 ++- src/models/TokenHolder.sol | 6 +- src/services/ReentryProtection.sol | 25 ++++++++ src/tokens/ElasticGovernanceToken.sol | 23 +++++--- yarn.lock | 8 +-- 15 files changed, 95 insertions(+), 197 deletions(-) create mode 100644 deploy/reentryProtection.js create mode 100644 src/services/ReentryProtection.sol diff --git a/coverage.json b/coverage.json index 54514a8..cf78150 100644 --- a/coverage.json +++ b/coverage.json @@ -1 +1 @@ -{"src/core/ElasticDAO.sol":{"l":{"29":30,"30":30,"31":30,"34":451,"35":451,"37":451,"38":450,"41":1234,"42":1234,"43":1233,"46":17,"47":15,"50":443,"51":442,"54":790,"55":790,"56":790,"57":790,"59":790,"60":788,"63":16,"64":16,"74":412,"75":412,"76":412,"77":412,"78":412,"79":412,"81":412,"82":412,"83":412,"88":14,"89":14,"90":14,"93":14,"94":14,"96":14,"107":442,"108":442,"110":442,"121":341,"122":341,"123":341,"125":341,"129":16,"131":16,"136":16,"137":16,"146":16,"156":16,"159":15,"160":15,"163":15,"164":15,"165":15,"166":15,"169":15,"171":12,"175":12,"176":12,"177":12,"178":12,"182":3,"194":450,"196":450,"197":450,"198":450,"200":360,"204":337,"206":336,"207":336,"208":336,"209":336,"211":336,"213":336,"214":1008,"216":336,"217":336,"219":308,"225":1,"229":2,"235":1265,"236":1265,"240":4244,"244":492,"245":492},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAO.sol","s":{"1":30,"2":30,"3":451,"4":451,"5":451,"6":1234,"7":1234,"8":17,"9":443,"10":790,"11":790,"12":790,"13":790,"14":790,"15":16,"16":412,"17":412,"18":412,"19":412,"20":412,"21":412,"22":412,"23":412,"24":412,"25":14,"26":14,"27":14,"28":14,"29":14,"30":14,"31":442,"32":442,"33":442,"34":341,"35":341,"36":341,"37":341,"38":16,"39":16,"40":16,"41":16,"42":16,"43":16,"44":15,"45":15,"46":15,"47":15,"48":15,"49":15,"50":15,"51":12,"52":12,"53":12,"54":12,"55":12,"56":3,"57":450,"58":450,"59":450,"60":450,"61":360,"62":337,"63":336,"64":336,"65":336,"66":336,"67":336,"68":336,"69":1008,"70":336,"71":336,"72":308,"73":1,"74":2,"75":1265,"76":1265,"77":4244,"78":492,"79":492},"b":{"1":[30,0],"2":[450,1],"3":[1233,1],"4":[15,2],"5":[442,1],"6":[788,2],"7":[16,0],"8":[442,0],"9":[16,0],"10":[15,1],"11":[336,1]},"f":{"1":30,"2":451,"3":1234,"4":17,"5":443,"6":790,"7":16,"8":412,"9":14,"10":442,"11":16,"12":12,"13":3,"14":450,"15":337,"16":1,"17":2,"18":1265,"19":4244,"20":492,"21":0},"fnMap":{"1":{"name":"onlyAfterSummoning","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":32,"column":2}}},"2":{"name":"onlyAfterTokenInitialized","line":33,"loc":{"start":{"line":33,"column":2},"end":{"line":39,"column":2}}},"3":{"name":"onlyBeforeSummoning","line":40,"loc":{"start":{"line":40,"column":2},"end":{"line":44,"column":2}}},"4":{"name":"onlyController","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":48,"column":2}}},"5":{"name":"onlyDeployer","line":49,"loc":{"start":{"line":49,"column":2},"end":{"line":52,"column":2}}},"6":{"name":"onlySummoners","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":61,"column":2}}},"7":{"name":"onlyWhenOpen","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":65,"column":2}}},"8":{"name":"constructor","line":67,"loc":{"start":{"line":67,"column":2},"end":{"line":84,"column":2}}},"9":{"name":"exit","line":86,"loc":{"start":{"line":86,"column":2},"end":{"line":97,"column":2}}},"10":{"name":"initializeToken","line":106,"loc":{"start":{"line":99,"column":2},"end":{"line":126,"column":2}}},"11":{"name":"join","line":128,"loc":{"start":{"line":128,"column":2},"end":{"line":172,"column":2}}},"12":{"name":"setController","line":174,"loc":{"start":{"line":174,"column":2},"end":{"line":179,"column":2}}},"13":{"name":"setMaxVotingLambda","line":181,"loc":{"start":{"line":181,"column":2},"end":{"line":183,"column":2}}},"14":{"name":"seedSummoning","line":192,"loc":{"start":{"line":187,"column":2},"end":{"line":201,"column":2}}},"15":{"name":"summon","line":203,"loc":{"start":{"line":203,"column":2},"end":{"line":220,"column":2}}},"16":{"name":"getDAO","line":224,"loc":{"start":{"line":224,"column":2},"end":{"line":226,"column":2}}},"17":{"name":"getEcosystem","line":228,"loc":{"start":{"line":228,"column":2},"end":{"line":230,"column":2}}},"18":{"name":"_getDAO","line":234,"loc":{"start":{"line":234,"column":2},"end":{"line":237,"column":2}}},"19":{"name":"_getEcosystem","line":239,"loc":{"start":{"line":239,"column":2},"end":{"line":241,"column":2}}},"20":{"name":"_getToken","line":243,"loc":{"start":{"line":243,"column":2},"end":{"line":247,"column":2}}},"21":{"name":null,"line":251,"loc":{"start":{"line":251,"column":2},"end":{"line":251,"column":31}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":39}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":60}},"3":{"start":{"line":34,"column":4},"end":{"line":34,"column":57}},"4":{"start":{"line":35,"column":4},"end":{"line":35,"column":1351}},"5":{"start":{"line":37,"column":4},"end":{"line":37,"column":77}},"6":{"start":{"line":41,"column":4},"end":{"line":41,"column":39}},"7":{"start":{"line":42,"column":4},"end":{"line":42,"column":73}},"8":{"start":{"line":46,"column":4},"end":{"line":46,"column":67}},"9":{"start":{"line":50,"column":4},"end":{"line":50,"column":63}},"10":{"start":{"line":54,"column":4},"end":{"line":54,"column":57}},"11":{"start":{"line":55,"column":4},"end":{"line":55,"column":52}},"12":{"start":{"line":56,"column":4},"end":{"line":56,"column":79}},"13":{"start":{"line":57,"column":4},"end":{"line":57,"column":64}},"14":{"start":{"line":59,"column":4},"end":{"line":59,"column":55}},"15":{"start":{"line":63,"column":4},"end":{"line":63,"column":71}},"16":{"start":{"line":74,"column":4},"end":{"line":74,"column":49}},"17":{"start":{"line":75,"column":4},"end":{"line":75,"column":27}},"18":{"start":{"line":76,"column":4},"end":{"line":76,"column":24}},"19":{"start":{"line":77,"column":4},"end":{"line":77,"column":98}},"20":{"start":{"line":78,"column":4},"end":{"line":78,"column":40}},"21":{"start":{"line":79,"column":4},"end":{"line":79,"column":25}},"22":{"start":{"line":81,"column":4},"end":{"line":81,"column":74}},"23":{"start":{"line":82,"column":4},"end":{"line":82,"column":79}},"24":{"start":{"line":83,"column":4},"end":{"line":83,"column":74}},"25":{"start":{"line":88,"column":4},"end":{"line":88,"column":45}},"26":{"start":{"line":89,"column":4},"end":{"line":89,"column":77}},"27":{"start":{"line":90,"column":4},"end":{"line":90,"column":53}},"28":{"start":{"line":93,"column":4},"end":{"line":93,"column":72}},"29":{"start":{"line":94,"column":4},"end":{"line":94,"column":86}},"30":{"start":{"line":96,"column":4},"end":{"line":96,"column":41}},"31":{"start":{"line":107,"column":4},"end":{"line":107,"column":88}},"32":{"start":{"line":108,"column":4},"end":{"line":108,"column":57}},"33":{"start":{"line":110,"column":4},"end":{"line":110,"column":3971}},"34":{"start":{"line":121,"column":4},"end":{"line":121,"column":77}},"35":{"start":{"line":122,"column":4},"end":{"line":122,"column":38}},"36":{"start":{"line":123,"column":4},"end":{"line":123,"column":38}},"37":{"start":{"line":125,"column":4},"end":{"line":125,"column":51}},"38":{"start":{"line":129,"column":4},"end":{"line":129,"column":45}},"39":{"start":{"line":131,"column":4},"end":{"line":131,"column":4555}},"40":{"start":{"line":136,"column":4},"end":{"line":136,"column":77}},"41":{"start":{"line":137,"column":4},"end":{"line":137,"column":4766}},"42":{"start":{"line":146,"column":4},"end":{"line":146,"column":5212}},"43":{"start":{"line":156,"column":4},"end":{"line":156,"column":67}},"44":{"start":{"line":159,"column":4},"end":{"line":159,"column":65}},"45":{"start":{"line":160,"column":4},"end":{"line":160,"column":72}},"46":{"start":{"line":163,"column":4},"end":{"line":163,"column":57}},"47":{"start":{"line":164,"column":4},"end":{"line":164,"column":59}},"48":{"start":{"line":165,"column":4},"end":{"line":165,"column":18}},"49":{"start":{"line":166,"column":4},"end":{"line":166,"column":32}},"50":{"start":{"line":169,"column":4},"end":{"line":169,"column":53}},"51":{"start":{"line":171,"column":4},"end":{"line":171,"column":57}},"52":{"start":{"line":175,"column":4},"end":{"line":175,"column":27}},"53":{"start":{"line":176,"column":4},"end":{"line":176,"column":83}},"54":{"start":{"line":177,"column":4},"end":{"line":177,"column":38}},"55":{"start":{"line":178,"column":4},"end":{"line":178,"column":38}},"56":{"start":{"line":182,"column":4},"end":{"line":182,"column":37}},"57":{"start":{"line":194,"column":4},"end":{"line":194,"column":45}},"58":{"start":{"line":196,"column":4},"end":{"line":196,"column":30}},"59":{"start":{"line":197,"column":4},"end":{"line":197,"column":62}},"60":{"start":{"line":198,"column":4},"end":{"line":198,"column":73}},"61":{"start":{"line":200,"column":4},"end":{"line":200,"column":56}},"62":{"start":{"line":204,"column":4},"end":{"line":204,"column":98}},"63":{"start":{"line":206,"column":4},"end":{"line":206,"column":57}},"64":{"start":{"line":207,"column":4},"end":{"line":207,"column":52}},"65":{"start":{"line":208,"column":4},"end":{"line":208,"column":79}},"66":{"start":{"line":209,"column":4},"end":{"line":209,"column":7274}},"67":{"start":{"line":211,"column":4},"end":{"line":211,"column":77}},"68":{"start":{"line":213,"column":4},"end":{"line":213,"column":7394}},"69":{"start":{"line":214,"column":6},"end":{"line":214,"column":76}},"70":{"start":{"line":216,"column":4},"end":{"line":216,"column":22}},"71":{"start":{"line":217,"column":4},"end":{"line":217,"column":29}},"72":{"start":{"line":219,"column":4},"end":{"line":219,"column":47}},"73":{"start":{"line":225,"column":4},"end":{"line":225,"column":20}},"74":{"start":{"line":229,"column":4},"end":{"line":229,"column":26}},"75":{"start":{"line":235,"column":4},"end":{"line":235,"column":57}},"76":{"start":{"line":236,"column":4},"end":{"line":236,"column":79}},"77":{"start":{"line":240,"column":4},"end":{"line":240,"column":70}},"78":{"start":{"line":244,"column":4},"end":{"line":244,"column":57}},"79":{"start":{"line":245,"column":4},"end":{"line":245,"column":8487}}},"branchMap":{"1":{"line":30,"type":"if","locations":[{"start":{"line":30,"column":4},"end":{"line":30,"column":4}},{"start":{"line":30,"column":4},"end":{"line":30,"column":4}}]},"2":{"line":37,"type":"if","locations":[{"start":{"line":37,"column":4},"end":{"line":37,"column":4}},{"start":{"line":37,"column":4},"end":{"line":37,"column":4}}]},"3":{"line":42,"type":"if","locations":[{"start":{"line":42,"column":4},"end":{"line":42,"column":4}},{"start":{"line":42,"column":4},"end":{"line":42,"column":4}}]},"4":{"line":46,"type":"if","locations":[{"start":{"line":46,"column":4},"end":{"line":46,"column":4}},{"start":{"line":46,"column":4},"end":{"line":46,"column":4}}]},"5":{"line":50,"type":"if","locations":[{"start":{"line":50,"column":4},"end":{"line":50,"column":4}},{"start":{"line":50,"column":4},"end":{"line":50,"column":4}}]},"6":{"line":59,"type":"if","locations":[{"start":{"line":59,"column":4},"end":{"line":59,"column":4}},{"start":{"line":59,"column":4},"end":{"line":59,"column":4}}]},"7":{"line":63,"type":"if","locations":[{"start":{"line":63,"column":4},"end":{"line":63,"column":4}},{"start":{"line":63,"column":4},"end":{"line":63,"column":4}}]},"8":{"line":107,"type":"if","locations":[{"start":{"line":107,"column":4},"end":{"line":107,"column":4}},{"start":{"line":107,"column":4},"end":{"line":107,"column":4}}]},"9":{"line":131,"type":"if","locations":[{"start":{"line":131,"column":4},"end":{"line":131,"column":4}},{"start":{"line":131,"column":4},"end":{"line":131,"column":4}}]},"10":{"line":156,"type":"if","locations":[{"start":{"line":156,"column":4},"end":{"line":156,"column":4}},{"start":{"line":156,"column":4},"end":{"line":156,"column":4}}]},"11":{"line":204,"type":"if","locations":[{"start":{"line":204,"column":4},"end":{"line":204,"column":4}},{"start":{"line":204,"column":4},"end":{"line":204,"column":4}}]}}},"src/core/ElasticDAOFactory.sol":{"l":{"21":7,"22":6,"26":3,"27":3,"46":364,"50":364,"52":281,"53":281,"54":281,"58":6,"59":6,"63":3,"65":3,"66":3},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAOFactory.sol","s":{"1":7,"2":3,"3":3,"4":364,"5":364,"6":281,"7":281,"8":281,"9":6,"10":6,"11":3,"12":3,"13":3},"b":{"1":[6,1]},"f":{"1":7,"2":3,"3":364,"4":6,"5":3,"6":0},"fnMap":{"1":{"name":"onlyDeployer","line":20,"loc":{"start":{"line":20,"column":2},"end":{"line":23,"column":2}}},"2":{"name":"constructor","line":25,"loc":{"start":{"line":25,"column":2},"end":{"line":28,"column":2}}},"3":{"name":"deployDAOAndToken","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":55,"column":2}}},"4":{"name":"updateFeeAddress","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":60,"column":2}}},"5":{"name":"collectFees","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":67,"column":2}}},"6":{"name":null,"line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":71,"column":31}}}},"statementMap":{"1":{"start":{"line":21,"column":4},"end":{"line":21,"column":63}},"2":{"start":{"line":26,"column":4},"end":{"line":26,"column":24}},"3":{"start":{"line":27,"column":4},"end":{"line":27,"column":49}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":1350}},"5":{"start":{"line":50,"column":4},"end":{"line":50,"column":96}},"6":{"start":{"line":52,"column":4},"end":{"line":52,"column":49}},"7":{"start":{"line":53,"column":4},"end":{"line":53,"column":55}},"8":{"start":{"line":54,"column":4},"end":{"line":54,"column":41}},"9":{"start":{"line":58,"column":4},"end":{"line":58,"column":37}},"10":{"start":{"line":59,"column":4},"end":{"line":59,"column":40}},"11":{"start":{"line":63,"column":4},"end":{"line":63,"column":42}},"12":{"start":{"line":65,"column":4},"end":{"line":65,"column":30}},"13":{"start":{"line":66,"column":4},"end":{"line":66,"column":51}}},"branchMap":{"1":{"line":21,"type":"if","locations":[{"start":{"line":21,"column":4},"end":{"line":21,"column":4}},{"start":{"line":21,"column":4},"end":{"line":21,"column":4}}]}}},"src/interfaces/IElasticToken.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IElasticToken.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/interfaces/IERC20.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IERC20.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/libraries/ElasticMath.sol":{"l":{"16":16,"40":16,"42":16,"45":16,"48":16,"51":16,"54":16,"57":16,"60":16,"63":16,"66":16,"74":37,"92":31,"105":16,"122":1529,"132":3220,"142":548},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/ElasticMath.sol","s":{"1":16,"2":16,"3":16,"4":16,"5":16,"6":16,"7":16,"8":16,"9":16,"10":16,"11":16,"12":37,"13":31,"14":16,"15":1529,"16":3220,"17":548},"b":{},"f":{"1":16,"2":16,"3":37,"4":31,"5":16,"6":1529,"7":3220,"8":548},"fnMap":{"1":{"name":"capitalDelta","line":11,"loc":{"start":{"line":11,"column":2},"end":{"line":17,"column":2}}},"2":{"name":"deltaE","line":32,"loc":{"start":{"line":32,"column":2},"end":{"line":67,"column":2}}},"3":{"name":"lambdaFromT","line":69,"loc":{"start":{"line":69,"column":2},"end":{"line":75,"column":2}}},"4":{"name":"mDash","line":87,"loc":{"start":{"line":87,"column":2},"end":{"line":93,"column":2}}},"5":{"name":"revamp","line":104,"loc":{"start":{"line":104,"column":2},"end":{"line":106,"column":2}}},"6":{"name":"t","line":117,"loc":{"start":{"line":117,"column":2},"end":{"line":123,"column":2}}},"7":{"name":"wmul","line":131,"loc":{"start":{"line":131,"column":2},"end":{"line":133,"column":2}}},"8":{"name":"wdiv","line":141,"loc":{"start":{"line":141,"column":2},"end":{"line":143,"column":2}}}},"statementMap":{"1":{"start":{"line":16,"column":4},"end":{"line":16,"column":53}},"2":{"start":{"line":40,"column":4},"end":{"line":40,"column":58}},"3":{"start":{"line":42,"column":4},"end":{"line":42,"column":42}},"4":{"start":{"line":45,"column":4},"end":{"line":45,"column":34}},"5":{"start":{"line":48,"column":4},"end":{"line":48,"column":31}},"6":{"start":{"line":51,"column":4},"end":{"line":51,"column":44}},"7":{"start":{"line":54,"column":4},"end":{"line":54,"column":26}},"8":{"start":{"line":57,"column":4},"end":{"line":57,"column":35}},"9":{"start":{"line":60,"column":4},"end":{"line":60,"column":34}},"10":{"start":{"line":63,"column":4},"end":{"line":63,"column":27}},"11":{"start":{"line":66,"column":4},"end":{"line":66,"column":22}},"12":{"start":{"line":74,"column":4},"end":{"line":74,"column":30}},"13":{"start":{"line":92,"column":4},"end":{"line":92,"column":44}},"14":{"start":{"line":105,"column":4},"end":{"line":105,"column":57}},"15":{"start":{"line":122,"column":4},"end":{"line":122,"column":35}},"16":{"start":{"line":132,"column":4},"end":{"line":132,"column":90}},"17":{"start":{"line":142,"column":4},"end":{"line":142,"column":72}}},"branchMap":{}},"src/libraries/SafeMath.sol":{"l":{"29":15344,"30":15344,"32":15344,"46":108,"64":108,"65":108,"67":108,"84":4040,"85":0,"88":4040,"89":4040,"91":4040,"107":0,"127":0,"128":0,"131":0,"147":0,"167":0,"168":0,"172":16,"173":0,"175":0,"177":0,"179":16,"180":16,"181":16,"189":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/SafeMath.sol","s":{"1":15344,"2":15344,"3":15344,"4":108,"5":108,"6":108,"7":108,"8":4040,"9":0,"10":4040,"11":4040,"12":4040,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":16,"21":0,"22":16,"23":0,"24":16,"25":0,"26":16,"27":16,"28":272,"29":16,"30":0},"b":{"1":[15344,0],"2":[108,0],"3":[0,4040],"4":[4040,0],"5":[0,0],"6":[0,0],"7":[0,16],"8":[0,16],"9":[0,16]},"f":{"1":15344,"2":108,"3":108,"4":4040,"5":0,"6":0,"7":0,"8":0,"9":16,"10":0},"fnMap":{"1":{"name":"add","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":33,"column":2}}},"2":{"name":"sub","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":2}}},"3":{"name":"sub","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":68,"column":2}}},"4":{"name":"mul","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":92,"column":2}}},"5":{"name":"div","line":106,"loc":{"start":{"line":106,"column":2},"end":{"line":108,"column":2}}},"6":{"name":"div","line":122,"loc":{"start":{"line":122,"column":2},"end":{"line":132,"column":2}}},"7":{"name":"mod","line":146,"loc":{"start":{"line":146,"column":2},"end":{"line":148,"column":2}}},"8":{"name":"mod","line":162,"loc":{"start":{"line":162,"column":2},"end":{"line":169,"column":2}}},"9":{"name":"pow","line":171,"loc":{"start":{"line":171,"column":2},"end":{"line":183,"column":2}}},"10":{"name":"max","line":188,"loc":{"start":{"line":188,"column":2},"end":{"line":190,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":21}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":49}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":12}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":54}},"5":{"start":{"line":64,"column":4},"end":{"line":64,"column":32}},"6":{"start":{"line":65,"column":4},"end":{"line":65,"column":21}},"7":{"start":{"line":67,"column":4},"end":{"line":67,"column":12}},"8":{"start":{"line":84,"column":4},"end":{"line":84,"column":2356}},"9":{"start":{"line":85,"column":6},"end":{"line":85,"column":14}},"10":{"start":{"line":88,"column":4},"end":{"line":88,"column":21}},"11":{"start":{"line":89,"column":4},"end":{"line":89,"column":59}},"12":{"start":{"line":91,"column":4},"end":{"line":91,"column":12}},"13":{"start":{"line":107,"column":4},"end":{"line":107,"column":50}},"14":{"start":{"line":127,"column":4},"end":{"line":127,"column":31}},"15":{"start":{"line":128,"column":4},"end":{"line":128,"column":21}},"16":{"start":{"line":131,"column":4},"end":{"line":131,"column":12}},"17":{"start":{"line":147,"column":4},"end":{"line":147,"column":48}},"18":{"start":{"line":167,"column":4},"end":{"line":167,"column":32}},"19":{"start":{"line":168,"column":4},"end":{"line":168,"column":16}},"20":{"start":{"line":172,"column":4},"end":{"line":172,"column":5030}},"21":{"start":{"line":173,"column":6},"end":{"line":173,"column":14}},"22":{"start":{"line":174,"column":11},"end":{"line":174,"column":5078}},"23":{"start":{"line":175,"column":6},"end":{"line":175,"column":17}},"24":{"start":{"line":176,"column":11},"end":{"line":176,"column":5129}},"25":{"start":{"line":177,"column":6},"end":{"line":177,"column":14}},"26":{"start":{"line":179,"column":6},"end":{"line":179,"column":22}},"27":{"start":{"line":180,"column":6},"end":{"line":180,"column":71}},"28":{"start":{"line":180,"column":55},"end":{"line":180,"column":70}},"29":{"start":{"line":181,"column":6},"end":{"line":181,"column":14}},"30":{"start":{"line":189,"column":4},"end":{"line":189,"column":25}}},"branchMap":{"1":{"line":30,"type":"if","locations":[{"start":{"line":30,"column":4},"end":{"line":30,"column":4}},{"start":{"line":30,"column":4},"end":{"line":30,"column":4}}]},"2":{"line":64,"type":"if","locations":[{"start":{"line":64,"column":4},"end":{"line":64,"column":4}},{"start":{"line":64,"column":4},"end":{"line":64,"column":4}}]},"3":{"line":84,"type":"if","locations":[{"start":{"line":84,"column":4},"end":{"line":84,"column":4}},{"start":{"line":84,"column":4},"end":{"line":84,"column":4}}]},"4":{"line":89,"type":"if","locations":[{"start":{"line":89,"column":4},"end":{"line":89,"column":4}},{"start":{"line":89,"column":4},"end":{"line":89,"column":4}}]},"5":{"line":127,"type":"if","locations":[{"start":{"line":127,"column":4},"end":{"line":127,"column":4}},{"start":{"line":127,"column":4},"end":{"line":127,"column":4}}]},"6":{"line":167,"type":"if","locations":[{"start":{"line":167,"column":4},"end":{"line":167,"column":4}},{"start":{"line":167,"column":4},"end":{"line":167,"column":4}}]},"7":{"line":172,"type":"if","locations":[{"start":{"line":172,"column":4},"end":{"line":172,"column":4}},{"start":{"line":172,"column":4},"end":{"line":172,"column":4}}]},"8":{"line":174,"type":"if","locations":[{"start":{"line":174,"column":11},"end":{"line":174,"column":11}},{"start":{"line":174,"column":11},"end":{"line":174,"column":11}}]},"9":{"line":176,"type":"if","locations":[{"start":{"line":176,"column":11},"end":{"line":176,"column":11}},{"start":{"line":176,"column":11},"end":{"line":176,"column":11}}]}}},"src/models/DAO.sol":{"l":{"32":2496,"33":2496,"35":2496,"36":2496,"37":2496,"38":2496,"41":2496,"50":2,"54":1008,"64":790,"72":748,"77":748,"78":748,"79":748,"81":748,"82":412,"83":1236,"84":1236,"88":748,"92":2498},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/DAO.sol","s":{"1":2496,"2":2496,"3":2496,"4":2496,"5":2496,"6":2496,"7":2496,"8":2,"9":1008,"10":790,"11":748,"12":748,"13":748,"14":748,"15":748,"16":412,"17":1236,"18":1236,"19":748,"20":2498},"b":{"1":[2496,0],"2":[748,0],"3":[412,336]},"f":{"1":2496,"2":2,"3":1008,"4":790,"5":748,"6":2498},"fnMap":{"1":{"name":"deserialize","line":27,"loc":{"start":{"line":27,"column":2},"end":{"line":42,"column":2}}},"2":{"name":"exists","line":49,"loc":{"start":{"line":49,"column":2},"end":{"line":51,"column":2}}},"3":{"name":"getSummoner","line":53,"loc":{"start":{"line":53,"column":2},"end":{"line":55,"column":2}}},"4":{"name":"isSummoner","line":63,"loc":{"start":{"line":63,"column":2},"end":{"line":65,"column":2}}},"5":{"name":"serialize","line":71,"loc":{"start":{"line":71,"column":2},"end":{"line":89,"column":2}}},"6":{"name":"_exists","line":91,"loc":{"start":{"line":91,"column":2},"end":{"line":93,"column":2}}}},"statementMap":{"1":{"start":{"line":32,"column":4},"end":{"line":32,"column":22}},"2":{"start":{"line":33,"column":4},"end":{"line":33,"column":32}},"3":{"start":{"line":35,"column":4},"end":{"line":35,"column":903}},"4":{"start":{"line":36,"column":6},"end":{"line":36,"column":66}},"5":{"start":{"line":37,"column":6},"end":{"line":37,"column":90}},"6":{"start":{"line":38,"column":6},"end":{"line":38,"column":72}},"7":{"start":{"line":41,"column":4},"end":{"line":41,"column":17}},"8":{"start":{"line":50,"column":4},"end":{"line":50,"column":25}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":76}},"10":{"start":{"line":64,"column":4},"end":{"line":64,"column":82}},"11":{"start":{"line":72,"column":4},"end":{"line":72,"column":2126}},"12":{"start":{"line":77,"column":4},"end":{"line":77,"column":69}},"13":{"start":{"line":78,"column":4},"end":{"line":78,"column":93}},"14":{"start":{"line":79,"column":4},"end":{"line":79,"column":75}},"15":{"start":{"line":81,"column":4},"end":{"line":81,"column":2514}},"16":{"start":{"line":82,"column":6},"end":{"line":82,"column":2581}},"17":{"start":{"line":83,"column":8},"end":{"line":83,"column":89}},"18":{"start":{"line":84,"column":8},"end":{"line":84,"column":90}},"19":{"start":{"line":88,"column":4},"end":{"line":88,"column":62}},"20":{"start":{"line":92,"column":4},"end":{"line":92,"column":58}}},"branchMap":{"1":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":35,"column":4}},{"start":{"line":35,"column":4},"end":{"line":35,"column":4}}]},"2":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":72,"column":4}},{"start":{"line":72,"column":4},"end":{"line":72,"column":4}}]},"3":{"line":81,"type":"if","locations":[{"start":{"line":81,"column":4},"end":{"line":81,"column":4}},{"start":{"line":81,"column":4},"end":{"line":81,"column":4}}]}}},"src/models/Ecosystem.sol":{"l":{"33":9446,"34":9446,"35":9446,"38":9446,"41":9446,"42":9446,"45":9446,"48":9446,"53":9446,"62":1,"70":830,"72":830,"79":830,"83":830,"84":830,"88":830,"92":830,"97":830,"101":10277},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Ecosystem.sol","s":{"1":9446,"2":9446,"3":9446,"4":9446,"5":9446,"6":9446,"7":9446,"8":9446,"9":9446,"10":1,"11":830,"12":830,"13":830,"14":830,"15":830,"16":830,"17":830,"18":830,"19":10277},"b":{"1":[9446,0],"2":[830,0]},"f":{"1":9446,"2":1,"3":830,"4":10277},"fnMap":{"1":{"name":"deserialize","line":32,"loc":{"start":{"line":32,"column":2},"end":{"line":54,"column":2}}},"2":{"name":"exists","line":61,"loc":{"start":{"line":61,"column":2},"end":{"line":63,"column":2}}},"3":{"name":"serialize","line":69,"loc":{"start":{"line":69,"column":2},"end":{"line":98,"column":2}}},"4":{"name":"_exists","line":100,"loc":{"start":{"line":100,"column":2},"end":{"line":102,"column":2}}}},"statementMap":{"1":{"start":{"line":33,"column":4},"end":{"line":33,"column":1065}},"2":{"start":{"line":34,"column":6},"end":{"line":34,"column":36}},"3":{"start":{"line":35,"column":6},"end":{"line":35,"column":1140}},"4":{"start":{"line":38,"column":6},"end":{"line":38,"column":1268}},"5":{"start":{"line":41,"column":6},"end":{"line":41,"column":49}},"6":{"start":{"line":42,"column":6},"end":{"line":42,"column":1440}},"7":{"start":{"line":45,"column":6},"end":{"line":45,"column":1574}},"8":{"start":{"line":48,"column":6},"end":{"line":48,"column":1710}},"9":{"start":{"line":53,"column":4},"end":{"line":53,"column":17}},"10":{"start":{"line":62,"column":4},"end":{"line":62,"column":31}},"11":{"start":{"line":70,"column":4},"end":{"line":70,"column":50}},"12":{"start":{"line":72,"column":4},"end":{"line":72,"column":2306}},"13":{"start":{"line":79,"column":4},"end":{"line":79,"column":2513}},"14":{"start":{"line":83,"column":4},"end":{"line":83,"column":98}},"15":{"start":{"line":84,"column":4},"end":{"line":84,"column":2741}},"16":{"start":{"line":88,"column":4},"end":{"line":88,"column":2874}},"17":{"start":{"line":92,"column":4},"end":{"line":92,"column":3009}},"18":{"start":{"line":97,"column":4},"end":{"line":97,"column":68}},"19":{"start":{"line":101,"column":4},"end":{"line":101,"column":64}}},"branchMap":{"1":{"line":33,"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":33,"column":4}},{"start":{"line":33,"column":4},"end":{"line":33,"column":4}}]},"2":{"line":72,"type":"if","locations":[{"start":{"line":72,"column":4},"end":{"line":72,"column":4}},{"start":{"line":72,"column":4},"end":{"line":72,"column":4}}]}}},"src/models/EternalModel.sol":{"l":{"30":37132,"37":10550,"44":48238,"51":24078,"58":0,"65":0,"77":18056,"85":4616,"93":5386,"101":7000,"109":0,"117":0,"128":0,"135":0,"142":0,"149":0,"156":0,"163":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/EternalModel.sol","s":{"1":37132,"2":10550,"3":48238,"4":24078,"5":0,"6":0,"7":18056,"8":4616,"9":5386,"10":7000,"11":0,"12":0},"b":{},"f":{"1":37132,"2":10550,"3":48238,"4":24078,"5":0,"6":0,"7":18056,"8":4616,"9":5386,"10":7000,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0},"fnMap":{"1":{"name":"getUint","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":31,"column":2}}},"2":{"name":"getString","line":36,"loc":{"start":{"line":36,"column":2},"end":{"line":38,"column":2}}},"3":{"name":"getAddress","line":43,"loc":{"start":{"line":43,"column":2},"end":{"line":45,"column":2}}},"4":{"name":"getBool","line":50,"loc":{"start":{"line":50,"column":2},"end":{"line":52,"column":2}}},"5":{"name":"getInt","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":59,"column":2}}},"6":{"name":"getBytes","line":64,"loc":{"start":{"line":64,"column":2},"end":{"line":66,"column":2}}},"7":{"name":"setUint","line":76,"loc":{"start":{"line":76,"column":2},"end":{"line":78,"column":2}}},"8":{"name":"setString","line":84,"loc":{"start":{"line":84,"column":2},"end":{"line":86,"column":2}}},"9":{"name":"setAddress","line":92,"loc":{"start":{"line":92,"column":2},"end":{"line":94,"column":2}}},"10":{"name":"setBool","line":100,"loc":{"start":{"line":100,"column":2},"end":{"line":102,"column":2}}},"11":{"name":"setInt","line":108,"loc":{"start":{"line":108,"column":2},"end":{"line":110,"column":2}}},"12":{"name":"setBytes","line":116,"loc":{"start":{"line":116,"column":2},"end":{"line":118,"column":2}}},"13":{"name":"deleteUint","line":127,"loc":{"start":{"line":127,"column":2},"end":{"line":129,"column":2}}},"14":{"name":"deleteString","line":134,"loc":{"start":{"line":134,"column":2},"end":{"line":136,"column":2}}},"15":{"name":"deleteAddress","line":141,"loc":{"start":{"line":141,"column":2},"end":{"line":143,"column":2}}},"16":{"name":"deleteBool","line":148,"loc":{"start":{"line":148,"column":2},"end":{"line":150,"column":2}}},"17":{"name":"deleteInt","line":155,"loc":{"start":{"line":155,"column":2},"end":{"line":157,"column":2}}},"18":{"name":"deleteBytes","line":162,"loc":{"start":{"line":162,"column":2},"end":{"line":164,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":30}},"2":{"start":{"line":37,"column":4},"end":{"line":37,"column":32}},"3":{"start":{"line":44,"column":4},"end":{"line":44,"column":33}},"4":{"start":{"line":51,"column":4},"end":{"line":51,"column":30}},"5":{"start":{"line":58,"column":4},"end":{"line":58,"column":29}},"6":{"start":{"line":65,"column":4},"end":{"line":65,"column":31}},"7":{"start":{"line":77,"column":4},"end":{"line":77,"column":31}},"8":{"start":{"line":85,"column":4},"end":{"line":85,"column":33}},"9":{"start":{"line":93,"column":4},"end":{"line":93,"column":34}},"10":{"start":{"line":101,"column":4},"end":{"line":101,"column":31}},"11":{"start":{"line":109,"column":4},"end":{"line":109,"column":30}},"12":{"start":{"line":117,"column":4},"end":{"line":117,"column":32}}},"branchMap":{}},"src/models/Token.sol":{"l":{"42":4031,"43":4031,"45":4031,"46":4027,"47":4027,"48":4027,"49":4027,"50":4027,"51":4027,"52":4027,"53":4027,"54":4027,"55":4027,"58":4031,"62":451,"66":1544,"68":1544,"69":1544,"77":1934,"84":1934,"85":1934,"86":1934,"87":1933,"88":1933,"89":1927,"90":1927,"91":1900,"93":1894,"99":1122,"103":4897},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Token.sol","s":{"1":4031,"2":4031,"3":4031,"4":4027,"5":4027,"6":4027,"7":4027,"8":4027,"9":4027,"10":4027,"11":4027,"12":4027,"13":4027,"14":4031,"15":451,"16":1544,"17":1544,"18":1544,"19":1934,"20":1934,"21":1934,"22":1934,"23":1933,"24":1933,"25":1927,"26":1927,"27":1900,"28":1894,"29":1122,"30":4897},"b":{"1":[4027,4],"2":[1544,0],"3":[1934,0]},"f":{"1":4031,"2":451,"3":1544,"4":1934,"5":1122,"6":4897},"fnMap":{"1":{"name":"deserialize","line":37,"loc":{"start":{"line":37,"column":2},"end":{"line":59,"column":2}}},"2":{"name":"exists","line":61,"loc":{"start":{"line":61,"column":2},"end":{"line":63,"column":2}}},"3":{"name":"incrementCounter","line":65,"loc":{"start":{"line":65,"column":2},"end":{"line":70,"column":2}}},"4":{"name":"serialize","line":76,"loc":{"start":{"line":76,"column":2},"end":{"line":94,"column":2}}},"5":{"name":"updateNumberOfTokenHolders","line":96,"loc":{"start":{"line":96,"column":2},"end":{"line":100,"column":2}}},"6":{"name":"_exists","line":102,"loc":{"start":{"line":102,"column":2},"end":{"line":104,"column":2}}}},"statementMap":{"1":{"start":{"line":42,"column":4},"end":{"line":42,"column":22}},"2":{"start":{"line":43,"column":4},"end":{"line":43,"column":32}},"3":{"start":{"line":45,"column":4},"end":{"line":45,"column":1269}},"4":{"start":{"line":46,"column":6},"end":{"line":46,"column":70}},"5":{"start":{"line":47,"column":6},"end":{"line":47,"column":64}},"6":{"start":{"line":48,"column":6},"end":{"line":48,"column":76}},"7":{"start":{"line":49,"column":6},"end":{"line":49,"column":58}},"8":{"start":{"line":50,"column":6},"end":{"line":50,"column":68}},"9":{"start":{"line":51,"column":6},"end":{"line":51,"column":58}},"10":{"start":{"line":52,"column":6},"end":{"line":52,"column":90}},"11":{"start":{"line":53,"column":6},"end":{"line":53,"column":66}},"12":{"start":{"line":54,"column":6},"end":{"line":54,"column":96}},"13":{"start":{"line":55,"column":6},"end":{"line":55,"column":70}},"14":{"start":{"line":58,"column":4},"end":{"line":58,"column":17}},"15":{"start":{"line":62,"column":4},"end":{"line":62,"column":25}},"16":{"start":{"line":66,"column":4},"end":{"line":66,"column":65}},"17":{"start":{"line":68,"column":4},"end":{"line":68,"column":76}},"18":{"start":{"line":69,"column":4},"end":{"line":69,"column":83}},"19":{"start":{"line":77,"column":4},"end":{"line":77,"column":2629}},"20":{"start":{"line":84,"column":4},"end":{"line":84,"column":69}},"21":{"start":{"line":85,"column":4},"end":{"line":85,"column":73}},"22":{"start":{"line":86,"column":4},"end":{"line":86,"column":67}},"23":{"start":{"line":87,"column":4},"end":{"line":87,"column":79}},"24":{"start":{"line":88,"column":4},"end":{"line":88,"column":61}},"25":{"start":{"line":89,"column":4},"end":{"line":89,"column":71}},"26":{"start":{"line":90,"column":4},"end":{"line":90,"column":61}},"27":{"start":{"line":91,"column":4},"end":{"line":91,"column":93}},"28":{"start":{"line":93,"column":4},"end":{"line":93,"column":62}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":92}},"30":{"start":{"line":103,"column":4},"end":{"line":103,"column":58}}},"branchMap":{"1":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":45,"column":4}},{"start":{"line":45,"column":4},"end":{"line":45,"column":4}}]},"2":{"line":66,"type":"if","locations":[{"start":{"line":66,"column":4},"end":{"line":66,"column":4}},{"start":{"line":66,"column":4},"end":{"line":66,"column":4}}]},"3":{"line":77,"type":"if","locations":[{"start":{"line":77,"column":4},"end":{"line":77,"column":4}},{"start":{"line":77,"column":4},"end":{"line":77,"column":4}}]}}},"src/models/TokenHolder.sol":{"l":{"30":1560,"31":1560,"32":1560,"34":1560,"35":1560,"36":1560,"37":1560,"39":1560,"40":438,"41":438,"44":1560,"48":0,"49":0,"51":0,"59":1544,"61":1544,"62":1544,"64":1544,"68":3120},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/TokenHolder.sol","s":{"1":1560,"2":1560,"3":1560,"4":1560,"5":1560,"6":1560,"7":1560,"8":1560,"9":438,"10":438,"11":1560,"12":0,"13":0,"14":0,"15":1544,"16":1544,"17":1544,"18":1544,"19":3120},"b":{"1":[438,1122],"2":[1544,0]},"f":{"1":1560,"2":0,"3":1544,"4":3120},"fnMap":{"1":{"name":"deserialize","line":25,"loc":{"start":{"line":25,"column":2},"end":{"line":45,"column":2}}},"2":{"name":"exists","line":47,"loc":{"start":{"line":47,"column":2},"end":{"line":52,"column":2}}},"3":{"name":"serialize","line":58,"loc":{"start":{"line":58,"column":2},"end":{"line":65,"column":2}}},"4":{"name":"_exists","line":67,"loc":{"start":{"line":67,"column":2},"end":{"line":69,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":28}},"2":{"start":{"line":31,"column":4},"end":{"line":31,"column":32}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":24}},"4":{"start":{"line":34,"column":4},"end":{"line":34,"column":36}},"5":{"start":{"line":35,"column":4},"end":{"line":35,"column":45}},"6":{"start":{"line":36,"column":4},"end":{"line":36,"column":37}},"7":{"start":{"line":37,"column":4},"end":{"line":37,"column":33}},"8":{"start":{"line":39,"column":4},"end":{"line":39,"column":1197}},"9":{"start":{"line":40,"column":6},"end":{"line":40,"column":98}},"10":{"start":{"line":41,"column":6},"end":{"line":41,"column":96}},"11":{"start":{"line":44,"column":4},"end":{"line":44,"column":17}},"12":{"start":{"line":48,"column":4},"end":{"line":48,"column":24}},"13":{"start":{"line":49,"column":4},"end":{"line":49,"column":45}},"14":{"start":{"line":51,"column":4},"end":{"line":51,"column":36}},"15":{"start":{"line":59,"column":4},"end":{"line":59,"column":71}},"16":{"start":{"line":61,"column":4},"end":{"line":61,"column":95}},"17":{"start":{"line":62,"column":4},"end":{"line":62,"column":93}},"18":{"start":{"line":64,"column":4},"end":{"line":64,"column":84}},"19":{"start":{"line":68,"column":4},"end":{"line":68,"column":74}}},"branchMap":{"1":{"line":39,"type":"if","locations":[{"start":{"line":39,"column":4},"end":{"line":39,"column":4}},{"start":{"line":39,"column":4},"end":{"line":39,"column":4}}]},"2":{"line":59,"type":"if","locations":[{"start":{"line":59,"column":4},"end":{"line":59,"column":4}},{"start":{"line":59,"column":4},"end":{"line":59,"column":4}}]}}},"src/services/Configurator.sol":{"l":{"30":412,"31":412,"32":412,"33":412,"34":412,"35":412,"36":412,"37":412,"38":412,"50":412,"52":412,"55":412,"56":412,"57":412,"58":412,"61":412,"63":412,"64":412,"89":442,"90":442,"91":442,"92":442,"93":442,"94":442,"95":442,"96":442,"97":442,"98":442,"99":442,"101":415,"102":415,"103":415,"105":341},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/services/Configurator.sol","s":{"1":412,"2":412,"3":412,"4":412,"5":412,"6":412,"7":412,"8":412,"9":412,"10":412,"11":412,"12":412,"13":412,"14":412,"15":412,"16":412,"17":412,"18":412,"19":442,"20":442,"21":442,"22":442,"23":442,"24":442,"25":442,"26":442,"27":442,"28":442,"29":442,"30":415,"31":415,"32":415,"33":341},"b":{},"f":{"1":412,"2":412,"3":442},"fnMap":{"1":{"name":"buildDAO","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":39,"column":2}}},"2":{"name":"buildEcosystem","line":46,"loc":{"start":{"line":46,"column":2},"end":{"line":65,"column":2}}},"3":{"name":"buildToken","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":106,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":52}},"2":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":29}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":19}},"5":{"start":{"line":34,"column":4},"end":{"line":34,"column":45}},"6":{"start":{"line":35,"column":4},"end":{"line":35,"column":23}},"7":{"start":{"line":36,"column":4},"end":{"line":36,"column":29}},"8":{"start":{"line":37,"column":4},"end":{"line":37,"column":28}},"9":{"start":{"line":38,"column":4},"end":{"line":38,"column":14}},"10":{"start":{"line":50,"column":4},"end":{"line":50,"column":74}},"11":{"start":{"line":52,"column":4},"end":{"line":52,"column":36}},"12":{"start":{"line":55,"column":4},"end":{"line":55,"column":55}},"13":{"start":{"line":56,"column":4},"end":{"line":56,"column":67}},"14":{"start":{"line":57,"column":4},"end":{"line":57,"column":71}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":59}},"16":{"start":{"line":61,"column":4},"end":{"line":61,"column":63}},"17":{"start":{"line":63,"column":4},"end":{"line":63,"column":40}},"18":{"start":{"line":64,"column":4},"end":{"line":64,"column":20}},"19":{"start":{"line":89,"column":4},"end":{"line":89,"column":60}},"20":{"start":{"line":90,"column":4},"end":{"line":90,"column":21}},"21":{"start":{"line":91,"column":4},"end":{"line":91,"column":31}},"22":{"start":{"line":92,"column":4},"end":{"line":92,"column":33}},"23":{"start":{"line":93,"column":4},"end":{"line":93,"column":15}},"24":{"start":{"line":94,"column":4},"end":{"line":94,"column":19}},"25":{"start":{"line":95,"column":4},"end":{"line":95,"column":32}},"26":{"start":{"line":96,"column":4},"end":{"line":96,"column":47}},"27":{"start":{"line":97,"column":4},"end":{"line":97,"column":21}},"28":{"start":{"line":98,"column":4},"end":{"line":98,"column":25}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":97}},"30":{"start":{"line":101,"column":4},"end":{"line":101,"column":49}},"31":{"start":{"line":102,"column":4},"end":{"line":102,"column":68}},"32":{"start":{"line":103,"column":4},"end":{"line":103,"column":32}},"33":{"start":{"line":105,"column":4},"end":{"line":105,"column":16}}},"branchMap":{}},"src/tokens/ElasticGovernanceToken.sol":{"l":{"28":706,"29":706,"33":29,"34":28,"38":1477,"39":1476,"43":442,"44":442,"45":442,"46":442,"59":3,"78":6,"79":6,"88":13,"89":13,"90":13,"92":13,"101":1,"102":1,"106":2,"107":2,"108":2,"109":2,"111":2,"112":1,"114":1,"130":14,"131":12,"146":14,"147":14,"155":1,"165":3,"167":3,"169":3,"170":3,"180":6,"181":6,"191":3,"193":3,"208":1473,"209":1411,"217":1,"221":1,"225":353,"229":353,"238":1,"251":18,"252":18,"256":1,"257":1,"269":6,"270":6,"288":14,"290":14,"292":13,"293":13,"295":13,"298":11,"308":15,"309":15,"311":15,"313":15,"317":14,"318":14,"319":14,"323":28,"324":28,"325":28,"326":28,"327":28,"329":28,"331":28,"332":28,"334":28,"335":28,"336":26,"340":3,"341":3,"342":3,"346":1476,"347":1476,"348":1476,"349":1476,"350":1476,"352":1476,"354":1476,"356":1476,"357":1476,"359":1476,"360":1476,"361":1475,"363":1445,"371":20,"372":20,"373":20,"375":20,"376":20,"377":20,"378":20,"380":20,"381":20,"383":20,"384":20,"386":20,"387":20,"388":20,"389":19,"390":19,"392":19,"401":1544,"403":1544,"404":1544,"406":1544,"407":1496,"409":48,"412":1544,"414":1544,"423":1539,"424":1122,"427":1509,"428":0,"435":4682,"439":1560,"440":1560,"449":54,"450":54},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/tokens/ElasticGovernanceToken.sol","s":{"1":706,"2":29,"3":1477,"4":442,"5":442,"6":442,"7":442,"8":3,"9":6,"10":6,"11":13,"12":13,"13":13,"14":13,"15":1,"16":1,"17":2,"18":2,"19":2,"20":2,"21":2,"22":1,"23":1,"24":14,"25":12,"26":14,"27":14,"28":1,"29":3,"30":3,"31":3,"32":3,"33":6,"34":6,"35":3,"36":3,"37":1473,"38":1411,"39":1,"40":1,"41":353,"42":353,"43":1,"44":18,"45":18,"46":1,"47":1,"48":6,"49":6,"50":14,"51":14,"52":13,"53":13,"54":13,"55":11,"56":15,"57":15,"58":15,"59":15,"60":14,"61":14,"62":14,"63":28,"64":28,"65":28,"66":28,"67":28,"68":28,"69":28,"70":28,"71":28,"72":28,"73":26,"74":3,"75":3,"76":3,"77":1476,"78":1476,"79":1476,"80":1476,"81":1476,"82":1476,"83":1476,"84":1476,"85":1476,"86":1476,"87":1476,"88":1475,"89":1445,"90":20,"91":20,"92":20,"93":20,"94":20,"95":20,"96":20,"97":20,"98":20,"99":20,"100":20,"101":20,"102":20,"103":20,"104":19,"105":19,"106":19,"107":1544,"108":1544,"109":1544,"110":1544,"111":1496,"112":48,"113":1544,"114":1544,"115":1539,"116":1122,"117":1509,"118":0,"119":4682,"120":1560,"121":1560,"122":54,"123":54},"b":{"1":[706,0],"2":[28,1],"3":[1476,1],"4":[1,1],"5":[3,0],"6":[14,0],"7":[13,0],"8":[15,0],"9":[15,0],"10":[1496,48],"11":[1122,417],"12":[0,1509]},"f":{"1":706,"2":29,"3":1477,"4":442,"5":3,"6":6,"7":13,"8":1,"9":2,"10":14,"11":14,"12":1,"13":3,"14":6,"15":3,"16":1473,"17":1,"18":1,"19":353,"20":353,"21":1,"22":18,"23":1,"24":6,"25":14,"26":15,"27":14,"28":28,"29":3,"30":1476,"31":20,"32":1544,"33":1539,"34":4682,"35":1560,"36":54},"fnMap":{"1":{"name":"onlyDAO","line":27,"loc":{"start":{"line":27,"column":2},"end":{"line":30,"column":2}}},"2":{"name":"onlyDAOorBurner","line":32,"loc":{"start":{"line":32,"column":2},"end":{"line":35,"column":2}}},"3":{"name":"onlyDAOorMinter","line":37,"loc":{"start":{"line":37,"column":2},"end":{"line":40,"column":2}}},"4":{"name":"constructor","line":42,"loc":{"start":{"line":42,"column":2},"end":{"line":47,"column":2}}},"5":{"name":"allowance","line":58,"loc":{"start":{"line":58,"column":2},"end":{"line":60,"column":2}}},"6":{"name":"approve","line":77,"loc":{"start":{"line":77,"column":2},"end":{"line":80,"column":2}}},"7":{"name":"balanceOf","line":87,"loc":{"start":{"line":87,"column":2},"end":{"line":93,"column":2}}},"8":{"name":"balanceOfInShares","line":100,"loc":{"start":{"line":100,"column":2},"end":{"line":103,"column":2}}},"9":{"name":"balanceOfVoting","line":105,"loc":{"start":{"line":105,"column":2},"end":{"line":116,"column":2}}},"10":{"name":"burn","line":127,"loc":{"start":{"line":124,"column":2},"end":{"line":132,"column":2}}},"11":{"name":"burnShares","line":143,"loc":{"start":{"line":140,"column":2},"end":{"line":148,"column":2}}},"12":{"name":"decimals","line":154,"loc":{"start":{"line":154,"column":2},"end":{"line":156,"column":2}}},"13":{"name":"decreaseAllowance","line":164,"loc":{"start":{"line":164,"column":2},"end":{"line":171,"column":2}}},"14":{"name":"increaseAllowance","line":179,"loc":{"start":{"line":179,"column":2},"end":{"line":182,"column":2}}},"15":{"name":"mint","line":190,"loc":{"start":{"line":190,"column":2},"end":{"line":194,"column":2}}},"16":{"name":"mintShares","line":205,"loc":{"start":{"line":202,"column":2},"end":{"line":210,"column":2}}},"17":{"name":"name","line":216,"loc":{"start":{"line":216,"column":2},"end":{"line":218,"column":2}}},"18":{"name":"numberOfTokenHolders","line":220,"loc":{"start":{"line":220,"column":2},"end":{"line":222,"column":2}}},"19":{"name":"setBurner","line":224,"loc":{"start":{"line":224,"column":2},"end":{"line":226,"column":2}}},"20":{"name":"setMinter","line":228,"loc":{"start":{"line":228,"column":2},"end":{"line":230,"column":2}}},"21":{"name":"symbol","line":237,"loc":{"start":{"line":237,"column":2},"end":{"line":239,"column":2}}},"22":{"name":"totalSupply","line":250,"loc":{"start":{"line":250,"column":2},"end":{"line":253,"column":2}}},"23":{"name":"totalSupplyInShares","line":255,"loc":{"start":{"line":255,"column":2},"end":{"line":258,"column":2}}},"24":{"name":"transfer","line":268,"loc":{"start":{"line":268,"column":2},"end":{"line":271,"column":2}}},"25":{"name":"transferFrom","line":283,"loc":{"start":{"line":283,"column":2},"end":{"line":299,"column":2}}},"26":{"name":"_approve","line":303,"loc":{"start":{"line":303,"column":2},"end":{"line":314,"column":2}}},"27":{"name":"_burn","line":316,"loc":{"start":{"line":316,"column":2},"end":{"line":320,"column":2}}},"28":{"name":"_burnShares","line":322,"loc":{"start":{"line":322,"column":2},"end":{"line":337,"column":2}}},"29":{"name":"_mint","line":339,"loc":{"start":{"line":339,"column":2},"end":{"line":343,"column":2}}},"30":{"name":"_mintShares","line":345,"loc":{"start":{"line":345,"column":2},"end":{"line":364,"column":2}}},"31":{"name":"_transfer","line":366,"loc":{"start":{"line":366,"column":2},"end":{"line":393,"column":2}}},"32":{"name":"_updateBalance","line":395,"loc":{"start":{"line":395,"column":2},"end":{"line":415,"column":2}}},"33":{"name":"_updateNumberOfTokenHolders","line":417,"loc":{"start":{"line":417,"column":2},"end":{"line":430,"column":2}}},"34":{"name":"_getEcosystem","line":434,"loc":{"start":{"line":434,"column":2},"end":{"line":436,"column":2}}},"35":{"name":"_getTokenHolder","line":438,"loc":{"start":{"line":438,"column":2},"end":{"line":446,"column":2}}},"36":{"name":"_getToken","line":448,"loc":{"start":{"line":448,"column":2},"end":{"line":451,"column":2}}}},"statementMap":{"1":{"start":{"line":28,"column":4},"end":{"line":28,"column":90}},"2":{"start":{"line":33,"column":4},"end":{"line":33,"column":90}},"3":{"start":{"line":38,"column":4},"end":{"line":38,"column":90}},"4":{"start":{"line":43,"column":4},"end":{"line":43,"column":23}},"5":{"start":{"line":44,"column":4},"end":{"line":44,"column":27}},"6":{"start":{"line":45,"column":4},"end":{"line":45,"column":49}},"7":{"start":{"line":46,"column":4},"end":{"line":46,"column":23}},"8":{"start":{"line":59,"column":4},"end":{"line":59,"column":40}},"9":{"start":{"line":78,"column":4},"end":{"line":78,"column":42}},"10":{"start":{"line":79,"column":4},"end":{"line":79,"column":15}},"11":{"start":{"line":88,"column":4},"end":{"line":88,"column":45}},"12":{"start":{"line":89,"column":4},"end":{"line":89,"column":71}},"13":{"start":{"line":90,"column":4},"end":{"line":90,"column":67}},"14":{"start":{"line":92,"column":4},"end":{"line":92,"column":12}},"15":{"start":{"line":101,"column":4},"end":{"line":101,"column":71}},"16":{"start":{"line":102,"column":4},"end":{"line":102,"column":29}},"17":{"start":{"line":106,"column":4},"end":{"line":106,"column":45}},"18":{"start":{"line":107,"column":4},"end":{"line":107,"column":71}},"19":{"start":{"line":108,"column":4},"end":{"line":108,"column":59}},"20":{"start":{"line":109,"column":4},"end":{"line":109,"column":58}},"21":{"start":{"line":111,"column":4},"end":{"line":111,"column":3813}},"22":{"start":{"line":112,"column":6},"end":{"line":112,"column":61}},"23":{"start":{"line":114,"column":6},"end":{"line":114,"column":64}},"24":{"start":{"line":130,"column":4},"end":{"line":130,"column":27}},"25":{"start":{"line":131,"column":4},"end":{"line":131,"column":15}},"26":{"start":{"line":146,"column":4},"end":{"line":146,"column":33}},"27":{"start":{"line":147,"column":4},"end":{"line":147,"column":15}},"28":{"start":{"line":155,"column":4},"end":{"line":155,"column":13}},"29":{"start":{"line":165,"column":4},"end":{"line":165,"column":92}},"30":{"start":{"line":167,"column":4},"end":{"line":167,"column":74}},"31":{"start":{"line":169,"column":4},"end":{"line":169,"column":47}},"32":{"start":{"line":170,"column":4},"end":{"line":170,"column":15}},"33":{"start":{"line":180,"column":4},"end":{"line":180,"column":95}},"34":{"start":{"line":181,"column":4},"end":{"line":181,"column":15}},"35":{"start":{"line":191,"column":4},"end":{"line":191,"column":27}},"36":{"start":{"line":193,"column":4},"end":{"line":193,"column":15}},"37":{"start":{"line":208,"column":4},"end":{"line":208,"column":33}},"38":{"start":{"line":209,"column":4},"end":{"line":209,"column":15}},"39":{"start":{"line":217,"column":4},"end":{"line":217,"column":27}},"40":{"start":{"line":221,"column":4},"end":{"line":221,"column":43}},"41":{"start":{"line":225,"column":4},"end":{"line":225,"column":19}},"42":{"start":{"line":229,"column":4},"end":{"line":229,"column":19}},"43":{"start":{"line":238,"column":4},"end":{"line":238,"column":29}},"44":{"start":{"line":251,"column":4},"end":{"line":251,"column":45}},"45":{"start":{"line":252,"column":4},"end":{"line":252,"column":56}},"46":{"start":{"line":256,"column":4},"end":{"line":256,"column":45}},"47":{"start":{"line":257,"column":4},"end":{"line":257,"column":23}},"48":{"start":{"line":269,"column":4},"end":{"line":269,"column":38}},"49":{"start":{"line":270,"column":4},"end":{"line":270,"column":15}},"50":{"start":{"line":288,"column":4},"end":{"line":288,"column":97}},"51":{"start":{"line":290,"column":4},"end":{"line":290,"column":33}},"52":{"start":{"line":292,"column":4},"end":{"line":292,"column":9064}},"53":{"start":{"line":293,"column":6},"end":{"line":293,"column":91}},"54":{"start":{"line":295,"column":6},"end":{"line":295,"column":68}},"55":{"start":{"line":298,"column":4},"end":{"line":298,"column":15}},"56":{"start":{"line":308,"column":4},"end":{"line":308,"column":72}},"57":{"start":{"line":309,"column":4},"end":{"line":309,"column":72}},"58":{"start":{"line":311,"column":4},"end":{"line":311,"column":42}},"59":{"start":{"line":313,"column":4},"end":{"line":313,"column":44}},"60":{"start":{"line":317,"column":4},"end":{"line":317,"column":45}},"61":{"start":{"line":318,"column":4},"end":{"line":318,"column":76}},"62":{"start":{"line":319,"column":4},"end":{"line":319,"column":37}},"63":{"start":{"line":323,"column":4},"end":{"line":323,"column":57}},"64":{"start":{"line":324,"column":4},"end":{"line":324,"column":59}},"65":{"start":{"line":325,"column":4},"end":{"line":325,"column":84}},"66":{"start":{"line":326,"column":4},"end":{"line":326,"column":71}},"67":{"start":{"line":327,"column":4},"end":{"line":327,"column":52}},"68":{"start":{"line":329,"column":4},"end":{"line":329,"column":72}},"69":{"start":{"line":331,"column":4},"end":{"line":331,"column":58}},"70":{"start":{"line":332,"column":4},"end":{"line":332,"column":32}},"71":{"start":{"line":334,"column":4},"end":{"line":334,"column":83}},"72":{"start":{"line":335,"column":4},"end":{"line":335,"column":44}},"73":{"start":{"line":336,"column":4},"end":{"line":336,"column":84}},"74":{"start":{"line":340,"column":4},"end":{"line":340,"column":45}},"75":{"start":{"line":341,"column":4},"end":{"line":341,"column":76}},"76":{"start":{"line":342,"column":4},"end":{"line":342,"column":37}},"77":{"start":{"line":346,"column":4},"end":{"line":346,"column":57}},"78":{"start":{"line":347,"column":4},"end":{"line":347,"column":59}},"79":{"start":{"line":348,"column":4},"end":{"line":348,"column":84}},"80":{"start":{"line":349,"column":4},"end":{"line":349,"column":71}},"81":{"start":{"line":350,"column":4},"end":{"line":350,"column":52}},"82":{"start":{"line":352,"column":4},"end":{"line":352,"column":66}},"83":{"start":{"line":354,"column":4},"end":{"line":354,"column":71}},"84":{"start":{"line":356,"column":4},"end":{"line":356,"column":58}},"85":{"start":{"line":357,"column":4},"end":{"line":357,"column":32}},"86":{"start":{"line":359,"column":4},"end":{"line":359,"column":83}},"87":{"start":{"line":360,"column":4},"end":{"line":360,"column":44}},"88":{"start":{"line":361,"column":4},"end":{"line":361,"column":84}},"89":{"start":{"line":363,"column":4},"end":{"line":363,"column":47}},"90":{"start":{"line":371,"column":4},"end":{"line":371,"column":57}},"91":{"start":{"line":372,"column":4},"end":{"line":372,"column":59}},"92":{"start":{"line":373,"column":4},"end":{"line":373,"column":84}},"93":{"start":{"line":375,"column":4},"end":{"line":375,"column":72}},"94":{"start":{"line":376,"column":4},"end":{"line":376,"column":68}},"95":{"start":{"line":377,"column":4},"end":{"line":377,"column":60}},"96":{"start":{"line":378,"column":4},"end":{"line":378,"column":56}},"97":{"start":{"line":380,"column":4},"end":{"line":380,"column":76}},"98":{"start":{"line":381,"column":4},"end":{"line":381,"column":65}},"99":{"start":{"line":383,"column":4},"end":{"line":383,"column":79}},"100":{"start":{"line":384,"column":4},"end":{"line":384,"column":74}},"101":{"start":{"line":386,"column":4},"end":{"line":386,"column":83}},"102":{"start":{"line":387,"column":4},"end":{"line":387,"column":48}},"103":{"start":{"line":388,"column":4},"end":{"line":388,"column":46}},"104":{"start":{"line":389,"column":4},"end":{"line":389,"column":92}},"105":{"start":{"line":390,"column":4},"end":{"line":390,"column":88}},"106":{"start":{"line":392,"column":4},"end":{"line":392,"column":37}},"107":{"start":{"line":401,"column":4},"end":{"line":401,"column":57}},"108":{"start":{"line":403,"column":4},"end":{"line":403,"column":51}},"109":{"start":{"line":404,"column":4},"end":{"line":404,"column":63}},"110":{"start":{"line":406,"column":4},"end":{"line":406,"column":13569}},"111":{"start":{"line":407,"column":6},"end":{"line":407,"column":74}},"112":{"start":{"line":409,"column":6},"end":{"line":409,"column":74}},"113":{"start":{"line":412,"column":4},"end":{"line":412,"column":62}},"114":{"start":{"line":414,"column":4},"end":{"line":414,"column":23}},"115":{"start":{"line":423,"column":4},"end":{"line":423,"column":14049}},"116":{"start":{"line":424,"column":6},"end":{"line":424,"column":96}},"117":{"start":{"line":427,"column":4},"end":{"line":427,"column":14220}},"118":{"start":{"line":428,"column":6},"end":{"line":428,"column":96}},"119":{"start":{"line":435,"column":4},"end":{"line":435,"column":67}},"120":{"start":{"line":439,"column":4},"end":{"line":439,"column":57}},"121":{"start":{"line":440,"column":4},"end":{"line":440,"column":14723}},"122":{"start":{"line":449,"column":4},"end":{"line":449,"column":57}},"123":{"start":{"line":450,"column":4},"end":{"line":450,"column":83}}},"branchMap":{"1":{"line":28,"type":"if","locations":[{"start":{"line":28,"column":4},"end":{"line":28,"column":4}},{"start":{"line":28,"column":4},"end":{"line":28,"column":4}}]},"2":{"line":33,"type":"if","locations":[{"start":{"line":33,"column":4},"end":{"line":33,"column":4}},{"start":{"line":33,"column":4},"end":{"line":33,"column":4}}]},"3":{"line":38,"type":"if","locations":[{"start":{"line":38,"column":4},"end":{"line":38,"column":4}},{"start":{"line":38,"column":4},"end":{"line":38,"column":4}}]},"4":{"line":111,"type":"if","locations":[{"start":{"line":111,"column":4},"end":{"line":111,"column":4}},{"start":{"line":111,"column":4},"end":{"line":111,"column":4}}]},"5":{"line":167,"type":"if","locations":[{"start":{"line":167,"column":4},"end":{"line":167,"column":4}},{"start":{"line":167,"column":4},"end":{"line":167,"column":4}}]},"6":{"line":288,"type":"if","locations":[{"start":{"line":288,"column":4},"end":{"line":288,"column":4}},{"start":{"line":288,"column":4},"end":{"line":288,"column":4}}]},"7":{"line":292,"type":"if","locations":[{"start":{"line":292,"column":4},"end":{"line":292,"column":4}},{"start":{"line":292,"column":4},"end":{"line":292,"column":4}}]},"8":{"line":308,"type":"if","locations":[{"start":{"line":308,"column":4},"end":{"line":308,"column":4}},{"start":{"line":308,"column":4},"end":{"line":308,"column":4}}]},"9":{"line":309,"type":"if","locations":[{"start":{"line":309,"column":4},"end":{"line":309,"column":4}},{"start":{"line":309,"column":4},"end":{"line":309,"column":4}}]},"10":{"line":406,"type":"if","locations":[{"start":{"line":406,"column":4},"end":{"line":406,"column":4}},{"start":{"line":406,"column":4},"end":{"line":406,"column":4}}]},"11":{"line":423,"type":"if","locations":[{"start":{"line":423,"column":4},"end":{"line":423,"column":4}},{"start":{"line":423,"column":4},"end":{"line":423,"column":4}}]},"12":{"line":427,"type":"if","locations":[{"start":{"line":427,"column":4},"end":{"line":427,"column":4}},{"start":{"line":427,"column":4},"end":{"line":427,"column":4}}]}}}} \ No newline at end of file +{"src/core/ElasticDAO.sol":{"l":{"41":30,"42":30,"43":30,"46":466,"47":466,"49":466,"50":465,"53":1303,"54":1303,"55":1302,"58":26,"59":24,"62":485,"63":484,"66":817,"67":817,"68":817,"69":817,"71":817,"72":815,"75":16,"76":16,"86":614,"87":614,"88":614,"89":614,"90":614,"91":614,"93":614,"94":614,"95":614,"100":14,"101":14,"102":14,"105":11,"106":11,"108":11,"109":10,"120":484,"121":484,"123":484,"134":384,"135":384,"136":384,"138":384,"148":16,"150":16,"155":16,"156":16,"165":16,"175":16,"178":15,"179":15,"182":15,"183":15,"184":15,"185":15,"188":15,"190":8,"194":12,"195":12,"196":12,"197":12,"199":11,"203":12,"205":11,"218":465,"220":465,"221":465,"222":465,"224":248,"228":349,"230":348,"231":348,"232":348,"233":348,"235":348,"237":348,"238":1044,"240":319,"241":319,"243":261,"249":1,"253":2,"259":1334,"260":1334,"264":4439,"268":507,"269":507},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAO.sol","s":{"1":30,"2":30,"3":466,"4":466,"5":466,"6":1303,"7":1303,"8":26,"9":485,"10":817,"11":817,"12":817,"13":817,"14":817,"15":16,"16":614,"17":614,"18":614,"19":614,"20":614,"21":614,"22":614,"23":614,"24":614,"25":14,"26":14,"27":14,"28":11,"29":11,"30":11,"31":10,"32":484,"33":484,"34":484,"35":384,"36":384,"37":384,"38":384,"39":16,"40":16,"41":16,"42":16,"43":16,"44":16,"45":15,"46":15,"47":15,"48":15,"49":15,"50":15,"51":15,"52":8,"53":12,"54":12,"55":12,"56":12,"57":11,"58":12,"59":11,"60":465,"61":465,"62":465,"63":465,"64":248,"65":349,"66":348,"67":348,"68":348,"69":348,"70":348,"71":348,"72":1044,"73":319,"74":319,"75":261,"76":1,"77":2,"78":1334,"79":1334,"80":4439,"81":507,"82":507},"b":{"1":[30,0],"2":[465,1],"3":[1302,1],"4":[24,2],"5":[484,1],"6":[815,2],"7":[16,0],"8":[484,0],"9":[16,0],"10":[15,1],"11":[348,1]},"f":{"1":30,"2":466,"3":1303,"4":26,"5":485,"6":817,"7":16,"8":614,"9":14,"10":484,"11":16,"12":12,"13":12,"14":465,"15":349,"16":1,"17":2,"18":1334,"19":4439,"20":507,"21":0},"fnMap":{"1":{"name":"onlyAfterSummoning","line":40,"loc":{"start":{"line":40,"column":2},"end":{"line":44,"column":2}}},"2":{"name":"onlyAfterTokenInitialized","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":51,"column":2}}},"3":{"name":"onlyBeforeSummoning","line":52,"loc":{"start":{"line":52,"column":2},"end":{"line":56,"column":2}}},"4":{"name":"onlyController","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":60,"column":2}}},"5":{"name":"onlyDeployer","line":61,"loc":{"start":{"line":61,"column":2},"end":{"line":64,"column":2}}},"6":{"name":"onlySummoners","line":65,"loc":{"start":{"line":65,"column":2},"end":{"line":73,"column":2}}},"7":{"name":"onlyWhenOpen","line":74,"loc":{"start":{"line":74,"column":2},"end":{"line":77,"column":2}}},"8":{"name":"constructor","line":79,"loc":{"start":{"line":79,"column":2},"end":{"line":96,"column":2}}},"9":{"name":"exit","line":98,"loc":{"start":{"line":98,"column":2},"end":{"line":110,"column":2}}},"10":{"name":"initializeToken","line":119,"loc":{"start":{"line":112,"column":2},"end":{"line":139,"column":2}}},"11":{"name":"join","line":146,"loc":{"start":{"line":141,"column":2},"end":{"line":191,"column":2}}},"12":{"name":"setController","line":193,"loc":{"start":{"line":193,"column":2},"end":{"line":200,"column":2}}},"13":{"name":"setMaxVotingLambda","line":202,"loc":{"start":{"line":202,"column":2},"end":{"line":206,"column":2}}},"14":{"name":"seedSummoning","line":216,"loc":{"start":{"line":210,"column":2},"end":{"line":225,"column":2}}},"15":{"name":"summon","line":227,"loc":{"start":{"line":227,"column":2},"end":{"line":244,"column":2}}},"16":{"name":"getDAO","line":248,"loc":{"start":{"line":248,"column":2},"end":{"line":250,"column":2}}},"17":{"name":"getEcosystem","line":252,"loc":{"start":{"line":252,"column":2},"end":{"line":254,"column":2}}},"18":{"name":"_getDAO","line":258,"loc":{"start":{"line":258,"column":2},"end":{"line":261,"column":2}}},"19":{"name":"_getEcosystem","line":263,"loc":{"start":{"line":263,"column":2},"end":{"line":265,"column":2}}},"20":{"name":"_getToken","line":267,"loc":{"start":{"line":267,"column":2},"end":{"line":271,"column":2}}},"21":{"name":null,"line":275,"loc":{"start":{"line":275,"column":2},"end":{"line":275,"column":31}}}},"statementMap":{"1":{"start":{"line":41,"column":4},"end":{"line":41,"column":39}},"2":{"start":{"line":42,"column":4},"end":{"line":42,"column":60}},"3":{"start":{"line":46,"column":4},"end":{"line":46,"column":57}},"4":{"start":{"line":47,"column":4},"end":{"line":47,"column":1602}},"5":{"start":{"line":49,"column":4},"end":{"line":49,"column":77}},"6":{"start":{"line":53,"column":4},"end":{"line":53,"column":39}},"7":{"start":{"line":54,"column":4},"end":{"line":54,"column":73}},"8":{"start":{"line":58,"column":4},"end":{"line":58,"column":67}},"9":{"start":{"line":62,"column":4},"end":{"line":62,"column":63}},"10":{"start":{"line":66,"column":4},"end":{"line":66,"column":57}},"11":{"start":{"line":67,"column":4},"end":{"line":67,"column":52}},"12":{"start":{"line":68,"column":4},"end":{"line":68,"column":79}},"13":{"start":{"line":69,"column":4},"end":{"line":69,"column":64}},"14":{"start":{"line":71,"column":4},"end":{"line":71,"column":55}},"15":{"start":{"line":75,"column":4},"end":{"line":75,"column":71}},"16":{"start":{"line":86,"column":4},"end":{"line":86,"column":49}},"17":{"start":{"line":87,"column":4},"end":{"line":87,"column":27}},"18":{"start":{"line":88,"column":4},"end":{"line":88,"column":24}},"19":{"start":{"line":89,"column":4},"end":{"line":89,"column":98}},"20":{"start":{"line":90,"column":4},"end":{"line":90,"column":40}},"21":{"start":{"line":91,"column":4},"end":{"line":91,"column":25}},"22":{"start":{"line":93,"column":4},"end":{"line":93,"column":74}},"23":{"start":{"line":94,"column":4},"end":{"line":94,"column":79}},"24":{"start":{"line":95,"column":4},"end":{"line":95,"column":74}},"25":{"start":{"line":100,"column":4},"end":{"line":100,"column":45}},"26":{"start":{"line":101,"column":4},"end":{"line":101,"column":77}},"27":{"start":{"line":102,"column":4},"end":{"line":102,"column":53}},"28":{"start":{"line":105,"column":4},"end":{"line":105,"column":72}},"29":{"start":{"line":106,"column":4},"end":{"line":106,"column":86}},"30":{"start":{"line":108,"column":4},"end":{"line":108,"column":41}},"31":{"start":{"line":109,"column":4},"end":{"line":109,"column":76}},"32":{"start":{"line":120,"column":4},"end":{"line":120,"column":88}},"33":{"start":{"line":121,"column":4},"end":{"line":121,"column":57}},"34":{"start":{"line":123,"column":4},"end":{"line":123,"column":4330}},"35":{"start":{"line":134,"column":4},"end":{"line":134,"column":77}},"36":{"start":{"line":135,"column":4},"end":{"line":135,"column":38}},"37":{"start":{"line":136,"column":4},"end":{"line":136,"column":38}},"38":{"start":{"line":138,"column":4},"end":{"line":138,"column":51}},"39":{"start":{"line":148,"column":4},"end":{"line":148,"column":45}},"40":{"start":{"line":150,"column":4},"end":{"line":150,"column":4951}},"41":{"start":{"line":155,"column":4},"end":{"line":155,"column":77}},"42":{"start":{"line":156,"column":4},"end":{"line":156,"column":5162}},"43":{"start":{"line":165,"column":4},"end":{"line":165,"column":5608}},"44":{"start":{"line":175,"column":4},"end":{"line":175,"column":67}},"45":{"start":{"line":178,"column":4},"end":{"line":178,"column":65}},"46":{"start":{"line":179,"column":4},"end":{"line":179,"column":72}},"47":{"start":{"line":182,"column":4},"end":{"line":182,"column":57}},"48":{"start":{"line":183,"column":4},"end":{"line":183,"column":59}},"49":{"start":{"line":184,"column":4},"end":{"line":184,"column":18}},"50":{"start":{"line":185,"column":4},"end":{"line":185,"column":32}},"51":{"start":{"line":188,"column":4},"end":{"line":188,"column":53}},"52":{"start":{"line":190,"column":4},"end":{"line":190,"column":68}},"53":{"start":{"line":194,"column":4},"end":{"line":194,"column":27}},"54":{"start":{"line":195,"column":4},"end":{"line":195,"column":83}},"55":{"start":{"line":196,"column":4},"end":{"line":196,"column":38}},"56":{"start":{"line":197,"column":4},"end":{"line":197,"column":38}},"57":{"start":{"line":199,"column":4},"end":{"line":199,"column":70}},"58":{"start":{"line":203,"column":4},"end":{"line":203,"column":37}},"59":{"start":{"line":205,"column":4},"end":{"line":205,"column":86}},"60":{"start":{"line":218,"column":4},"end":{"line":218,"column":45}},"61":{"start":{"line":220,"column":4},"end":{"line":220,"column":30}},"62":{"start":{"line":221,"column":4},"end":{"line":221,"column":62}},"63":{"start":{"line":222,"column":4},"end":{"line":222,"column":73}},"64":{"start":{"line":224,"column":4},"end":{"line":224,"column":56}},"65":{"start":{"line":228,"column":4},"end":{"line":228,"column":98}},"66":{"start":{"line":230,"column":4},"end":{"line":230,"column":57}},"67":{"start":{"line":231,"column":4},"end":{"line":231,"column":52}},"68":{"start":{"line":232,"column":4},"end":{"line":232,"column":79}},"69":{"start":{"line":233,"column":4},"end":{"line":233,"column":7907}},"70":{"start":{"line":235,"column":4},"end":{"line":235,"column":77}},"71":{"start":{"line":237,"column":4},"end":{"line":237,"column":8027}},"72":{"start":{"line":238,"column":6},"end":{"line":238,"column":76}},"73":{"start":{"line":240,"column":4},"end":{"line":240,"column":22}},"74":{"start":{"line":241,"column":4},"end":{"line":241,"column":29}},"75":{"start":{"line":243,"column":4},"end":{"line":243,"column":47}},"76":{"start":{"line":249,"column":4},"end":{"line":249,"column":20}},"77":{"start":{"line":253,"column":4},"end":{"line":253,"column":26}},"78":{"start":{"line":259,"column":4},"end":{"line":259,"column":57}},"79":{"start":{"line":260,"column":4},"end":{"line":260,"column":79}},"80":{"start":{"line":264,"column":4},"end":{"line":264,"column":70}},"81":{"start":{"line":268,"column":4},"end":{"line":268,"column":57}},"82":{"start":{"line":269,"column":4},"end":{"line":269,"column":9120}}},"branchMap":{"1":{"line":42,"type":"if","locations":[{"start":{"line":42,"column":4},"end":{"line":42,"column":4}},{"start":{"line":42,"column":4},"end":{"line":42,"column":4}}]},"2":{"line":49,"type":"if","locations":[{"start":{"line":49,"column":4},"end":{"line":49,"column":4}},{"start":{"line":49,"column":4},"end":{"line":49,"column":4}}]},"3":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":54,"column":4}},{"start":{"line":54,"column":4},"end":{"line":54,"column":4}}]},"4":{"line":58,"type":"if","locations":[{"start":{"line":58,"column":4},"end":{"line":58,"column":4}},{"start":{"line":58,"column":4},"end":{"line":58,"column":4}}]},"5":{"line":62,"type":"if","locations":[{"start":{"line":62,"column":4},"end":{"line":62,"column":4}},{"start":{"line":62,"column":4},"end":{"line":62,"column":4}}]},"6":{"line":71,"type":"if","locations":[{"start":{"line":71,"column":4},"end":{"line":71,"column":4}},{"start":{"line":71,"column":4},"end":{"line":71,"column":4}}]},"7":{"line":75,"type":"if","locations":[{"start":{"line":75,"column":4},"end":{"line":75,"column":4}},{"start":{"line":75,"column":4},"end":{"line":75,"column":4}}]},"8":{"line":120,"type":"if","locations":[{"start":{"line":120,"column":4},"end":{"line":120,"column":4}},{"start":{"line":120,"column":4},"end":{"line":120,"column":4}}]},"9":{"line":150,"type":"if","locations":[{"start":{"line":150,"column":4},"end":{"line":150,"column":4}},{"start":{"line":150,"column":4},"end":{"line":150,"column":4}}]},"10":{"line":175,"type":"if","locations":[{"start":{"line":175,"column":4},"end":{"line":175,"column":4}},{"start":{"line":175,"column":4},"end":{"line":175,"column":4}}]},"11":{"line":228,"type":"if","locations":[{"start":{"line":228,"column":4},"end":{"line":228,"column":4}},{"start":{"line":228,"column":4},"end":{"line":228,"column":4}}]}}},"src/core/ElasticDAOFactory.sol":{"l":{"23":25,"24":24,"28":3,"29":3,"48":406,"52":406,"54":318,"55":318,"56":318,"60":24,"61":22,"65":12,"67":12,"68":11},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAOFactory.sol","s":{"1":25,"2":3,"3":3,"4":406,"5":406,"6":318,"7":318,"8":318,"9":24,"10":22,"11":12,"12":12,"13":11},"b":{"1":[24,1]},"f":{"1":25,"2":3,"3":406,"4":24,"5":12,"6":0},"fnMap":{"1":{"name":"onlyDeployer","line":22,"loc":{"start":{"line":22,"column":2},"end":{"line":25,"column":2}}},"2":{"name":"constructor","line":27,"loc":{"start":{"line":27,"column":2},"end":{"line":30,"column":2}}},"3":{"name":"deployDAOAndToken","line":46,"loc":{"start":{"line":36,"column":2},"end":{"line":57,"column":2}}},"4":{"name":"updateFeeAddress","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":62,"column":2}}},"5":{"name":"collectFees","line":64,"loc":{"start":{"line":64,"column":2},"end":{"line":69,"column":2}}},"6":{"name":null,"line":73,"loc":{"start":{"line":73,"column":2},"end":{"line":73,"column":31}}}},"statementMap":{"1":{"start":{"line":23,"column":4},"end":{"line":23,"column":63}},"2":{"start":{"line":28,"column":4},"end":{"line":28,"column":24}},"3":{"start":{"line":29,"column":4},"end":{"line":29,"column":49}},"4":{"start":{"line":48,"column":4},"end":{"line":48,"column":1431}},"5":{"start":{"line":52,"column":4},"end":{"line":52,"column":96}},"6":{"start":{"line":54,"column":4},"end":{"line":54,"column":49}},"7":{"start":{"line":55,"column":4},"end":{"line":55,"column":55}},"8":{"start":{"line":56,"column":4},"end":{"line":56,"column":41}},"9":{"start":{"line":60,"column":4},"end":{"line":60,"column":37}},"10":{"start":{"line":61,"column":4},"end":{"line":61,"column":40}},"11":{"start":{"line":65,"column":4},"end":{"line":65,"column":42}},"12":{"start":{"line":67,"column":4},"end":{"line":67,"column":30}},"13":{"start":{"line":68,"column":4},"end":{"line":68,"column":51}}},"branchMap":{"1":{"line":23,"type":"if","locations":[{"start":{"line":23,"column":4},"end":{"line":23,"column":4}},{"start":{"line":23,"column":4},"end":{"line":23,"column":4}}]}}},"src/interfaces/IElasticToken.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IElasticToken.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/interfaces/IERC20.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IERC20.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/libraries/ElasticMath.sol":{"l":{"16":16,"40":16,"42":16,"45":16,"48":16,"51":16,"54":16,"57":16,"60":16,"63":16,"66":16,"74":70,"92":31,"105":16,"122":1613,"132":3418,"142":593},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/ElasticMath.sol","s":{"1":16,"2":16,"3":16,"4":16,"5":16,"6":16,"7":16,"8":16,"9":16,"10":16,"11":16,"12":70,"13":31,"14":16,"15":1613,"16":3418,"17":593},"b":{},"f":{"1":16,"2":16,"3":70,"4":31,"5":16,"6":1613,"7":3418,"8":593},"fnMap":{"1":{"name":"capitalDelta","line":11,"loc":{"start":{"line":11,"column":2},"end":{"line":17,"column":2}}},"2":{"name":"deltaE","line":32,"loc":{"start":{"line":32,"column":2},"end":{"line":67,"column":2}}},"3":{"name":"lambdaFromT","line":69,"loc":{"start":{"line":69,"column":2},"end":{"line":75,"column":2}}},"4":{"name":"mDash","line":87,"loc":{"start":{"line":87,"column":2},"end":{"line":93,"column":2}}},"5":{"name":"revamp","line":104,"loc":{"start":{"line":104,"column":2},"end":{"line":106,"column":2}}},"6":{"name":"t","line":117,"loc":{"start":{"line":117,"column":2},"end":{"line":123,"column":2}}},"7":{"name":"wmul","line":131,"loc":{"start":{"line":131,"column":2},"end":{"line":133,"column":2}}},"8":{"name":"wdiv","line":141,"loc":{"start":{"line":141,"column":2},"end":{"line":143,"column":2}}}},"statementMap":{"1":{"start":{"line":16,"column":4},"end":{"line":16,"column":53}},"2":{"start":{"line":40,"column":4},"end":{"line":40,"column":58}},"3":{"start":{"line":42,"column":4},"end":{"line":42,"column":42}},"4":{"start":{"line":45,"column":4},"end":{"line":45,"column":34}},"5":{"start":{"line":48,"column":4},"end":{"line":48,"column":31}},"6":{"start":{"line":51,"column":4},"end":{"line":51,"column":44}},"7":{"start":{"line":54,"column":4},"end":{"line":54,"column":26}},"8":{"start":{"line":57,"column":4},"end":{"line":57,"column":35}},"9":{"start":{"line":60,"column":4},"end":{"line":60,"column":34}},"10":{"start":{"line":63,"column":4},"end":{"line":63,"column":27}},"11":{"start":{"line":66,"column":4},"end":{"line":66,"column":22}},"12":{"start":{"line":74,"column":4},"end":{"line":74,"column":30}},"13":{"start":{"line":92,"column":4},"end":{"line":92,"column":44}},"14":{"start":{"line":105,"column":4},"end":{"line":105,"column":57}},"15":{"start":{"line":122,"column":4},"end":{"line":122,"column":35}},"16":{"start":{"line":132,"column":4},"end":{"line":132,"column":90}},"17":{"start":{"line":142,"column":4},"end":{"line":142,"column":72}}},"branchMap":{}},"src/libraries/SafeMath.sol":{"l":{"29":16698,"30":16698,"32":16698,"46":139,"64":139,"65":139,"67":139,"84":4283,"85":0,"88":4283,"89":4283,"91":4283,"95":16,"96":0,"98":0,"100":0,"102":16,"103":16,"104":16},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/SafeMath.sol","s":{"1":16698,"2":16698,"3":16698,"4":139,"5":139,"6":139,"7":139,"8":4283,"9":0,"10":4283,"11":4283,"12":4283,"13":16,"14":0,"15":16,"16":0,"17":16,"18":0,"19":16,"20":16,"21":272,"22":16},"b":{"1":[16698,0],"2":[139,0],"3":[0,4283],"4":[4283,0],"5":[0,16],"6":[0,16],"7":[0,16]},"f":{"1":16698,"2":139,"3":139,"4":4283,"5":16},"fnMap":{"1":{"name":"add","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":33,"column":2}}},"2":{"name":"sub","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":2}}},"3":{"name":"sub","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":68,"column":2}}},"4":{"name":"mul","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":92,"column":2}}},"5":{"name":"pow","line":94,"loc":{"start":{"line":94,"column":2},"end":{"line":106,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":21}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":49}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":12}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":54}},"5":{"start":{"line":64,"column":4},"end":{"line":64,"column":32}},"6":{"start":{"line":65,"column":4},"end":{"line":65,"column":21}},"7":{"start":{"line":67,"column":4},"end":{"line":67,"column":12}},"8":{"start":{"line":84,"column":4},"end":{"line":84,"column":2356}},"9":{"start":{"line":85,"column":6},"end":{"line":85,"column":14}},"10":{"start":{"line":88,"column":4},"end":{"line":88,"column":21}},"11":{"start":{"line":89,"column":4},"end":{"line":89,"column":59}},"12":{"start":{"line":91,"column":4},"end":{"line":91,"column":12}},"13":{"start":{"line":95,"column":4},"end":{"line":95,"column":2583}},"14":{"start":{"line":96,"column":6},"end":{"line":96,"column":14}},"15":{"start":{"line":97,"column":11},"end":{"line":97,"column":2631}},"16":{"start":{"line":98,"column":6},"end":{"line":98,"column":17}},"17":{"start":{"line":99,"column":11},"end":{"line":99,"column":2682}},"18":{"start":{"line":100,"column":6},"end":{"line":100,"column":14}},"19":{"start":{"line":102,"column":6},"end":{"line":102,"column":22}},"20":{"start":{"line":103,"column":6},"end":{"line":103,"column":71}},"21":{"start":{"line":103,"column":55},"end":{"line":103,"column":70}},"22":{"start":{"line":104,"column":6},"end":{"line":104,"column":14}}},"branchMap":{"1":{"line":30,"type":"if","locations":[{"start":{"line":30,"column":4},"end":{"line":30,"column":4}},{"start":{"line":30,"column":4},"end":{"line":30,"column":4}}]},"2":{"line":64,"type":"if","locations":[{"start":{"line":64,"column":4},"end":{"line":64,"column":4}},{"start":{"line":64,"column":4},"end":{"line":64,"column":4}}]},"3":{"line":84,"type":"if","locations":[{"start":{"line":84,"column":4},"end":{"line":84,"column":4}},{"start":{"line":84,"column":4},"end":{"line":84,"column":4}}]},"4":{"line":89,"type":"if","locations":[{"start":{"line":89,"column":4},"end":{"line":89,"column":4}},{"start":{"line":89,"column":4},"end":{"line":89,"column":4}}]},"5":{"line":95,"type":"if","locations":[{"start":{"line":95,"column":4},"end":{"line":95,"column":4}},{"start":{"line":95,"column":4},"end":{"line":95,"column":4}}]},"6":{"line":97,"type":"if","locations":[{"start":{"line":97,"column":11},"end":{"line":97,"column":11}},{"start":{"line":97,"column":11},"end":{"line":97,"column":11}}]},"7":{"line":99,"type":"if","locations":[{"start":{"line":99,"column":11},"end":{"line":99,"column":11}},{"start":{"line":99,"column":11},"end":{"line":99,"column":11}}]}}},"src/models/DAO.sol":{"l":{"33":2607,"34":2607,"36":2607,"37":2607,"38":2607,"39":2607,"42":2607,"51":2,"55":1044,"65":817,"73":904,"78":904,"79":904,"80":904,"82":904,"83":614,"84":1842,"85":1842,"89":904,"93":2609},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/DAO.sol","s":{"1":2607,"2":2607,"3":2607,"4":2607,"5":2607,"6":2607,"7":2607,"8":2,"9":1044,"10":817,"11":904,"12":904,"13":904,"14":904,"15":904,"16":614,"17":1842,"18":1842,"19":904,"20":2609},"b":{"1":[2607,0],"2":[904,0],"3":[614,290]},"f":{"1":2607,"2":2,"3":1044,"4":817,"5":904,"6":2609},"fnMap":{"1":{"name":"deserialize","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":43,"column":2}}},"2":{"name":"exists","line":50,"loc":{"start":{"line":50,"column":2},"end":{"line":52,"column":2}}},"3":{"name":"getSummoner","line":54,"loc":{"start":{"line":54,"column":2},"end":{"line":56,"column":2}}},"4":{"name":"isSummoner","line":64,"loc":{"start":{"line":64,"column":2},"end":{"line":66,"column":2}}},"5":{"name":"serialize","line":72,"loc":{"start":{"line":72,"column":2},"end":{"line":90,"column":2}}},"6":{"name":"_exists","line":92,"loc":{"start":{"line":92,"column":2},"end":{"line":94,"column":2}}}},"statementMap":{"1":{"start":{"line":33,"column":4},"end":{"line":33,"column":22}},"2":{"start":{"line":34,"column":4},"end":{"line":34,"column":32}},"3":{"start":{"line":36,"column":4},"end":{"line":36,"column":966}},"4":{"start":{"line":37,"column":6},"end":{"line":37,"column":66}},"5":{"start":{"line":38,"column":6},"end":{"line":38,"column":90}},"6":{"start":{"line":39,"column":6},"end":{"line":39,"column":72}},"7":{"start":{"line":42,"column":4},"end":{"line":42,"column":17}},"8":{"start":{"line":51,"column":4},"end":{"line":51,"column":25}},"9":{"start":{"line":55,"column":4},"end":{"line":55,"column":76}},"10":{"start":{"line":65,"column":4},"end":{"line":65,"column":82}},"11":{"start":{"line":73,"column":4},"end":{"line":73,"column":2204}},"12":{"start":{"line":78,"column":4},"end":{"line":78,"column":69}},"13":{"start":{"line":79,"column":4},"end":{"line":79,"column":93}},"14":{"start":{"line":80,"column":4},"end":{"line":80,"column":75}},"15":{"start":{"line":82,"column":4},"end":{"line":82,"column":2592}},"16":{"start":{"line":83,"column":6},"end":{"line":83,"column":2659}},"17":{"start":{"line":84,"column":8},"end":{"line":84,"column":89}},"18":{"start":{"line":85,"column":8},"end":{"line":85,"column":90}},"19":{"start":{"line":89,"column":4},"end":{"line":89,"column":62}},"20":{"start":{"line":93,"column":4},"end":{"line":93,"column":58}}},"branchMap":{"1":{"line":36,"type":"if","locations":[{"start":{"line":36,"column":4},"end":{"line":36,"column":4}},{"start":{"line":36,"column":4},"end":{"line":36,"column":4}}]},"2":{"line":73,"type":"if","locations":[{"start":{"line":73,"column":4},"end":{"line":73,"column":4}},{"start":{"line":73,"column":4},"end":{"line":73,"column":4}}]},"3":{"line":82,"type":"if","locations":[{"start":{"line":82,"column":4},"end":{"line":82,"column":4}},{"start":{"line":82,"column":4},"end":{"line":82,"column":4}}]}}},"src/models/Ecosystem.sol":{"l":{"34":10153,"35":10153,"36":10153,"39":10153,"42":10153,"43":10153,"46":10153,"49":10153,"54":10153,"63":1,"71":1082,"73":1082,"80":1082,"84":1082,"85":1082,"89":1082,"93":1082,"98":1082,"102":11236},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Ecosystem.sol","s":{"1":10153,"2":10153,"3":10153,"4":10153,"5":10153,"6":10153,"7":10153,"8":10153,"9":10153,"10":1,"11":1082,"12":1082,"13":1082,"14":1082,"15":1082,"16":1082,"17":1082,"18":1082,"19":11236},"b":{"1":[10153,0],"2":[1082,0]},"f":{"1":10153,"2":1,"3":1082,"4":11236},"fnMap":{"1":{"name":"deserialize","line":33,"loc":{"start":{"line":33,"column":2},"end":{"line":55,"column":2}}},"2":{"name":"exists","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":64,"column":2}}},"3":{"name":"serialize","line":70,"loc":{"start":{"line":70,"column":2},"end":{"line":99,"column":2}}},"4":{"name":"_exists","line":101,"loc":{"start":{"line":101,"column":2},"end":{"line":103,"column":2}}}},"statementMap":{"1":{"start":{"line":34,"column":4},"end":{"line":34,"column":1129}},"2":{"start":{"line":35,"column":6},"end":{"line":35,"column":36}},"3":{"start":{"line":36,"column":6},"end":{"line":36,"column":1204}},"4":{"start":{"line":39,"column":6},"end":{"line":39,"column":1332}},"5":{"start":{"line":42,"column":6},"end":{"line":42,"column":49}},"6":{"start":{"line":43,"column":6},"end":{"line":43,"column":1504}},"7":{"start":{"line":46,"column":6},"end":{"line":46,"column":1638}},"8":{"start":{"line":49,"column":6},"end":{"line":49,"column":1774}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":17}},"10":{"start":{"line":63,"column":4},"end":{"line":63,"column":31}},"11":{"start":{"line":71,"column":4},"end":{"line":71,"column":50}},"12":{"start":{"line":73,"column":4},"end":{"line":73,"column":2385}},"13":{"start":{"line":80,"column":4},"end":{"line":80,"column":2592}},"14":{"start":{"line":84,"column":4},"end":{"line":84,"column":98}},"15":{"start":{"line":85,"column":4},"end":{"line":85,"column":2820}},"16":{"start":{"line":89,"column":4},"end":{"line":89,"column":2953}},"17":{"start":{"line":93,"column":4},"end":{"line":93,"column":3088}},"18":{"start":{"line":98,"column":4},"end":{"line":98,"column":68}},"19":{"start":{"line":102,"column":4},"end":{"line":102,"column":64}}},"branchMap":{"1":{"line":34,"type":"if","locations":[{"start":{"line":34,"column":4},"end":{"line":34,"column":4}},{"start":{"line":34,"column":4},"end":{"line":34,"column":4}}]},"2":{"line":73,"type":"if","locations":[{"start":{"line":73,"column":4},"end":{"line":73,"column":4}},{"start":{"line":73,"column":4},"end":{"line":73,"column":4}}]}}},"src/models/EternalModel.sol":{"l":{"30":39331,"37":11123,"44":51809,"51":24119,"63":19018,"71":4976,"79":7252,"87":8339},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/EternalModel.sol","s":{"1":39331,"2":11123,"3":51809,"4":24119,"5":19018,"6":4976,"7":7252,"8":8339},"b":{},"f":{"1":39331,"2":11123,"3":51809,"4":24119,"5":19018,"6":4976,"7":7252,"8":8339},"fnMap":{"1":{"name":"getUint","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":31,"column":2}}},"2":{"name":"getString","line":36,"loc":{"start":{"line":36,"column":2},"end":{"line":38,"column":2}}},"3":{"name":"getAddress","line":43,"loc":{"start":{"line":43,"column":2},"end":{"line":45,"column":2}}},"4":{"name":"getBool","line":50,"loc":{"start":{"line":50,"column":2},"end":{"line":52,"column":2}}},"5":{"name":"setUint","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":64,"column":2}}},"6":{"name":"setString","line":70,"loc":{"start":{"line":70,"column":2},"end":{"line":72,"column":2}}},"7":{"name":"setAddress","line":78,"loc":{"start":{"line":78,"column":2},"end":{"line":80,"column":2}}},"8":{"name":"setBool","line":86,"loc":{"start":{"line":86,"column":2},"end":{"line":88,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":30}},"2":{"start":{"line":37,"column":4},"end":{"line":37,"column":32}},"3":{"start":{"line":44,"column":4},"end":{"line":44,"column":33}},"4":{"start":{"line":51,"column":4},"end":{"line":51,"column":30}},"5":{"start":{"line":63,"column":4},"end":{"line":63,"column":31}},"6":{"start":{"line":71,"column":4},"end":{"line":71,"column":33}},"7":{"start":{"line":79,"column":4},"end":{"line":79,"column":34}},"8":{"start":{"line":87,"column":4},"end":{"line":87,"column":31}}},"branchMap":{}},"src/models/Token.sol":{"l":{"42":4262,"43":4262,"45":4262,"46":4258,"47":4258,"48":4258,"49":4258,"50":4258,"51":4258,"52":4258,"53":4258,"54":4258,"55":4258,"58":4262,"62":466,"66":1650,"68":1650,"69":1650,"77":2036,"84":2036,"85":2036,"86":2030,"87":2029,"88":2029,"89":2029,"90":2028,"91":2027,"93":1998,"100":1070,"104":5183},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Token.sol","s":{"1":4262,"2":4262,"3":4262,"4":4258,"5":4258,"6":4258,"7":4258,"8":4258,"9":4258,"10":4258,"11":4258,"12":4258,"13":4258,"14":4262,"15":466,"16":1650,"17":1650,"18":1650,"19":2036,"20":2036,"21":2036,"22":2030,"23":2029,"24":2029,"25":2029,"26":2028,"27":2027,"28":1998,"29":1070,"30":5183},"b":{"1":[4258,4],"2":[1650,0],"3":[2036,0]},"f":{"1":4262,"2":466,"3":1650,"4":2036,"5":1070,"6":5183},"fnMap":{"1":{"name":"deserialize","line":37,"loc":{"start":{"line":37,"column":2},"end":{"line":59,"column":2}}},"2":{"name":"exists","line":61,"loc":{"start":{"line":61,"column":2},"end":{"line":63,"column":2}}},"3":{"name":"incrementCounter","line":65,"loc":{"start":{"line":65,"column":2},"end":{"line":70,"column":2}}},"4":{"name":"serialize","line":76,"loc":{"start":{"line":76,"column":2},"end":{"line":94,"column":2}}},"5":{"name":"updateNumberOfTokenHolders","line":98,"loc":{"start":{"line":96,"column":2},"end":{"line":101,"column":2}}},"6":{"name":"_exists","line":103,"loc":{"start":{"line":103,"column":2},"end":{"line":105,"column":2}}}},"statementMap":{"1":{"start":{"line":42,"column":4},"end":{"line":42,"column":22}},"2":{"start":{"line":43,"column":4},"end":{"line":43,"column":32}},"3":{"start":{"line":45,"column":4},"end":{"line":45,"column":1331}},"4":{"start":{"line":46,"column":6},"end":{"line":46,"column":70}},"5":{"start":{"line":47,"column":6},"end":{"line":47,"column":64}},"6":{"start":{"line":48,"column":6},"end":{"line":48,"column":76}},"7":{"start":{"line":49,"column":6},"end":{"line":49,"column":58}},"8":{"start":{"line":50,"column":6},"end":{"line":50,"column":68}},"9":{"start":{"line":51,"column":6},"end":{"line":51,"column":58}},"10":{"start":{"line":52,"column":6},"end":{"line":52,"column":90}},"11":{"start":{"line":53,"column":6},"end":{"line":53,"column":66}},"12":{"start":{"line":54,"column":6},"end":{"line":54,"column":96}},"13":{"start":{"line":55,"column":6},"end":{"line":55,"column":70}},"14":{"start":{"line":58,"column":4},"end":{"line":58,"column":17}},"15":{"start":{"line":62,"column":4},"end":{"line":62,"column":25}},"16":{"start":{"line":66,"column":4},"end":{"line":66,"column":65}},"17":{"start":{"line":68,"column":4},"end":{"line":68,"column":76}},"18":{"start":{"line":69,"column":4},"end":{"line":69,"column":83}},"19":{"start":{"line":77,"column":4},"end":{"line":77,"column":2706}},"20":{"start":{"line":84,"column":4},"end":{"line":84,"column":69}},"21":{"start":{"line":85,"column":4},"end":{"line":85,"column":73}},"22":{"start":{"line":86,"column":4},"end":{"line":86,"column":67}},"23":{"start":{"line":87,"column":4},"end":{"line":87,"column":79}},"24":{"start":{"line":88,"column":4},"end":{"line":88,"column":61}},"25":{"start":{"line":89,"column":4},"end":{"line":89,"column":71}},"26":{"start":{"line":90,"column":4},"end":{"line":90,"column":61}},"27":{"start":{"line":91,"column":4},"end":{"line":91,"column":93}},"28":{"start":{"line":93,"column":4},"end":{"line":93,"column":62}},"29":{"start":{"line":100,"column":4},"end":{"line":100,"column":92}},"30":{"start":{"line":104,"column":4},"end":{"line":104,"column":58}}},"branchMap":{"1":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":45,"column":4}},{"start":{"line":45,"column":4},"end":{"line":45,"column":4}}]},"2":{"line":66,"type":"if","locations":[{"start":{"line":66,"column":4},"end":{"line":66,"column":4}},{"start":{"line":66,"column":4},"end":{"line":66,"column":4}}]},"3":{"line":77,"type":"if","locations":[{"start":{"line":77,"column":4},"end":{"line":77,"column":4}},{"start":{"line":77,"column":4},"end":{"line":77,"column":4}}]}}},"src/models/TokenHolder.sol":{"l":{"30":1666,"31":1666,"32":1666,"34":1666,"35":505,"36":505,"39":1666,"43":1,"51":1613,"53":1613,"54":1610,"56":1609,"60":1667},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/TokenHolder.sol","s":{"1":1666,"2":1666,"3":1666,"4":1666,"5":505,"6":505,"7":1666,"8":1,"9":1613,"10":1613,"11":1610,"12":1609,"13":1667},"b":{"1":[505,1161],"2":[1613,0]},"f":{"1":1666,"2":1,"3":1613,"4":1667},"fnMap":{"1":{"name":"deserialize","line":25,"loc":{"start":{"line":25,"column":2},"end":{"line":40,"column":2}}},"2":{"name":"exists","line":42,"loc":{"start":{"line":42,"column":2},"end":{"line":44,"column":2}}},"3":{"name":"serialize","line":50,"loc":{"start":{"line":50,"column":2},"end":{"line":57,"column":2}}},"4":{"name":"_exists","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":61,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":28}},"2":{"start":{"line":31,"column":4},"end":{"line":31,"column":32}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":24}},"4":{"start":{"line":34,"column":4},"end":{"line":34,"column":1066}},"5":{"start":{"line":35,"column":6},"end":{"line":35,"column":98}},"6":{"start":{"line":36,"column":6},"end":{"line":36,"column":96}},"7":{"start":{"line":39,"column":4},"end":{"line":39,"column":17}},"8":{"start":{"line":43,"column":4},"end":{"line":43,"column":36}},"9":{"start":{"line":51,"column":4},"end":{"line":51,"column":71}},"10":{"start":{"line":53,"column":4},"end":{"line":53,"column":95}},"11":{"start":{"line":54,"column":4},"end":{"line":54,"column":93}},"12":{"start":{"line":56,"column":4},"end":{"line":56,"column":84}},"13":{"start":{"line":60,"column":4},"end":{"line":60,"column":74}}},"branchMap":{"1":{"line":34,"type":"if","locations":[{"start":{"line":34,"column":4},"end":{"line":34,"column":4}},{"start":{"line":34,"column":4},"end":{"line":34,"column":4}}]},"2":{"line":51,"type":"if","locations":[{"start":{"line":51,"column":4},"end":{"line":51,"column":4}},{"start":{"line":51,"column":4},"end":{"line":51,"column":4}}]}}},"src/services/Configurator.sol":{"l":{"30":614,"31":614,"32":614,"33":614,"34":614,"35":614,"36":614,"37":614,"38":614,"50":614,"52":614,"55":614,"56":614,"57":614,"58":614,"61":614,"63":614,"64":614,"89":484,"90":484,"91":484,"92":484,"93":484,"94":484,"95":484,"96":484,"97":484,"98":484,"99":484,"101":455,"102":455,"103":455,"105":384},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/services/Configurator.sol","s":{"1":614,"2":614,"3":614,"4":614,"5":614,"6":614,"7":614,"8":614,"9":614,"10":614,"11":614,"12":614,"13":614,"14":614,"15":614,"16":614,"17":614,"18":614,"19":484,"20":484,"21":484,"22":484,"23":484,"24":484,"25":484,"26":484,"27":484,"28":484,"29":484,"30":455,"31":455,"32":455,"33":384},"b":{},"f":{"1":614,"2":614,"3":484},"fnMap":{"1":{"name":"buildDAO","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":39,"column":2}}},"2":{"name":"buildEcosystem","line":46,"loc":{"start":{"line":46,"column":2},"end":{"line":65,"column":2}}},"3":{"name":"buildToken","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":106,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":52}},"2":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":29}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":19}},"5":{"start":{"line":34,"column":4},"end":{"line":34,"column":45}},"6":{"start":{"line":35,"column":4},"end":{"line":35,"column":23}},"7":{"start":{"line":36,"column":4},"end":{"line":36,"column":29}},"8":{"start":{"line":37,"column":4},"end":{"line":37,"column":28}},"9":{"start":{"line":38,"column":4},"end":{"line":38,"column":14}},"10":{"start":{"line":50,"column":4},"end":{"line":50,"column":74}},"11":{"start":{"line":52,"column":4},"end":{"line":52,"column":36}},"12":{"start":{"line":55,"column":4},"end":{"line":55,"column":55}},"13":{"start":{"line":56,"column":4},"end":{"line":56,"column":67}},"14":{"start":{"line":57,"column":4},"end":{"line":57,"column":71}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":59}},"16":{"start":{"line":61,"column":4},"end":{"line":61,"column":63}},"17":{"start":{"line":63,"column":4},"end":{"line":63,"column":40}},"18":{"start":{"line":64,"column":4},"end":{"line":64,"column":20}},"19":{"start":{"line":89,"column":4},"end":{"line":89,"column":60}},"20":{"start":{"line":90,"column":4},"end":{"line":90,"column":21}},"21":{"start":{"line":91,"column":4},"end":{"line":91,"column":31}},"22":{"start":{"line":92,"column":4},"end":{"line":92,"column":33}},"23":{"start":{"line":93,"column":4},"end":{"line":93,"column":15}},"24":{"start":{"line":94,"column":4},"end":{"line":94,"column":19}},"25":{"start":{"line":95,"column":4},"end":{"line":95,"column":32}},"26":{"start":{"line":96,"column":4},"end":{"line":96,"column":47}},"27":{"start":{"line":97,"column":4},"end":{"line":97,"column":21}},"28":{"start":{"line":98,"column":4},"end":{"line":98,"column":25}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":97}},"30":{"start":{"line":101,"column":4},"end":{"line":101,"column":49}},"31":{"start":{"line":102,"column":4},"end":{"line":102,"column":68}},"32":{"start":{"line":103,"column":4},"end":{"line":103,"column":32}},"33":{"start":{"line":105,"column":4},"end":{"line":105,"column":16}}},"branchMap":{}},"src/services/ReentryProtection.sol":{"l":{"19":11053,"20":11021,"21":10959,"22":10133,"23":9936,"31":0,"32":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/services/ReentryProtection.sol","s":{"1":11053,"2":11021,"3":9936,"4":0},"b":{"1":[11021,32],"2":[0,0]},"f":{"1":11053,"2":0},"fnMap":{"1":{"name":"preventReentry","line":18,"loc":{"start":{"line":18,"column":2},"end":{"line":24,"column":2}}},"2":{"name":"noReentry","line":30,"loc":{"start":{"line":30,"column":2},"end":{"line":33,"column":2}}}},"statementMap":{"1":{"start":{"line":19,"column":4},"end":{"line":19,"column":50}},"2":{"start":{"line":20,"column":4},"end":{"line":20,"column":15}},"3":{"start":{"line":23,"column":4},"end":{"line":23,"column":10}},"4":{"start":{"line":31,"column":4},"end":{"line":31,"column":50}}},"branchMap":{"1":{"line":19,"type":"if","locations":[{"start":{"line":19,"column":4},"end":{"line":19,"column":4}},{"start":{"line":19,"column":4},"end":{"line":19,"column":4}}]},"2":{"line":31,"type":"if","locations":[{"start":{"line":31,"column":4},"end":{"line":31,"column":4}},{"start":{"line":31,"column":4},"end":{"line":31,"column":4}}]}}},"src/tokens/ElasticGovernanceToken.sol":{"l":{"30":792,"31":792,"35":29,"36":28,"40":1539,"41":1538,"45":484,"46":484,"47":484,"48":484,"61":3,"80":24,"81":22,"90":13,"91":13,"92":13,"94":13,"103":1,"104":1,"108":2,"109":2,"110":2,"111":2,"113":2,"114":1,"116":1,"133":14,"134":13,"150":14,"151":12,"159":1,"169":12,"171":12,"173":12,"174":11,"184":24,"185":22,"195":14,"197":13,"213":1524,"214":1366,"222":1,"226":1,"230":396,"234":396,"243":1,"256":18,"257":18,"261":1,"262":1,"274":28,"275":22,"293":14,"295":14,"297":13,"298":13,"300":12,"303":12,"313":60,"314":60,"316":60,"318":55,"322":14,"323":14,"324":14,"328":28,"329":28,"330":28,"331":28,"332":28,"334":28,"336":28,"337":28,"339":28,"340":28,"341":25,"345":14,"346":14,"347":14,"351":1538,"352":1538,"353":1538,"354":1538,"355":1538,"357":1538,"359":1538,"361":1538,"362":1538,"364":1537,"365":1537,"366":1473,"368":1380,"376":42,"377":42,"378":42,"380":42,"381":42,"382":42,"383":42,"385":42,"386":42,"388":42,"389":42,"391":42,"392":42,"393":42,"394":35,"395":35,"397":35,"406":1650,"408":1650,"409":1650,"411":1650,"412":1580,"414":70,"417":1650,"419":1650,"428":1568,"429":1101,"432":1475,"433":0,"440":4989,"444":1666,"445":1666,"454":65,"455":65},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/tokens/ElasticGovernanceToken.sol","s":{"1":792,"2":29,"3":1539,"4":484,"5":484,"6":484,"7":484,"8":3,"9":24,"10":22,"11":13,"12":13,"13":13,"14":13,"15":1,"16":1,"17":2,"18":2,"19":2,"20":2,"21":2,"22":1,"23":1,"24":14,"25":13,"26":14,"27":12,"28":1,"29":12,"30":12,"31":12,"32":11,"33":24,"34":22,"35":14,"36":13,"37":1524,"38":1366,"39":1,"40":1,"41":396,"42":396,"43":1,"44":18,"45":18,"46":1,"47":1,"48":28,"49":22,"50":14,"51":14,"52":13,"53":13,"54":12,"55":12,"56":60,"57":60,"58":60,"59":55,"60":14,"61":14,"62":14,"63":28,"64":28,"65":28,"66":28,"67":28,"68":28,"69":28,"70":28,"71":28,"72":28,"73":25,"74":14,"75":14,"76":14,"77":1538,"78":1538,"79":1538,"80":1538,"81":1538,"82":1538,"83":1538,"84":1538,"85":1538,"86":1537,"87":1537,"88":1473,"89":1380,"90":42,"91":42,"92":42,"93":42,"94":42,"95":42,"96":42,"97":42,"98":42,"99":42,"100":42,"101":42,"102":42,"103":42,"104":35,"105":35,"106":35,"107":1650,"108":1650,"109":1650,"110":1650,"111":1580,"112":70,"113":1650,"114":1650,"115":1568,"116":1101,"117":1475,"118":0,"119":4989,"120":1666,"121":1666,"122":65,"123":65},"b":{"1":[792,0],"2":[28,1],"3":[1538,1],"4":[1,1],"5":[12,0],"6":[14,0],"7":[13,0],"8":[60,0],"9":[60,0],"10":[1580,70],"11":[1101,467],"12":[0,1475]},"f":{"1":792,"2":29,"3":1539,"4":484,"5":3,"6":24,"7":13,"8":1,"9":2,"10":14,"11":14,"12":1,"13":12,"14":24,"15":14,"16":1524,"17":1,"18":1,"19":396,"20":396,"21":1,"22":18,"23":1,"24":28,"25":14,"26":60,"27":14,"28":28,"29":14,"30":1538,"31":42,"32":1650,"33":1568,"34":4989,"35":1666,"36":65},"fnMap":{"1":{"name":"onlyDAO","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":32,"column":2}}},"2":{"name":"onlyDAOorBurner","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":37,"column":2}}},"3":{"name":"onlyDAOorMinter","line":39,"loc":{"start":{"line":39,"column":2},"end":{"line":42,"column":2}}},"4":{"name":"constructor","line":44,"loc":{"start":{"line":44,"column":2},"end":{"line":49,"column":2}}},"5":{"name":"allowance","line":60,"loc":{"start":{"line":60,"column":2},"end":{"line":62,"column":2}}},"6":{"name":"approve","line":79,"loc":{"start":{"line":79,"column":2},"end":{"line":82,"column":2}}},"7":{"name":"balanceOf","line":89,"loc":{"start":{"line":89,"column":2},"end":{"line":95,"column":2}}},"8":{"name":"balanceOfInShares","line":102,"loc":{"start":{"line":102,"column":2},"end":{"line":105,"column":2}}},"9":{"name":"balanceOfVoting","line":107,"loc":{"start":{"line":107,"column":2},"end":{"line":118,"column":2}}},"10":{"name":"burn","line":130,"loc":{"start":{"line":126,"column":2},"end":{"line":135,"column":2}}},"11":{"name":"burnShares","line":147,"loc":{"start":{"line":143,"column":2},"end":{"line":152,"column":2}}},"12":{"name":"decimals","line":158,"loc":{"start":{"line":158,"column":2},"end":{"line":160,"column":2}}},"13":{"name":"decreaseAllowance","line":168,"loc":{"start":{"line":168,"column":2},"end":{"line":175,"column":2}}},"14":{"name":"increaseAllowance","line":183,"loc":{"start":{"line":183,"column":2},"end":{"line":186,"column":2}}},"15":{"name":"mint","line":194,"loc":{"start":{"line":194,"column":2},"end":{"line":198,"column":2}}},"16":{"name":"mintShares","line":210,"loc":{"start":{"line":206,"column":2},"end":{"line":215,"column":2}}},"17":{"name":"name","line":221,"loc":{"start":{"line":221,"column":2},"end":{"line":223,"column":2}}},"18":{"name":"numberOfTokenHolders","line":225,"loc":{"start":{"line":225,"column":2},"end":{"line":227,"column":2}}},"19":{"name":"setBurner","line":229,"loc":{"start":{"line":229,"column":2},"end":{"line":231,"column":2}}},"20":{"name":"setMinter","line":233,"loc":{"start":{"line":233,"column":2},"end":{"line":235,"column":2}}},"21":{"name":"symbol","line":242,"loc":{"start":{"line":242,"column":2},"end":{"line":244,"column":2}}},"22":{"name":"totalSupply","line":255,"loc":{"start":{"line":255,"column":2},"end":{"line":258,"column":2}}},"23":{"name":"totalSupplyInShares","line":260,"loc":{"start":{"line":260,"column":2},"end":{"line":263,"column":2}}},"24":{"name":"transfer","line":273,"loc":{"start":{"line":273,"column":2},"end":{"line":276,"column":2}}},"25":{"name":"transferFrom","line":292,"loc":{"start":{"line":288,"column":2},"end":{"line":304,"column":2}}},"26":{"name":"_approve","line":308,"loc":{"start":{"line":308,"column":2},"end":{"line":319,"column":2}}},"27":{"name":"_burn","line":321,"loc":{"start":{"line":321,"column":2},"end":{"line":325,"column":2}}},"28":{"name":"_burnShares","line":327,"loc":{"start":{"line":327,"column":2},"end":{"line":342,"column":2}}},"29":{"name":"_mint","line":344,"loc":{"start":{"line":344,"column":2},"end":{"line":348,"column":2}}},"30":{"name":"_mintShares","line":350,"loc":{"start":{"line":350,"column":2},"end":{"line":369,"column":2}}},"31":{"name":"_transfer","line":371,"loc":{"start":{"line":371,"column":2},"end":{"line":398,"column":2}}},"32":{"name":"_updateBalance","line":400,"loc":{"start":{"line":400,"column":2},"end":{"line":420,"column":2}}},"33":{"name":"_updateNumberOfTokenHolders","line":422,"loc":{"start":{"line":422,"column":2},"end":{"line":435,"column":2}}},"34":{"name":"_getEcosystem","line":439,"loc":{"start":{"line":439,"column":2},"end":{"line":441,"column":2}}},"35":{"name":"_getTokenHolder","line":443,"loc":{"start":{"line":443,"column":2},"end":{"line":451,"column":2}}},"36":{"name":"_getToken","line":453,"loc":{"start":{"line":453,"column":2},"end":{"line":456,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":90}},"2":{"start":{"line":35,"column":4},"end":{"line":35,"column":90}},"3":{"start":{"line":40,"column":4},"end":{"line":40,"column":90}},"4":{"start":{"line":45,"column":4},"end":{"line":45,"column":23}},"5":{"start":{"line":46,"column":4},"end":{"line":46,"column":27}},"6":{"start":{"line":47,"column":4},"end":{"line":47,"column":49}},"7":{"start":{"line":48,"column":4},"end":{"line":48,"column":23}},"8":{"start":{"line":61,"column":4},"end":{"line":61,"column":40}},"9":{"start":{"line":80,"column":4},"end":{"line":80,"column":42}},"10":{"start":{"line":81,"column":4},"end":{"line":81,"column":15}},"11":{"start":{"line":90,"column":4},"end":{"line":90,"column":45}},"12":{"start":{"line":91,"column":4},"end":{"line":91,"column":71}},"13":{"start":{"line":92,"column":4},"end":{"line":92,"column":67}},"14":{"start":{"line":94,"column":4},"end":{"line":94,"column":12}},"15":{"start":{"line":103,"column":4},"end":{"line":103,"column":71}},"16":{"start":{"line":104,"column":4},"end":{"line":104,"column":29}},"17":{"start":{"line":108,"column":4},"end":{"line":108,"column":45}},"18":{"start":{"line":109,"column":4},"end":{"line":109,"column":71}},"19":{"start":{"line":110,"column":4},"end":{"line":110,"column":59}},"20":{"start":{"line":111,"column":4},"end":{"line":111,"column":58}},"21":{"start":{"line":113,"column":4},"end":{"line":113,"column":3892}},"22":{"start":{"line":114,"column":6},"end":{"line":114,"column":61}},"23":{"start":{"line":116,"column":6},"end":{"line":116,"column":64}},"24":{"start":{"line":133,"column":4},"end":{"line":133,"column":27}},"25":{"start":{"line":134,"column":4},"end":{"line":134,"column":15}},"26":{"start":{"line":150,"column":4},"end":{"line":150,"column":33}},"27":{"start":{"line":151,"column":4},"end":{"line":151,"column":15}},"28":{"start":{"line":159,"column":4},"end":{"line":159,"column":13}},"29":{"start":{"line":169,"column":4},"end":{"line":169,"column":92}},"30":{"start":{"line":171,"column":4},"end":{"line":171,"column":74}},"31":{"start":{"line":173,"column":4},"end":{"line":173,"column":47}},"32":{"start":{"line":174,"column":4},"end":{"line":174,"column":15}},"33":{"start":{"line":184,"column":4},"end":{"line":184,"column":95}},"34":{"start":{"line":185,"column":4},"end":{"line":185,"column":15}},"35":{"start":{"line":195,"column":4},"end":{"line":195,"column":27}},"36":{"start":{"line":197,"column":4},"end":{"line":197,"column":15}},"37":{"start":{"line":213,"column":4},"end":{"line":213,"column":33}},"38":{"start":{"line":214,"column":4},"end":{"line":214,"column":15}},"39":{"start":{"line":222,"column":4},"end":{"line":222,"column":27}},"40":{"start":{"line":226,"column":4},"end":{"line":226,"column":43}},"41":{"start":{"line":230,"column":4},"end":{"line":230,"column":19}},"42":{"start":{"line":234,"column":4},"end":{"line":234,"column":19}},"43":{"start":{"line":243,"column":4},"end":{"line":243,"column":29}},"44":{"start":{"line":256,"column":4},"end":{"line":256,"column":45}},"45":{"start":{"line":257,"column":4},"end":{"line":257,"column":56}},"46":{"start":{"line":261,"column":4},"end":{"line":261,"column":45}},"47":{"start":{"line":262,"column":4},"end":{"line":262,"column":23}},"48":{"start":{"line":274,"column":4},"end":{"line":274,"column":38}},"49":{"start":{"line":275,"column":4},"end":{"line":275,"column":15}},"50":{"start":{"line":293,"column":4},"end":{"line":293,"column":97}},"51":{"start":{"line":295,"column":4},"end":{"line":295,"column":33}},"52":{"start":{"line":297,"column":4},"end":{"line":297,"column":9305}},"53":{"start":{"line":298,"column":6},"end":{"line":298,"column":91}},"54":{"start":{"line":300,"column":6},"end":{"line":300,"column":68}},"55":{"start":{"line":303,"column":4},"end":{"line":303,"column":15}},"56":{"start":{"line":313,"column":4},"end":{"line":313,"column":72}},"57":{"start":{"line":314,"column":4},"end":{"line":314,"column":72}},"58":{"start":{"line":316,"column":4},"end":{"line":316,"column":42}},"59":{"start":{"line":318,"column":4},"end":{"line":318,"column":44}},"60":{"start":{"line":322,"column":4},"end":{"line":322,"column":45}},"61":{"start":{"line":323,"column":4},"end":{"line":323,"column":76}},"62":{"start":{"line":324,"column":4},"end":{"line":324,"column":37}},"63":{"start":{"line":328,"column":4},"end":{"line":328,"column":57}},"64":{"start":{"line":329,"column":4},"end":{"line":329,"column":59}},"65":{"start":{"line":330,"column":4},"end":{"line":330,"column":84}},"66":{"start":{"line":331,"column":4},"end":{"line":331,"column":71}},"67":{"start":{"line":332,"column":4},"end":{"line":332,"column":52}},"68":{"start":{"line":334,"column":4},"end":{"line":334,"column":72}},"69":{"start":{"line":336,"column":4},"end":{"line":336,"column":58}},"70":{"start":{"line":337,"column":4},"end":{"line":337,"column":32}},"71":{"start":{"line":339,"column":4},"end":{"line":339,"column":83}},"72":{"start":{"line":340,"column":4},"end":{"line":340,"column":44}},"73":{"start":{"line":341,"column":4},"end":{"line":341,"column":84}},"74":{"start":{"line":345,"column":4},"end":{"line":345,"column":45}},"75":{"start":{"line":346,"column":4},"end":{"line":346,"column":76}},"76":{"start":{"line":347,"column":4},"end":{"line":347,"column":37}},"77":{"start":{"line":351,"column":4},"end":{"line":351,"column":57}},"78":{"start":{"line":352,"column":4},"end":{"line":352,"column":59}},"79":{"start":{"line":353,"column":4},"end":{"line":353,"column":84}},"80":{"start":{"line":354,"column":4},"end":{"line":354,"column":71}},"81":{"start":{"line":355,"column":4},"end":{"line":355,"column":52}},"82":{"start":{"line":357,"column":4},"end":{"line":357,"column":66}},"83":{"start":{"line":359,"column":4},"end":{"line":359,"column":71}},"84":{"start":{"line":361,"column":4},"end":{"line":361,"column":58}},"85":{"start":{"line":362,"column":4},"end":{"line":362,"column":32}},"86":{"start":{"line":364,"column":4},"end":{"line":364,"column":83}},"87":{"start":{"line":365,"column":4},"end":{"line":365,"column":44}},"88":{"start":{"line":366,"column":4},"end":{"line":366,"column":84}},"89":{"start":{"line":368,"column":4},"end":{"line":368,"column":47}},"90":{"start":{"line":376,"column":4},"end":{"line":376,"column":57}},"91":{"start":{"line":377,"column":4},"end":{"line":377,"column":59}},"92":{"start":{"line":378,"column":4},"end":{"line":378,"column":84}},"93":{"start":{"line":380,"column":4},"end":{"line":380,"column":72}},"94":{"start":{"line":381,"column":4},"end":{"line":381,"column":68}},"95":{"start":{"line":382,"column":4},"end":{"line":382,"column":60}},"96":{"start":{"line":383,"column":4},"end":{"line":383,"column":56}},"97":{"start":{"line":385,"column":4},"end":{"line":385,"column":76}},"98":{"start":{"line":386,"column":4},"end":{"line":386,"column":65}},"99":{"start":{"line":388,"column":4},"end":{"line":388,"column":79}},"100":{"start":{"line":389,"column":4},"end":{"line":389,"column":74}},"101":{"start":{"line":391,"column":4},"end":{"line":391,"column":83}},"102":{"start":{"line":392,"column":4},"end":{"line":392,"column":48}},"103":{"start":{"line":393,"column":4},"end":{"line":393,"column":46}},"104":{"start":{"line":394,"column":4},"end":{"line":394,"column":92}},"105":{"start":{"line":395,"column":4},"end":{"line":395,"column":88}},"106":{"start":{"line":397,"column":4},"end":{"line":397,"column":37}},"107":{"start":{"line":406,"column":4},"end":{"line":406,"column":57}},"108":{"start":{"line":408,"column":4},"end":{"line":408,"column":51}},"109":{"start":{"line":409,"column":4},"end":{"line":409,"column":63}},"110":{"start":{"line":411,"column":4},"end":{"line":411,"column":13810}},"111":{"start":{"line":412,"column":6},"end":{"line":412,"column":74}},"112":{"start":{"line":414,"column":6},"end":{"line":414,"column":74}},"113":{"start":{"line":417,"column":4},"end":{"line":417,"column":62}},"114":{"start":{"line":419,"column":4},"end":{"line":419,"column":23}},"115":{"start":{"line":428,"column":4},"end":{"line":428,"column":14290}},"116":{"start":{"line":429,"column":6},"end":{"line":429,"column":96}},"117":{"start":{"line":432,"column":4},"end":{"line":432,"column":14461}},"118":{"start":{"line":433,"column":6},"end":{"line":433,"column":96}},"119":{"start":{"line":440,"column":4},"end":{"line":440,"column":67}},"120":{"start":{"line":444,"column":4},"end":{"line":444,"column":57}},"121":{"start":{"line":445,"column":4},"end":{"line":445,"column":14964}},"122":{"start":{"line":454,"column":4},"end":{"line":454,"column":57}},"123":{"start":{"line":455,"column":4},"end":{"line":455,"column":83}}},"branchMap":{"1":{"line":30,"type":"if","locations":[{"start":{"line":30,"column":4},"end":{"line":30,"column":4}},{"start":{"line":30,"column":4},"end":{"line":30,"column":4}}]},"2":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":35,"column":4}},{"start":{"line":35,"column":4},"end":{"line":35,"column":4}}]},"3":{"line":40,"type":"if","locations":[{"start":{"line":40,"column":4},"end":{"line":40,"column":4}},{"start":{"line":40,"column":4},"end":{"line":40,"column":4}}]},"4":{"line":113,"type":"if","locations":[{"start":{"line":113,"column":4},"end":{"line":113,"column":4}},{"start":{"line":113,"column":4},"end":{"line":113,"column":4}}]},"5":{"line":171,"type":"if","locations":[{"start":{"line":171,"column":4},"end":{"line":171,"column":4}},{"start":{"line":171,"column":4},"end":{"line":171,"column":4}}]},"6":{"line":293,"type":"if","locations":[{"start":{"line":293,"column":4},"end":{"line":293,"column":4}},{"start":{"line":293,"column":4},"end":{"line":293,"column":4}}]},"7":{"line":297,"type":"if","locations":[{"start":{"line":297,"column":4},"end":{"line":297,"column":4}},{"start":{"line":297,"column":4},"end":{"line":297,"column":4}}]},"8":{"line":313,"type":"if","locations":[{"start":{"line":313,"column":4},"end":{"line":313,"column":4}},{"start":{"line":313,"column":4},"end":{"line":313,"column":4}}]},"9":{"line":314,"type":"if","locations":[{"start":{"line":314,"column":4},"end":{"line":314,"column":4}},{"start":{"line":314,"column":4},"end":{"line":314,"column":4}}]},"10":{"line":411,"type":"if","locations":[{"start":{"line":411,"column":4},"end":{"line":411,"column":4}},{"start":{"line":411,"column":4},"end":{"line":411,"column":4}}]},"11":{"line":428,"type":"if","locations":[{"start":{"line":428,"column":4},"end":{"line":428,"column":4}},{"start":{"line":428,"column":4},"end":{"line":428,"column":4}}]},"12":{"line":432,"type":"if","locations":[{"start":{"line":432,"column":4},"end":{"line":432,"column":4}},{"start":{"line":432,"column":4},"end":{"line":432,"column":4}}]}}}} \ No newline at end of file diff --git a/deploy/initialDeployment.js b/deploy/initialDeployment.js index 3210c59..4bad7d3 100644 --- a/deploy/initialDeployment.js +++ b/deploy/initialDeployment.js @@ -39,6 +39,7 @@ module.exports.dependencies = [ 'DAO', 'Ecosystem', 'ElasticDAOFactory', + 'ReentryProtection', 'Token', 'TokenHolder', ]; diff --git a/deploy/reentryProtection.js b/deploy/reentryProtection.js new file mode 100644 index 0000000..4c187bd --- /dev/null +++ b/deploy/reentryProtection.js @@ -0,0 +1,15 @@ +module.exports = async ({ getNamedAccounts, deployments }) => { + const { deploy, log } = deployments; + const { agent } = await getNamedAccounts(); + + const reentryProtection = await deploy('ReentryProtection', { + from: agent, + args: [], + proxy: true, + }); + + if (reentryProtection.newlyDeployed) { + log(`##### ElasticDAO: Reentry Protectionl has been deployed: ${reentryProtection.address}`); + } +}; +module.exports.tags = ['ReentryProtection']; diff --git a/package.json b/package.json index 4e4849e..99374da 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "test": "yarn run prettier:tests && yarn run lint:tests && npx hardhat test --deploy-fixture" }, "dependencies": { - "@elastic-dao/sdk": "0.9.0-beta7", + "@elastic-dao/sdk": "0.9.0-beta9", "@nomiclabs/hardhat-ethers": "2.0.1", "@nomiclabs/hardhat-etherscan": "2.1.1", "@nomiclabs/hardhat-waffle": "2.0.1", diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index 649cff5..ed7508d 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -8,10 +8,11 @@ import '../libraries/SafeMath.sol'; import '../models/DAO.sol'; import '../models/Ecosystem.sol'; import '../models/Token.sol'; +import '../services/ReentryProtection.sol'; import '../services/Configurator.sol'; -contract ElasticDAO { +contract ElasticDAO is ReentryProtection { address public deployer; address public ecosystemModelAddress; address public controller; @@ -94,7 +95,7 @@ contract ElasticDAO { configurator.buildDAO(_summoners, _name, _numberOfSummoners, ecosystem); } - function exit(uint256 _deltaLambda) public onlyAfterSummoning { + function exit(uint256 _deltaLambda) public onlyAfterSummoning preventReentry { // burn the shares Token.Instance memory token = _getToken(); ElasticGovernanceToken tokenContract = ElasticGovernanceToken(token.uuid); @@ -115,7 +116,7 @@ contract ElasticDAO { uint256 _elasticity, uint256 _k, uint256 _maxLambdaPurchase - ) external onlyBeforeSummoning onlyDeployer { + ) external onlyBeforeSummoning onlyDeployer preventReentry { require(msg.sender == deployer, 'ElasticDAO: Only deployer can initialize the Token'); Ecosystem.Instance memory ecosystem = _getEcosystem(); @@ -137,7 +138,13 @@ contract ElasticDAO { emit ElasticGovernanceTokenDeployed(token.uuid); } - function join(uint256 _deltaLambda) public payable onlyAfterSummoning onlyWhenOpen { + function join(uint256 _deltaLambda) + public + payable + onlyAfterSummoning + onlyWhenOpen + preventReentry + { Token.Instance memory token = _getToken(); require( @@ -183,7 +190,7 @@ contract ElasticDAO { emit JoinDAO(address(this), msg.sender, _deltaLambda, msg.value); } - function setController(address _controller) external onlyController { + function setController(address _controller) external onlyController preventReentry { controller = _controller; ElasticGovernanceToken tokenContract = ElasticGovernanceToken(_getToken().uuid); tokenContract.setBurner(controller); @@ -192,7 +199,7 @@ contract ElasticDAO { emit ControllerChanged(address(this), 'setController', controller); } - function setMaxVotingLambda(uint256 _maxVotingLambda) external onlyController { + function setMaxVotingLambda(uint256 _maxVotingLambda) external onlyController preventReentry { maxVotingLambda = _maxVotingLambda; emit MaxVotingLambdaChanged(address(this), 'setMaxVotingLambda', _maxVotingLambda); @@ -206,6 +213,7 @@ contract ElasticDAO { onlyBeforeSummoning onlySummoners onlyAfterTokenInitialized + preventReentry { Token.Instance memory token = _getToken(); @@ -216,7 +224,7 @@ contract ElasticDAO { emit SeedDAO(address(this), msg.sender, deltaLambda); } - function summon(uint256 _deltaLambda) public onlyBeforeSummoning onlySummoners { + function summon(uint256 _deltaLambda) public onlyBeforeSummoning onlySummoners preventReentry { require(address(this).balance > 0, 'ElasticDAO: Please seed DAO with ETH to set ETH:EGT ratio'); Ecosystem.Instance memory ecosystem = _getEcosystem(); diff --git a/src/core/ElasticDAOFactory.sol b/src/core/ElasticDAOFactory.sol index cc861f6..28db78c 100644 --- a/src/core/ElasticDAOFactory.sol +++ b/src/core/ElasticDAOFactory.sol @@ -5,9 +5,10 @@ pragma experimental ABIEncoderV2; import './ElasticDAO.sol'; import '../models/Ecosystem.sol'; +import '../services/ReentryProtection.sol'; // This contract is the facory contract for ElasticDAO -contract ElasticDAOFactory { +contract ElasticDAOFactory is ReentryProtection { address public deployer; address public ecosystemModelAddress; address payable feeAddress; @@ -42,7 +43,7 @@ contract ElasticDAOFactory { uint256 _elasticity, uint256 _k, uint256 _maxLambdaPurchase - ) public payable { + ) public payable preventReentry { // create the DAO ElasticDAO elasticDAO = new ElasticDAO(ecosystemModelAddress, msg.sender, _summoners, _nameOfDAO, _numberOfSummoners); @@ -55,12 +56,12 @@ contract ElasticDAOFactory { emit DeployedDAO(address(elasticDAO)); } - function updateFeeAddress(address _feeReceiver) external onlyDeployer { + function updateFeeAddress(address _feeReceiver) external onlyDeployer preventReentry { feeAddress = payable(_feeReceiver); emit FeeAddressUpdated(_feeReceiver); } - function collectFees() external { + function collectFees() external preventReentry { uint256 amount = address(this).balance; feeAddress.transfer(amount); diff --git a/src/libraries/SafeMath.sol b/src/libraries/SafeMath.sol index 8ec7c7f..968b74c 100644 --- a/src/libraries/SafeMath.sol +++ b/src/libraries/SafeMath.sol @@ -91,83 +91,6 @@ library SafeMath { return c; } - /** - * @dev Returns the integer division of two unsigned integers. Reverts on - * division by zero. The result is rounded towards zero. - * - * Counterpart to Solidity's `/` operator. Note: this function uses a - * `revert` opcode (which leaves remaining gas untouched) while Solidity - * uses an invalid opcode to revert (consuming all remaining gas). - * - * Requirements: - * - * - The divisor cannot be zero. - */ - function div(uint256 a, uint256 b) internal pure returns (uint256) { - return div(a, b, 'SafeMath: division by zero'); - } - - /** - * @dev Returns the integer division of two unsigned integers. Reverts with custom message on - * division by zero. The result is rounded towards zero. - * - * Counterpart to Solidity's `/` operator. Note: this function uses a - * `revert` opcode (which leaves remaining gas untouched) while Solidity - * uses an invalid opcode to revert (consuming all remaining gas). - * - * Requirements: - * - * - The divisor cannot be zero. - */ - function div( - uint256 a, - uint256 b, - string memory errorMessage - ) internal pure returns (uint256) { - require(b > 0, errorMessage); - uint256 c = a / b; - // assert(a == b * c + a % b); // There is no case in which this doesn't hold - - return c; - } - - /** - * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), - * Reverts when dividing by zero. - * - * Counterpart to Solidity's `%` operator. This function uses a `revert` - * opcode (which leaves remaining gas untouched) while Solidity uses an - * invalid opcode to revert (consuming all remaining gas). - * - * Requirements: - * - * - The divisor cannot be zero. - */ - function mod(uint256 a, uint256 b) internal pure returns (uint256) { - return mod(a, b, 'SafeMath: modulo by zero'); - } - - /** - * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), - * Reverts with custom message when dividing by zero. - * - * Counterpart to Solidity's `%` operator. This function uses a `revert` - * opcode (which leaves remaining gas untouched) while Solidity uses an - * invalid opcode to revert (consuming all remaining gas). - * - * Requirements: - * - * - The divisor cannot be zero. - */ - function mod( - uint256 a, - uint256 b, - string memory errorMessage - ) internal pure returns (uint256) { - require(b != 0, errorMessage); - return a % b; - } - function pow(uint256 base, uint256 exponent) internal pure returns (uint256) { if (exponent == 0) { return 1; @@ -181,11 +104,4 @@ library SafeMath { return z; } } - - /** - * @dev Returns the largest of two numbers. - */ - function max(uint256 a, uint256 b) internal pure returns (uint256) { - return a >= b ? a : b; - } } diff --git a/src/models/DAO.sol b/src/models/DAO.sol index 428a56c..8a08976 100644 --- a/src/models/DAO.sol +++ b/src/models/DAO.sol @@ -5,11 +5,12 @@ pragma experimental ABIEncoderV2; import './Ecosystem.sol'; import './EternalModel.sol'; import '../libraries/SafeMath.sol'; +import '../services/ReentryProtection.sol'; /// @author ElasticDAO - https://ElasticDAO.org /// @notice This contract is used for storing core dao data /// @dev ElasticDAO network contracts can read/write from this contract -contract DAO is EternalModel { +contract DAO is EternalModel, ReentryProtection { struct Instance { address uuid; address[] summoners; @@ -68,7 +69,7 @@ contract DAO is EternalModel { * @dev serializes Instance struct * @param record Instance */ - function serialize(Instance memory record) external { + function serialize(Instance memory record) external preventReentry { require( msg.sender == record.uuid || msg.sender == record.ecosystem.configuratorAddress, 'ElasticDAO: Unauthorized' diff --git a/src/models/Ecosystem.sol b/src/models/Ecosystem.sol index cb5470c..af69487 100644 --- a/src/models/Ecosystem.sol +++ b/src/models/Ecosystem.sol @@ -4,13 +4,14 @@ pragma experimental ABIEncoderV2; import './EternalModel.sol'; import '../libraries/SafeMath.sol'; +import '../services/ReentryProtection.sol'; /// @author ElasticDAO - https://ElasticDAO.org /// @notice This contract is used for storing core dao data /// @dev ElasticDAO network contracts can read/write from this contract /// Serialize -> Translation of data from the concerned struct to key-value pairs /// Deserialize -> Translation of data from the key-value pairs to a struct -contract Ecosystem is EternalModel { +contract Ecosystem is EternalModel, ReentryProtection { struct Instance { address daoAddress; // Models @@ -29,7 +30,7 @@ contract Ecosystem is EternalModel { * @param _daoAddress - address of the unique user ID * @return record Instance */ - function deserialize(address _daoAddress) external view returns (Instance memory record) { + function deserialize(address _daoAddress) external view returns (Instance memory record) { if (_exists(_daoAddress)) { record.daoAddress = _daoAddress; record.configuratorAddress = getAddress( @@ -66,7 +67,7 @@ contract Ecosystem is EternalModel { * @dev serializes Instance struct * @param record Instance */ - function serialize(Instance memory record) external { + function serialize(Instance memory record) external preventReentry { bool recordExists = _exists(record.daoAddress); require( diff --git a/src/models/EternalModel.sol b/src/models/EternalModel.sol index 92c6592..535173d 100644 --- a/src/models/EternalModel.sol +++ b/src/models/EternalModel.sol @@ -51,20 +51,6 @@ contract EternalModel { return s.boolStorage[_key]; } - /// @notice Get stored contract data in int256 format - /// @param _key bytes32 location should be keccak256 and abi.encodePacked - /// @return int256 _value from storage _key location - function getInt(bytes32 _key) internal view returns (int256) { - return s.intStorage[_key]; - } - - /// @notice Get stored contract data in bytes format - /// @param _key bytes32 location should be keccak256 and abi.encodePacked - /// @return bytes _value from storage _key location - function getBytes(bytes32 _key) internal view returns (bytes memory) { - return s.bytesStorage[_key]; - } - ////////////////////////////// /// @notice Setter Functions ///////////////////////////// @@ -100,66 +86,4 @@ contract EternalModel { function setBool(bytes32 _key, bool _value) internal { s.boolStorage[_key] = _value; } - - /// @notice Store contract data in int256 format - /// @dev restricted to latest ElasticDAO Networks contracts - /// @param _key bytes32 location should be keccak256 and abi.encodePacked - /// @param _value int256 value - function setInt(bytes32 _key, int256 _value) internal { - s.intStorage[_key] = _value; - } - - /// @notice Store contract data in bytes format - /// @dev restricted to latest ElasticDAO Networks contracts - /// @param _key bytes32 location should be keccak256 and abi.encodePacked - /// @param _value bytes value - function setBytes(bytes32 _key, bytes memory _value) internal { - s.bytesStorage[_key] = _value; - } - - ////////////////////////////// - /// @notice Delete Functions - ///////////////////////////// - - /// @notice Delete stored contract data in bytes format - /// @dev restricted to latest ElasticDAO Networks contracts - /// @param _key bytes32 location should be keccak256 and abi.encodePacked - function deleteUint(bytes32 _key) internal { - delete s.uIntStorage[_key]; - } - - /// @notice Delete stored contract data in string format - /// @dev restricted to latest ElasticDAO Networks contracts - /// @param _key bytes32 location should be keccak256 and abi.encodePacked - function deleteString(bytes32 _key) internal { - delete s.stringStorage[_key]; - } - - /// @notice Delete stored contract data in address format - /// @dev restricted to latest ElasticDAO Networks contracts - /// @param _key bytes32 location should be keccak256 and abi.encodePacked - function deleteAddress(bytes32 _key) internal { - delete s.addressStorage[_key]; - } - - /// @notice Delete stored contract data in bool format - /// @dev restricted to latest ElasticDAO Networks contracts - /// @param _key bytes32 location should be keccak256 and abi.encodePacked - function deleteBool(bytes32 _key) internal { - delete s.boolStorage[_key]; - } - - /// @notice Delete stored contract data in int256 format - /// @dev restricted to latest ElasticDAO Networks contracts - /// @param _key bytes32 location should be keccak256 and abi.encodePacked - function deleteInt(bytes32 _key) internal { - delete s.intStorage[_key]; - } - - /// @notice Delete stored contract data in bytes format - /// @dev restricted to latest ElasticDAO Networks contracts - /// @param _key bytes32 location should be keccak256 and abi.encodePacked - function deleteBytes(bytes32 _key) internal { - delete s.bytesStorage[_key]; - } } diff --git a/src/models/Token.sol b/src/models/Token.sol index 48b5579..5491e2e 100644 --- a/src/models/Token.sol +++ b/src/models/Token.sol @@ -5,7 +5,7 @@ pragma experimental ABIEncoderV2; import './Ecosystem.sol'; import './EternalModel.sol'; import '../libraries/SafeMath.sol'; - +import '../services/ReentryProtection.sol'; import '../tokens/ElasticGovernanceToken.sol'; /// @author ElasticDAO - https://ElasticDAO.org @@ -13,7 +13,7 @@ import '../tokens/ElasticGovernanceToken.sol'; /// @dev ElasticDAO network contracts can read/write from this contract /// Serialize -> Translation of data from the concerned struct to key-value pairs /// Deserialize -> Translation of data from the key-value pairs to a struct -contract Token is EternalModel { +contract Token is EternalModel, ReentryProtection { struct Instance { address uuid; string name; @@ -73,7 +73,7 @@ contract Token is EternalModel { * @dev serializes Instance struct * @param record Instance */ - function serialize(Instance memory record) external { + function serialize(Instance memory record) external preventReentry { require( msg.sender == record.uuid || msg.sender == record.ecosystem.daoAddress || @@ -95,6 +95,7 @@ contract Token is EternalModel { function updateNumberOfTokenHolders(Instance memory record, uint256 numberOfTokenHolders) external + preventReentry { setUint(keccak256(abi.encode(record.uuid, 'numberOfTokenHolders')), numberOfTokenHolders); } diff --git a/src/models/TokenHolder.sol b/src/models/TokenHolder.sol index a935189..9b6f1bf 100644 --- a/src/models/TokenHolder.sol +++ b/src/models/TokenHolder.sol @@ -6,14 +6,14 @@ import './Ecosystem.sol'; import './EternalModel.sol'; import './Token.sol'; import '../libraries/SafeMath.sol'; -import 'hardhat/console.sol'; +import '../services/ReentryProtection.sol'; /// @author ElasticDAO - https://ElasticDAO.org /// @notice This contract is used for storing token data /// @dev ElasticDAO network contracts can read/write from this contract // Serialize -> Translation of data from the concerned struct to key-value pairs /// Deserialize -> Translation of data from the key-value pairs to a struct -contract TokenHolder is EternalModel { +contract TokenHolder is EternalModel, ReentryProtection { struct Instance { address account; uint256 counter; @@ -47,7 +47,7 @@ contract TokenHolder is EternalModel { * @dev serializes Instance struct * @param record Instance */ - function serialize(Instance memory record) external { + function serialize(Instance memory record) external preventReentry { require(msg.sender == record.token.uuid, 'ElasticDAO: Unauthorized'); setUint(keccak256(abi.encode(record.token.uuid, record.account, 'counter')), record.counter); diff --git a/src/services/ReentryProtection.sol b/src/services/ReentryProtection.sol new file mode 100644 index 0000000..2fb36cc --- /dev/null +++ b/src/services/ReentryProtection.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: GPLv3 +pragma solidity 0.7.2; + +/// @author ElasticDAO - https://ElasticDAO.org +/// @notice This contract is used for reentry protection +/// based on implementation https://github.com/o0ragman0o/ReentryProtected/blob/master/ReentryProtected.sol +/// @dev ElasticDAO network contracts can read/write from this contract +contract ReentryProtection { + // The reentry protection state mutex + bool mutex = false; + + // This modifier can be used on functions with external calls to + // prevent reentry attacks. + // Constraints: + // Protected functions must have only one point of exit. + // Protected functions cannot use the `return` keyword + // Protected functions return values must be through return parameters. + modifier preventReentry() { + require(!mutex, 'ElasticDAO: Reentry Detected'); + mutex = true; + _; + delete mutex; + return; + } +} diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index c17fe62..0ca39b2 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -13,10 +13,12 @@ import '../models/Ecosystem.sol'; import '../models/Token.sol'; import '../models/TokenHolder.sol'; +import '../services/ReentryProtection.sol'; + /** * @dev Implementation of the IERC20 interface */ -contract ElasticGovernanceToken is IElasticToken { +contract ElasticGovernanceToken is IElasticToken, ReentryProtection { address public burner; address public daoAddress; address public ecosystemModelAddress; @@ -74,7 +76,7 @@ contract ElasticGovernanceToken is IElasticToken { * Emits an {Approval} event * @return bool */ - function approve(address _spender, uint256 _amount) external override returns (bool) { + function approve(address _spender, uint256 _amount) external preventReentry override returns (bool) { _approve(msg.sender, _spender, _amount); return true; } @@ -125,6 +127,7 @@ contract ElasticGovernanceToken is IElasticToken { external override onlyDAOorBurner + preventReentry returns (bool) { _burn(_account, _amount); @@ -141,6 +144,7 @@ contract ElasticGovernanceToken is IElasticToken { external override onlyDAOorBurner + preventReentry returns (bool) { _burnShares(_account, _amount); @@ -161,7 +165,7 @@ contract ElasticGovernanceToken is IElasticToken { * @param _subtractedValue - the value the allowance has to be decreased by * @return bool */ - function decreaseAllowance(address _spender, uint256 _subtractedValue) external returns (bool) { + function decreaseAllowance(address _spender, uint256 _subtractedValue) external preventReentry returns (bool) { uint256 newAllowance = SafeMath.sub(_allowances[msg.sender][_spender], _subtractedValue); require(newAllowance > 0, 'ElasticDAO: Allowance decrease less than 0'); @@ -176,7 +180,7 @@ contract ElasticGovernanceToken is IElasticToken { * @param _addedValue - the value the allowance has to be increased by * @return bool */ - function increaseAllowance(address _spender, uint256 _addedValue) external returns (bool) { + function increaseAllowance(address _spender, uint256 _addedValue) external preventReentry returns (bool) { _approve(msg.sender, _spender, SafeMath.add(_allowances[msg.sender][_spender], _addedValue)); return true; } @@ -187,7 +191,7 @@ contract ElasticGovernanceToken is IElasticToken { * @param _account - the address of the account for whom the token have to be minted to * @return bool */ - function mint(address _account, uint256 _amount) external onlyDAOorMinter returns (bool) { + function mint(address _account, uint256 _amount) external onlyDAOorMinter preventReentry returns (bool) { _mint(_account, _amount); return true; @@ -203,6 +207,7 @@ contract ElasticGovernanceToken is IElasticToken { external override onlyDAOorMinter + preventReentry returns (bool) { _mintShares(_account, _amount); @@ -221,11 +226,11 @@ contract ElasticGovernanceToken is IElasticToken { return _getToken().numberOfTokenHolders; } - function setBurner(address _burner) external onlyDAO { + function setBurner(address _burner) external onlyDAO preventReentry { burner = _burner; } - function setMinter(address _minter) external onlyDAO { + function setMinter(address _minter) external onlyDAO preventReentry { minter = _minter; } @@ -265,7 +270,7 @@ contract ElasticGovernanceToken is IElasticToken { * Emits a {Transfer} event * @return bool */ - function transfer(address _to, uint256 _amount) external override returns (bool) { + function transfer(address _to, uint256 _amount) external override preventReentry returns (bool) { _transfer(msg.sender, _to, _amount); return true; } @@ -284,7 +289,7 @@ contract ElasticGovernanceToken is IElasticToken { address _from, address _to, uint256 _amount - ) external override returns (bool) { + ) external override preventReentry returns (bool) { require(msg.sender == _from || _amount <= _allowances[_from][msg.sender], 'ERC20: Bad Caller'); _transfer(_from, _to, _amount); diff --git a/yarn.lock b/yarn.lock index 567c6d5..9305c6d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,10 +23,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@elastic-dao/sdk@0.9.0-beta7": - version "0.9.0-beta7" - resolved "https://registry.yarnpkg.com/@elastic-dao/sdk/-/sdk-0.9.0-beta7.tgz#926eac3db945ce507c60d9a117489422869cd678" - integrity sha512-5FIzEzUJaxq10EW59dHV7e7XCKdBaVElqm5mnb7ZH4ZpxkSiosaOQ54tncZaW9HA8yas3oHoZk5k4vTrEEBrTg== +"@elastic-dao/sdk@0.9.0-beta9": + version "0.9.0-beta9" + resolved "https://registry.yarnpkg.com/@elastic-dao/sdk/-/sdk-0.9.0-beta9.tgz#99c0975cf2efe9cf40b84de51a5f231ea78bdf74" + integrity sha512-jYibutTtwFTnYr+PMjMK82xADH34J/n3LJWAmsRn5VFlmGazjk+p82lwwyE4sLznjZ5oflsLun3Z8+/TEzIHeA== dependencies: "@pie-dao/utils" "^1.0.0" bignumber.js "^9.0.0" From 4db5163ab36587349d8dc6113c2f7a8c1af5d0f1 Mon Sep 17 00:00:00 2001 From: alleycatdev Date: Mon, 8 Feb 2021 18:38:20 -0500 Subject: [PATCH 027/118] rc2 --- src/models/Ecosystem.sol | 2 +- src/services/ReentryProtection.sol | 3 ++- src/tokens/ElasticGovernanceToken.sol | 26 ++++++++++++++++++++++---- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/src/models/Ecosystem.sol b/src/models/Ecosystem.sol index af69487..212d27a 100644 --- a/src/models/Ecosystem.sol +++ b/src/models/Ecosystem.sol @@ -30,7 +30,7 @@ contract Ecosystem is EternalModel, ReentryProtection { * @param _daoAddress - address of the unique user ID * @return record Instance */ - function deserialize(address _daoAddress) external view returns (Instance memory record) { + function deserialize(address _daoAddress) external view returns (Instance memory record) { if (_exists(_daoAddress)) { record.daoAddress = _daoAddress; record.configuratorAddress = getAddress( diff --git a/src/services/ReentryProtection.sol b/src/services/ReentryProtection.sol index 2fb36cc..7f8623b 100644 --- a/src/services/ReentryProtection.sol +++ b/src/services/ReentryProtection.sol @@ -3,7 +3,8 @@ pragma solidity 0.7.2; /// @author ElasticDAO - https://ElasticDAO.org /// @notice This contract is used for reentry protection -/// based on implementation https://github.com/o0ragman0o/ReentryProtected/blob/master/ReentryProtected.sol +/// based on implementation +/// https://github.com/o0ragman0o/ReentryProtected/blob/master/ReentryProtected.sol /// @dev ElasticDAO network contracts can read/write from this contract contract ReentryProtection { // The reentry protection state mutex diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index 0ca39b2..37fb31a 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -76,7 +76,12 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { * Emits an {Approval} event * @return bool */ - function approve(address _spender, uint256 _amount) external preventReentry override returns (bool) { + function approve(address _spender, uint256 _amount) + external + override + preventReentry + returns (bool) + { _approve(msg.sender, _spender, _amount); return true; } @@ -165,7 +170,11 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { * @param _subtractedValue - the value the allowance has to be decreased by * @return bool */ - function decreaseAllowance(address _spender, uint256 _subtractedValue) external preventReentry returns (bool) { + function decreaseAllowance(address _spender, uint256 _subtractedValue) + external + preventReentry + returns (bool) + { uint256 newAllowance = SafeMath.sub(_allowances[msg.sender][_spender], _subtractedValue); require(newAllowance > 0, 'ElasticDAO: Allowance decrease less than 0'); @@ -180,7 +189,11 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { * @param _addedValue - the value the allowance has to be increased by * @return bool */ - function increaseAllowance(address _spender, uint256 _addedValue) external preventReentry returns (bool) { + function increaseAllowance(address _spender, uint256 _addedValue) + external + preventReentry + returns (bool) + { _approve(msg.sender, _spender, SafeMath.add(_allowances[msg.sender][_spender], _addedValue)); return true; } @@ -191,7 +204,12 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { * @param _account - the address of the account for whom the token have to be minted to * @return bool */ - function mint(address _account, uint256 _amount) external onlyDAOorMinter preventReentry returns (bool) { + function mint(address _account, uint256 _amount) + external + onlyDAOorMinter + preventReentry + returns (bool) + { _mint(_account, _amount); return true; From babbc1e853a0723489529ba09c10d1832fe4c558 Mon Sep 17 00:00:00 2001 From: alleycatdev Date: Mon, 8 Feb 2021 22:31:12 -0500 Subject: [PATCH 028/118] mythx fixes --- src/core/ElasticDAO.sol | 16 +++++++++------- src/core/ElasticDAOFactory.sol | 5 +++-- src/models/DAO.sol | 1 + src/tokens/ElasticGovernanceToken.sol | 6 ++---- 4 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index ed7508d..a75af9e 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -95,7 +95,7 @@ contract ElasticDAO is ReentryProtection { configurator.buildDAO(_summoners, _name, _numberOfSummoners, ecosystem); } - function exit(uint256 _deltaLambda) public onlyAfterSummoning preventReentry { + function exit(uint256 _deltaLambda) external onlyAfterSummoning preventReentry { // burn the shares Token.Instance memory token = _getToken(); ElasticGovernanceToken tokenContract = ElasticGovernanceToken(token.uuid); @@ -105,7 +105,8 @@ contract ElasticDAO is ReentryProtection { uint256 ratioOfShares = ElasticMath.wdiv(_deltaLambda, token.lambda); uint256 ethToBeTransfered = ElasticMath.wmul(ratioOfShares, address(this).balance); // transfer the eth - msg.sender.transfer(ethToBeTransfered); + (bool success, ) = msg.sender.call{ value: ethToBeTransfered }(''); + require(success, 'ElasticDAO: Exit Failed'); emit ExitDAO(address(this), msg.sender, _deltaLambda, ethToBeTransfered); } @@ -139,7 +140,7 @@ contract ElasticDAO is ReentryProtection { } function join(uint256 _deltaLambda) - public + external payable onlyAfterSummoning onlyWhenOpen @@ -208,7 +209,7 @@ contract ElasticDAO is ReentryProtection { // Summoning function seedSummoning() - public + external payable onlyBeforeSummoning onlySummoners @@ -224,7 +225,7 @@ contract ElasticDAO is ReentryProtection { emit SeedDAO(address(this), msg.sender, deltaLambda); } - function summon(uint256 _deltaLambda) public onlyBeforeSummoning onlySummoners preventReentry { + function summon(uint256 _deltaLambda) external onlyBeforeSummoning onlySummoners preventReentry { require(address(this).balance > 0, 'ElasticDAO: Please seed DAO with ETH to set ETH:EGT ratio'); Ecosystem.Instance memory ecosystem = _getEcosystem(); @@ -234,6 +235,7 @@ contract ElasticDAO is ReentryProtection { Token(ecosystem.tokenModelAddress).deserialize(ecosystem.governanceTokenAddress, ecosystem); ElasticGovernanceToken tokenContract = ElasticGovernanceToken(token.uuid); + // number of summoners can not grow unboundly. it is fixed limit. for (uint256 i = 0; i < dao.numberOfSummoners; i = SafeMath.add(i, 1)) { tokenContract.mintShares(daoContract.getSummoner(dao, i), _deltaLambda); } @@ -245,11 +247,11 @@ contract ElasticDAO is ReentryProtection { // Getters - function getDAO() public view returns (DAO.Instance memory) { + function getDAO() external view returns (DAO.Instance memory) { return _getDAO(); } - function getEcosystem() public view returns (Ecosystem.Instance memory) { + function getEcosystem() external view returns (Ecosystem.Instance memory) { return _getEcosystem(); } diff --git a/src/core/ElasticDAOFactory.sol b/src/core/ElasticDAOFactory.sol index 28db78c..c693c5d 100644 --- a/src/core/ElasticDAOFactory.sol +++ b/src/core/ElasticDAOFactory.sol @@ -43,7 +43,7 @@ contract ElasticDAOFactory is ReentryProtection { uint256 _elasticity, uint256 _k, uint256 _maxLambdaPurchase - ) public payable preventReentry { + ) external payable preventReentry { // create the DAO ElasticDAO elasticDAO = new ElasticDAO(ecosystemModelAddress, msg.sender, _summoners, _nameOfDAO, _numberOfSummoners); @@ -64,7 +64,8 @@ contract ElasticDAOFactory is ReentryProtection { function collectFees() external preventReentry { uint256 amount = address(this).balance; - feeAddress.transfer(amount); + (bool success, ) = feeAddress.call{ value: amount }(''); + require(success, 'ElasticDAO: TransactionFailed'); emit FeesCollected(address(feeAddress), amount); } diff --git a/src/models/DAO.sol b/src/models/DAO.sol index 8a08976..25843c7 100644 --- a/src/models/DAO.sol +++ b/src/models/DAO.sol @@ -80,6 +80,7 @@ contract DAO is EternalModel, ReentryProtection { setBool(keccak256(abi.encode(record.uuid, 'summoned')), record.summoned); if (record.summoners.length == record.numberOfSummoners) { + // not an unbound number of summoners. fixed limit. for (uint256 i = 0; i < record.numberOfSummoners; i = SafeMath.add(i, 1)) { setBool(keccak256(abi.encode(record.uuid, 'summoner', record.summoners[i])), true); setAddress(keccak256(abi.encode(record.uuid, 'summoners', i)), record.summoners[i]); diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index 37fb31a..03f552d 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -310,15 +310,12 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { ) external override preventReentry returns (bool) { require(msg.sender == _from || _amount <= _allowances[_from][msg.sender], 'ERC20: Bad Caller'); - _transfer(_from, _to, _amount); if (msg.sender != _from && _allowances[_from][msg.sender] != uint256(-1)) { _allowances[_from][msg.sender] = SafeMath.sub(_allowances[_from][msg.sender], _amount); - + _transfer(_from, _to, _amount); emit Approval(msg.sender, _to, _allowances[_from][msg.sender]); } - - return true; } // Private @@ -357,6 +354,7 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { TokenHolder tokenHolderStorage = TokenHolder(ecosystem.tokenHolderModelAddress); tokenHolderStorage.serialize(tokenHolder); _updateNumberOfTokenHolders(alreadyTokenHolder, token, tokenHolder, tokenStorage); + emit Transfer(_account, address(0), _deltaLambda); } function _mint(address _account, uint256 _deltaT) internal { From 48c684eb58279c7be72ea9044b1bdd192e19e3cf Mon Sep 17 00:00:00 2001 From: alleycatdev Date: Tue, 9 Feb 2021 11:02:07 -0500 Subject: [PATCH 029/118] change based on slither suggestion https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-strict-equalities --- src/core/ElasticDAO.sol | 4 +++- src/tokens/ElasticGovernanceToken.sol | 1 - test/elasticDAOTests.js | 14 ++++++++++++++ test/exitDaoTest.js | 18 ------------------ 4 files changed, 17 insertions(+), 20 deletions(-) delete mode 100644 test/exitDaoTest.js diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index a75af9e..37a60b6 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -173,7 +173,9 @@ contract ElasticDAO is ReentryProtection { token.m ); - require(deltaE == msg.value, 'ElasticDAO: Incorrect ETH amount'); + if(deltaE != msg.value) { + revert('ElasticDAO: Incorrect ETH amount'); + } // mdash uint256 lambdaDash = SafeMath.add(_deltaLambda, token.lambda); diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index 03f552d..f05a704 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -310,7 +310,6 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { ) external override preventReentry returns (bool) { require(msg.sender == _from || _amount <= _allowances[_from][msg.sender], 'ERC20: Bad Caller'); - if (msg.sender != _from && _allowances[_from][msg.sender] != uint256(-1)) { _allowances[_from][msg.sender] = SafeMath.sub(_allowances[_from][msg.sender], _amount); _transfer(_from, _to, _amount); diff --git a/test/elasticDAOTests.js b/test/elasticDAOTests.js index a741a11..af99138 100644 --- a/test/elasticDAOTests.js +++ b/test/elasticDAOTests.js @@ -254,4 +254,18 @@ describe('ElasticDAO: Core', () => { expect(recordDoesntExist).to.equal(false); expect(recordExists).to.equal(true); }); + + it('Should allow to exit with 1 share and corresponding eth', async () => { + dao = await summonedDAO(); + const { summoner1 } = await signers(); + + const postSummonBalanceOf = await dao.elasticGovernanceToken.balanceOf(summoner1.address); + + expect(postSummonBalanceOf.toNumber()).to.equal(1010); + + await dao.elasticDAO.exit(1); + + const atExitBalanceRecord = await dao.elasticGovernanceToken.balanceOf(summoner1.address); + expect(atExitBalanceRecord.toNumber()).to.equal(910); + }); }); diff --git a/test/exitDaoTest.js b/test/exitDaoTest.js deleted file mode 100644 index 9381134..0000000 --- a/test/exitDaoTest.js +++ /dev/null @@ -1,18 +0,0 @@ -const { expect } = require('chai'); -const { signers, summonedDAO } = require('./helpers'); - -describe('ElasticDAO: Exit', () => { - it('Should allow to exit with 1 share and corresponding eth', async () => { - const dao = await summonedDAO(); - const { summoner1 } = await signers(); - - const postSummonBalanceOf = await dao.elasticGovernanceToken.balanceOf(summoner1.address); - - expect(postSummonBalanceOf.toNumber()).to.equal(1010); - - await dao.elasticDAO.exit(1); - - const atExitBalanceRecord = await dao.elasticGovernanceToken.balanceOf(summoner1.address); - expect(atExitBalanceRecord.toNumber()).to.equal(910); - }); -}); From b6f874ba834a792f0375fd4f7390de2b9a09415f Mon Sep 17 00:00:00 2001 From: alleycatdev Date: Tue, 9 Feb 2021 16:10:23 -0500 Subject: [PATCH 030/118] code cleanup suggested by slither --- ..inheritance-graph.dot | 43 +++++++++++++++++++++++++++ src/core/ElasticDAO.sol | 14 +++++++-- src/core/ElasticDAOFactory.sol | 10 +++++-- src/libraries/ElasticMath.sol | 4 +-- src/services/Configurator.sol | 9 ++++-- src/services/ReentryProtection.sol | 6 ++-- src/tokens/ElasticGovernanceToken.sol | 7 +++++ 7 files changed, 79 insertions(+), 14 deletions(-) create mode 100644 ..inheritance-graph.dot diff --git a/..inheritance-graph.dot b/..inheritance-graph.dot new file mode 100644 index 0000000..df43940 --- /dev/null +++ b/..inheritance-graph.dot @@ -0,0 +1,43 @@ +digraph "" { +ElasticDAO -> ReentryProtection; +ElasticDAO[shape="box"label=<
ElasticDAO
Public Functions:
exit(uint256)
initializeToken(string,string,uint256,uint256,uint256,uint256)
join(uint256)
setController(address)
setMaxVotingLambda(uint256)
seedSummoning()
summon(uint256)
getDAO()
getEcosystem()
receive()
fallback()
Private Functions:
_getDAO()
_getEcosystem()
_getToken()
Modifiers:
onlyAfterSummoning()
onlyAfterTokenInitialized()
onlyBeforeSummoning()
onlyController()
onlyDeployer()
onlySummoners()
onlyWhenOpen()
Public Variables:
deployer
ecosystemModelAddress
controller
summoners
maxVotingLambda
>]; + +ElasticDAOFactory -> ReentryProtection; +ElasticDAOFactory[shape="box"label=<
ElasticDAOFactory
Public Functions:
deployDAOAndToken(address[],string,uint256,string,string,uint256,uint256,uint256,uint256)
updateFeeAddress(address)
collectFees()
receive()
fallback()
Modifiers:
onlyDeployer()
Public Variables:
deployer
ecosystemModelAddress
deployedDAOAddresses
deployedDAOCount
Private Variables:
feeAddress
>]; + +IERC20[shape="box"label=<
IERC20
Public Functions:
allowance(address,address)
approve(address,uint256)
balanceOf(address)
totalSupply()
transfer(address,uint256)
transferFrom(address,address,uint256)
>]; + +IElasticToken -> IERC20; +IElasticToken[shape="box"label=<
IElasticToken
Public Functions:
balanceOfInShares(address)
burn(address,uint256)
burnShares(address,uint256)
mintShares(address,uint256)
numberOfTokenHolders()
totalSupplyInShares()
>]; + +ElasticMath[shape="box"label=<
ElasticMath
Private Functions:
capitalDelta(uint256,uint256)
deltaE(uint256,uint256,uint256,uint256,uint256,uint256)
lambdaFromT(uint256,uint256,uint256)
mDash(uint256,uint256,uint256)
revamp(uint256)
t(uint256,uint256,uint256)
wmul(uint256,uint256)
wdiv(uint256,uint256)
>]; + +SafeMath[shape="box"label=<
SafeMath
Private Functions:
add(uint256,uint256)
sub(uint256,uint256)
sub(uint256,uint256,string)
mul(uint256,uint256)
pow(uint256,uint256)
>]; + +DAO -> EternalModel [ label="1" ]; +DAO -> ReentryProtection [ label="2" ]; +DAO[shape="box"label=<
DAO
Public Functions:
deserialize(address,Ecosystem.Instance)
exists(address,Ecosystem.Instance)
getSummoner(DAO.Instance,uint256)
isSummoner(DAO.Instance,address)
serialize(DAO.Instance)
Private Functions:
_exists(address)
>]; + +Ecosystem -> EternalModel [ label="1" ]; +Ecosystem -> ReentryProtection [ label="2" ]; +Ecosystem[shape="box"label=<
Ecosystem
Public Functions:
deserialize(address)
exists(address)
serialize(Ecosystem.Instance)
Private Functions:
_exists(address)
>]; + +EternalModel[shape="box"label=<
EternalModel
Private Functions:
getUint(bytes32)
getString(bytes32)
getAddress(bytes32)
getBool(bytes32)
setUint(bytes32,uint256)
setString(bytes32,string)
setAddress(bytes32,address)
setBool(bytes32,bool)
Private Variables:
s
>]; + +Token -> EternalModel [ label="1" ]; +Token -> ReentryProtection [ label="2" ]; +Token[shape="box"label=<
Token
Public Functions:
deserialize(address,Ecosystem.Instance)
exists(address,Ecosystem.Instance)
incrementCounter(Token.Instance)
serialize(Token.Instance)
updateNumberOfTokenHolders(Token.Instance,uint256)
Private Functions:
_exists(address)
>]; + +TokenHolder -> EternalModel [ label="1" ]; +TokenHolder -> ReentryProtection [ label="2" ]; +TokenHolder[shape="box"label=<
TokenHolder
Public Functions:
deserialize(address,Ecosystem.Instance,Token.Instance)
exists(address,Token.Instance)
serialize(TokenHolder.Instance)
Private Functions:
_exists(address,Token.Instance)
>]; + +Configurator[shape="box"label=<
Configurator
Public Functions:
buildDAO(address[],string,uint256,Ecosystem.Instance)
buildEcosystem(Ecosystem.Instance)
buildToken(string,string,uint256,uint256,uint256,uint256,Ecosystem.Instance)
>]; + +ReentryProtection[shape="box"label=<
ReentryProtection
Modifiers:
preventReentry()
Private Variables:
mutex
>]; + +ElasticGovernanceToken -> IElasticToken [ label="1" ]; +ElasticGovernanceToken -> ReentryProtection [ label="2" ]; +ElasticGovernanceToken[shape="box"label=<
ElasticGovernanceToken
Public Functions:
allowance(address,address)
approve(address,uint256)
balanceOf(address)
balanceOfInShares(address)
balanceOfVoting(address)
burn(address,uint256)
burnShares(address,uint256)
decimals()
decreaseAllowance(address,uint256)
increaseAllowance(address,uint256)
mint(address,uint256)
mintShares(address,uint256)
name()
numberOfTokenHolders()
setBurner(address)
setMinter(address)
symbol()
totalSupply()
totalSupplyInShares()
transfer(address,uint256)
transferFrom(address,address,uint256)
Private Functions:
_approve(address,address,uint256)
_burn(address,uint256)
_burnShares(address,uint256)
_mint(address,uint256)
_mintShares(address,uint256)
_transfer(address,address,uint256)
_updateBalance(Token.Instance,TokenHolder.Instance,bool,uint256)
_updateNumberOfTokenHolders(bool,Token.Instance,TokenHolder.Instance,Token)
_getEcosystem()
_getTokenHolder(address)
_getToken()
Modifiers:
onlyDAO()
onlyDAOorBurner()
onlyDAOorMinter()
Public Variables:
burner
daoAddress
ecosystemModelAddress
minter
Private Variables:
_allowances
>]; + +} \ No newline at end of file diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index 37a60b6..8fe873b 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -83,6 +83,11 @@ contract ElasticDAO is ReentryProtection { string memory _name, uint256 _numberOfSummoners ) { + require( + _ecosystemModelAddress != address(0) || _controller != address(0), + 'ElasticDAO: Address Zero' + ); + ecosystemModelAddress = _ecosystemModelAddress; controller = _controller; deployer = msg.sender; @@ -92,19 +97,20 @@ contract ElasticDAO is ReentryProtection { Configurator configurator = Configurator(defaults.configuratorAddress); Ecosystem.Instance memory ecosystem = configurator.buildEcosystem(defaults); - configurator.buildDAO(_summoners, _name, _numberOfSummoners, ecosystem); + bool success = configurator.buildDAO(_summoners, _name, _numberOfSummoners, ecosystem); + require(success, 'ElasticDAO: Build DAO Failed'); } function exit(uint256 _deltaLambda) external onlyAfterSummoning preventReentry { // burn the shares Token.Instance memory token = _getToken(); ElasticGovernanceToken tokenContract = ElasticGovernanceToken(token.uuid); - tokenContract.burnShares(msg.sender, _deltaLambda); // eth to be transfered = ( deltaLambda/lambda ) * totalEthInTheDAO uint256 ratioOfShares = ElasticMath.wdiv(_deltaLambda, token.lambda); uint256 ethToBeTransfered = ElasticMath.wmul(ratioOfShares, address(this).balance); // transfer the eth + tokenContract.burnShares(msg.sender, _deltaLambda); (bool success, ) = msg.sender.call{ value: ethToBeTransfered }(''); require(success, 'ElasticDAO: Exit Failed'); emit ExitDAO(address(this), msg.sender, _deltaLambda, ethToBeTransfered); @@ -173,7 +179,7 @@ contract ElasticDAO is ReentryProtection { token.m ); - if(deltaE != msg.value) { + if (deltaE != msg.value) { revert('ElasticDAO: Incorrect ETH amount'); } @@ -194,6 +200,8 @@ contract ElasticDAO is ReentryProtection { } function setController(address _controller) external onlyController preventReentry { + require(_controller != address(0), 'ElasticDAO: Address Zero'); + controller = _controller; ElasticGovernanceToken tokenContract = ElasticGovernanceToken(_getToken().uuid); tokenContract.setBurner(controller); diff --git a/src/core/ElasticDAOFactory.sol b/src/core/ElasticDAOFactory.sol index c693c5d..ab27ac7 100644 --- a/src/core/ElasticDAOFactory.sol +++ b/src/core/ElasticDAOFactory.sol @@ -25,6 +25,8 @@ contract ElasticDAOFactory is ReentryProtection { } constructor(address _ecosystemModelAddress) { + require(_ecosystemModelAddress != address(0), 'ElasticDAO: Address Zero'); + deployer = msg.sender; ecosystemModelAddress = _ecosystemModelAddress; } @@ -48,15 +50,17 @@ contract ElasticDAOFactory is ReentryProtection { ElasticDAO elasticDAO = new ElasticDAO(ecosystemModelAddress, msg.sender, _summoners, _nameOfDAO, _numberOfSummoners); - // initialize the token - elasticDAO.initializeToken(_nameOfToken, _symbol, _eByL, _elasticity, _k, _maxLambdaPurchase); - deployedDAOAddresses.push(address(elasticDAO)); deployedDAOCount = SafeMath.add(deployedDAOCount, 1); + + // initialize the token + elasticDAO.initializeToken(_nameOfToken, _symbol, _eByL, _elasticity, _k, _maxLambdaPurchase); emit DeployedDAO(address(elasticDAO)); } function updateFeeAddress(address _feeReceiver) external onlyDeployer preventReentry { + require(_feeReceiver != address(0), 'ElasticDAO: Address Zero'); + feeAddress = payable(_feeReceiver); emit FeeAddressUpdated(_feeReceiver); } diff --git a/src/libraries/ElasticMath.sol b/src/libraries/ElasticMath.sol index f5ae806..061e6f1 100644 --- a/src/libraries/ElasticMath.sol +++ b/src/libraries/ElasticMath.sol @@ -67,11 +67,11 @@ library ElasticMath { } function lambdaFromT( - uint256 t, + uint256 tokens, uint256 k, uint256 m ) internal pure returns (uint256 lambda) { - return wdiv(t, wmul(k, m)); + return wdiv(tokens, wmul(k, m)); } /** diff --git a/src/services/Configurator.sol b/src/services/Configurator.sol index 8ce5e50..d1c98a5 100644 --- a/src/services/Configurator.sol +++ b/src/services/Configurator.sol @@ -18,7 +18,7 @@ contract Configurator { * @param _name - the name of the DAO * @param _numberOfSummoners - the number of summoners * @param _ecosystem - an instance of Ecosystem - * @return dao DAO.Instance + * @return bool true */ function buildDAO( @@ -26,8 +26,10 @@ contract Configurator { string memory _name, uint256 _numberOfSummoners, Ecosystem.Instance memory _ecosystem - ) external returns (DAO.Instance memory dao) { + ) external returns (bool) { DAO daoStorage = DAO(_ecosystem.daoModelAddress); + DAO.Instance memory dao; + dao.uuid = msg.sender; dao.ecosystem = _ecosystem; dao.name = _name; @@ -35,7 +37,8 @@ contract Configurator { dao.summoned = false; dao.summoners = _summoners; daoStorage.serialize(dao); - return dao; + + return true; } /** diff --git a/src/services/ReentryProtection.sol b/src/services/ReentryProtection.sol index 7f8623b..5dfb09f 100644 --- a/src/services/ReentryProtection.sol +++ b/src/services/ReentryProtection.sol @@ -8,7 +8,7 @@ pragma solidity 0.7.2; /// @dev ElasticDAO network contracts can read/write from this contract contract ReentryProtection { // The reentry protection state mutex - bool mutex = false; + bool internal mutex = false; // This modifier can be used on functions with external calls to // prevent reentry attacks. @@ -18,9 +18,9 @@ contract ReentryProtection { // Protected functions return values must be through return parameters. modifier preventReentry() { require(!mutex, 'ElasticDAO: Reentry Detected'); + mutex = true; _; - delete mutex; - return; + mutex = false; } } diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index f05a704..42cf8af 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -42,6 +42,9 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { } constructor(address _daoAddress, address _ecosystemModelAddress) IERC20() { + require(_daoAddress != address(0), 'ElasticDAO: Address Zero'); + require(_ecosystemModelAddress != address(0), 'ElasticDAO: Address Zero'); + burner = _daoAddress; daoAddress = _daoAddress; ecosystemModelAddress = _ecosystemModelAddress; @@ -245,10 +248,14 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { } function setBurner(address _burner) external onlyDAO preventReentry { + require(_burner != address(0), 'ElasticDAO: Address Zero'); + burner = _burner; } function setMinter(address _minter) external onlyDAO preventReentry { + require(_minter != address(0), 'ElasticDAO: Address Zero'); + minter = _minter; } From 0f0f33dfcf4bc4485329d95d741bfb5199e2b1fb Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Tue, 9 Feb 2021 13:31:01 +0200 Subject: [PATCH 031/118] adds testnet deployment config --- .gitignore | 34 ++++++++++++++++++---------------- hardhat.config.js | 8 ++++++++ testAccounts.json | 1 + 3 files changed, 27 insertions(+), 16 deletions(-) create mode 100644 testAccounts.json diff --git a/.gitignore b/.gitignore index 753daae..eaf3666 100644 --- a/.gitignore +++ b/.gitignore @@ -1,16 +1,18 @@ -./node_modules -node_modules -.env -yarn-error.log -artifacts/**/*.json - -#Buidler files -cache -deployments -bin - -#coverage -coverage -.coverage_cache -.coverage_contracts -.coverage_artifacts \ No newline at end of file +./node_modules +node_modules +.env +yarn-error.log +artifacts/**/*.json + +#Buidler files +cache +deployments +bin + +#coverage +coverage +.coverage_cache +.coverage_contracts +.coverage_artifacts + +miner*.json \ No newline at end of file diff --git a/hardhat.config.js b/hardhat.config.js index 44cd782..987a9d4 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -49,6 +49,14 @@ module.exports = { coverage: { url: 'http://127.0.0.1:8555', }, + edaoTestnet: { + url: 'https://node.edao.app', + chainId: 420, + accounts: { + mnemonic: process.env.TESTNET_SEED, + count: 10, + }, + }, }, gasReporter: { src: 'src', diff --git a/testAccounts.json b/testAccounts.json new file mode 100644 index 0000000..f63b4b5 --- /dev/null +++ b/testAccounts.json @@ -0,0 +1 @@ +{"address":"c0ceb9d5a7238123b4f3637ccdddd0eee4b343fc","crypto":{"cipher":"aes-128-ctr","ciphertext":"848123d74af89520911a61569a79a28cbb112547f94c73000228f6cbe2280856","cipherparams":{"iv":"97d8ddabd075ec9e3f09ca420ebb99e0"},"kdf":"scrypt","kdfparams":{"dklen":32,"n":262144,"p":1,"r":8,"salt":"e3d0c5d61a6b143af7c4d602f661597efa62d929f1b35eccd755b4ba4a8b8ed7"},"mac":"27f69041e2c3ce6f3546f5d4360a0450598db021d1e6c991eec235bbd7df68d1"},"id":"691b4586-77b1-47b9-8788-d2cb1bacb231","version":3} \ No newline at end of file From 6562085b2ed0de9474d27befe318891ea014f890 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Wed, 10 Feb 2021 12:19:14 +0200 Subject: [PATCH 032/118] fix testnet seed error --- hardhat.config.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hardhat.config.js b/hardhat.config.js index 987a9d4..46c9f71 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -10,6 +10,8 @@ require('hardhat-contract-sizer'); require('solidity-coverage'); const ETHERSCAN_API_KEY = process.env.ETHERSCAN || ''; +const TESTNET_SEED = process.env.TESTNET_SEED || ''; + // Tasks task('seed', 'Seed account with Buidler ETH') @@ -53,7 +55,7 @@ module.exports = { url: 'https://node.edao.app', chainId: 420, accounts: { - mnemonic: process.env.TESTNET_SEED, + mnemonic: TESTNET_SEED, count: 10, }, }, From 2cf2c57be03b48713c1b7977b958c0349090f6e4 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Wed, 10 Feb 2021 13:18:03 +0200 Subject: [PATCH 033/118] removes counter from token and tokenHolder --- hardhat.config.js | 1 - src/libraries/ElasticMath.sol | 35 +++++++-------------------- src/models/Token.sol | 9 ------- src/models/TokenHolder.sol | 4 --- src/tokens/ElasticGovernanceToken.sol | 18 ++++---------- 5 files changed, 14 insertions(+), 53 deletions(-) diff --git a/hardhat.config.js b/hardhat.config.js index 46c9f71..5e6990d 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -12,7 +12,6 @@ require('solidity-coverage'); const ETHERSCAN_API_KEY = process.env.ETHERSCAN || ''; const TESTNET_SEED = process.env.TESTNET_SEED || ''; - // Tasks task('seed', 'Seed account with Buidler ETH') .addParam('account', "The account's address") diff --git a/src/libraries/ElasticMath.sol b/src/libraries/ElasticMath.sol index 061e6f1..a01f5e3 100644 --- a/src/libraries/ElasticMath.sol +++ b/src/libraries/ElasticMath.sol @@ -36,34 +36,17 @@ library ElasticMath { uint256 elasticity, uint256 lambda, uint256 m - ) internal view returns (uint256 deltaEValue) { + ) internal pure returns (uint256 deltaEValue) { uint256 lambdaDash = SafeMath.add(deltaLambda, lambda); - uint256 a = wmul(capitalDeltaValue, k); - // console.log('contract: a:', a); - - uint256 b = revamp(elasticity); - // console.log('contract: b: ', b); - - uint256 c = wmul(lambda, m); - // console.log('contract: c: ', c); - - uint256 d = mDash(lambdaDash, lambda, m); - // console.log('contract: d: ', d); - - uint256 e = wmul(d, b); - // console.log('contract: e: ', e); - - uint256 f = wmul(lambdaDash, e); - // console.log('contract: f: ', f); - - uint256 g = SafeMath.sub(f, c); - // console.log('contract: g: ', g); - - deltaEValue = wmul(a, g); - // console.log('contract: deltaEValue: ', deltaEValue); - - return deltaEValue; + return + wmul( + wmul(capitalDeltaValue, k), + SafeMath.sub( + wmul(lambdaDash, wmul(mDash(lambdaDash, lambda, m), revamp(elasticity))), + wmul(lambda, m) + ) + ); } function lambdaFromT( diff --git a/src/models/Token.sol b/src/models/Token.sol index 5491e2e..96acb04 100644 --- a/src/models/Token.sol +++ b/src/models/Token.sol @@ -18,7 +18,6 @@ contract Token is EternalModel, ReentryProtection { address uuid; string name; string symbol; - uint256 counter; // passed as ID to balance multipliers uint256 eByL; uint256 elasticity; uint256 k; @@ -43,7 +42,6 @@ contract Token is EternalModel, ReentryProtection { record.ecosystem = _ecosystem; if (_exists(_uuid)) { - record.counter = getUint(keccak256(abi.encode(_uuid, 'counter'))); record.eByL = getUint(keccak256(abi.encode(_uuid, 'eByL'))); record.elasticity = getUint(keccak256(abi.encode(_uuid, 'elasticity'))); record.k = getUint(keccak256(abi.encode(_uuid, 'k'))); @@ -62,13 +60,6 @@ contract Token is EternalModel, ReentryProtection { return _exists(_uuid); } - function incrementCounter(Instance memory record) external { - require(msg.sender == record.uuid, 'ElasticDAO: Unauthorized'); - - uint256 counter = getUint(keccak256(abi.encode(record.uuid, 'counter'))); - setUint(keccak256(abi.encode(record.uuid, 'counter')), SafeMath.add(counter, 1)); - } - /** * @dev serializes Instance struct * @param record Instance diff --git a/src/models/TokenHolder.sol b/src/models/TokenHolder.sol index 9b6f1bf..c4f009c 100644 --- a/src/models/TokenHolder.sol +++ b/src/models/TokenHolder.sol @@ -16,7 +16,6 @@ import '../services/ReentryProtection.sol'; contract TokenHolder is EternalModel, ReentryProtection { struct Instance { address account; - uint256 counter; uint256 lambda; Ecosystem.Instance ecosystem; Token.Instance token; @@ -32,7 +31,6 @@ contract TokenHolder is EternalModel, ReentryProtection { record.token = _token; if (_exists(_account, _token)) { - record.counter = getUint(keccak256(abi.encode(record.token.uuid, record.account, 'counter'))); record.lambda = getUint(keccak256(abi.encode(record.token.uuid, record.account, 'lambda'))); } @@ -50,9 +48,7 @@ contract TokenHolder is EternalModel, ReentryProtection { function serialize(Instance memory record) external preventReentry { require(msg.sender == record.token.uuid, 'ElasticDAO: Unauthorized'); - setUint(keccak256(abi.encode(record.token.uuid, record.account, 'counter')), record.counter); setUint(keccak256(abi.encode(record.token.uuid, record.account, 'lambda')), record.lambda); - setBool(keccak256(abi.encode(record.token.uuid, record.account, 'exists')), true); } diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index 42cf8af..bdfe6a9 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -352,7 +352,7 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { TokenHolder.Instance memory tokenHolder = _getTokenHolder(_account); bool alreadyTokenHolder = tokenHolder.lambda > 0; - tokenHolder = _updateBalance(token, tokenHolder, false, _deltaLambda); + tokenHolder = _updateBalance(tokenHolder, false, _deltaLambda); token.lambda = SafeMath.sub(token.lambda, _deltaLambda); tokenStorage.serialize(token); @@ -378,7 +378,7 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { uint256 deltaT = ElasticMath.t(_deltaLambda, token.k, token.m); - tokenHolder = _updateBalance(token, tokenHolder, true, _deltaLambda); + tokenHolder = _updateBalance(tokenHolder, true, _deltaLambda); token.lambda = SafeMath.add(token.lambda, _deltaLambda); tokenStorage.serialize(token); @@ -407,8 +407,8 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { uint256 deltaLambda = ElasticMath.lambdaFromT(_deltaT, token.k, token.m); uint256 deltaT = ElasticMath.t(deltaLambda, token.k, token.m); - fromTokenHolder = _updateBalance(token, fromTokenHolder, false, deltaLambda); - toTokenHolder = _updateBalance(token, toTokenHolder, true, deltaLambda); + fromTokenHolder = _updateBalance(fromTokenHolder, false, deltaLambda); + toTokenHolder = _updateBalance(toTokenHolder, true, deltaLambda); TokenHolder tokenHolderStorage = TokenHolder(ecosystem.tokenHolderModelAddress); tokenHolderStorage.serialize(fromTokenHolder); @@ -420,24 +420,16 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { } function _updateBalance( - Token.Instance memory _token, TokenHolder.Instance memory _tokenHolder, bool _isIncreasing, uint256 _deltaLambda - ) internal returns (TokenHolder.Instance memory) { - Ecosystem.Instance memory ecosystem = _getEcosystem(); - - _token.counter = SafeMath.add(_token.counter, 1); - _tokenHolder.counter = SafeMath.add(_tokenHolder.counter, 1); - + ) internal pure returns (TokenHolder.Instance memory) { if (_isIncreasing) { _tokenHolder.lambda = SafeMath.add(_tokenHolder.lambda, _deltaLambda); } else { _tokenHolder.lambda = SafeMath.sub(_tokenHolder.lambda, _deltaLambda); } - Token(ecosystem.tokenModelAddress).incrementCounter(_token); - return _tokenHolder; } From 9cbc9fd18d0933f06b116461582eedc90187bb44 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Wed, 10 Feb 2021 13:52:18 +0200 Subject: [PATCH 034/118] speed up core tests --- test/elasticDAOTests.js | 434 ++++++++++++++++++++-------------------- 1 file changed, 219 insertions(+), 215 deletions(-) diff --git a/test/elasticDAOTests.js b/test/elasticDAOTests.js index af99138..9d6b294 100644 --- a/test/elasticDAOTests.js +++ b/test/elasticDAOTests.js @@ -7,265 +7,269 @@ const { ethBalance, SDK, signers, summoners, summonedDAO } = require('./helpers' describe('ElasticDAO: Core', () => { let dao; - beforeEach(async () => { - const sdk = await SDK(); - const { summoner1 } = await signers(); - const args = [ - sdk.env.elasticDAO.ecosystemModelAddress, - summoner1.address, - await summoners(), - 'ElasticDAO', - 3, - ]; - - const ElasticDAO = await hre.getContractFactory('ElasticDAO'); - const elasticDAO = await ElasticDAO.deploy(...args); - - dao = await sdk.models.DAO.deserialize(elasticDAO.address); - }); - - it('Should allow a token to be initialized', async () => { - await dao.elasticDAO.contract.initializeToken( - 'Elastic Governance Token', - 'EGT', - dao.toEthersBigNumber(0.1, 18), - dao.toEthersBigNumber(0.02, 18), - dao.toEthersBigNumber(100, 18), - ethers.constants.WeiPerEther, - ); - - await dao.ecosystem.refresh(); - - expect(dao.ecosystem.governanceTokenAddress).to.not.equal(ethers.constants.AddressZero); - }); - - it('Should not allow a token to be initialized if not the deployer', async () => { - const { summoner1 } = await signers(); - dao.sdk.changeSigner(summoner1); - - await expect( - dao.elasticDAO.contract.initializeToken( + describe('before summoning', () => { + beforeEach(async () => { + const sdk = await SDK(); + const { summoner1 } = await signers(); + const args = [ + sdk.env.elasticDAO.ecosystemModelAddress, + summoner1.address, + await summoners(), + 'ElasticDAO', + 3, + ]; + + const ElasticDAO = await hre.getContractFactory('ElasticDAO'); + const elasticDAO = await ElasticDAO.deploy(...args); + + dao = await sdk.models.DAO.deserialize(elasticDAO.address); + }); + + it('Should allow a token to be initialized', async () => { + await dao.elasticDAO.contract.initializeToken( 'Elastic Governance Token', 'EGT', dao.toEthersBigNumber(0.1, 18), dao.toEthersBigNumber(0.02, 18), dao.toEthersBigNumber(100, 18), ethers.constants.WeiPerEther, - ), - ).to.be.revertedWith('ElasticDAO: Only deployer'); - }); - - it('Should not allow the DAO to be summoned before it has been seeded', async () => { - await dao.elasticDAO.contract.initializeToken( - 'Elastic Governance Token', - 'EGT', - dao.toEthersBigNumber(0.1, 18), - dao.toEthersBigNumber(0.02, 18), - dao.toEthersBigNumber(100, 18), - ethers.constants.WeiPerEther, - ); - - const { summoner1 } = await signers(); - dao.sdk.changeSigner(summoner1); - const token = await dao.token(); - - await expect( - dao.elasticDAO.contract.summon(dao.toEthersBigNumber(token.maxLambdaPurchase, 18)), - ).to.be.revertedWith('ElasticDAO: Please seed DAO with ETH to set ETH:EGT ratio'); - }); - - it('Should allow summoners to seed', async () => { - await dao.elasticDAO.contract.initializeToken( - 'Elastic Governance Token', - 'EGT', - dao.toEthersBigNumber(0.1, 18), - dao.toEthersBigNumber(0.02, 18), - dao.toEthersBigNumber(100, 18), - ethers.constants.WeiPerEther, // lambda - ); - - const { summoner1 } = await signers(); - dao.sdk.changeSigner(summoner1); - dao = await dao.refresh(); - await dao.elasticDAO.seedSummoning({ value: 1 }); - const balance = await ethBalance(dao.uuid); - expect(balance.toNumber()).to.equal(1); - /// signers token balance is correct - - const summoner1Balance = await dao.elasticGovernanceToken.balanceOf(summoner1.address); - const summoner1Shares = await dao.elasticGovernanceToken.balanceOfInShares(summoner1.address); - expect(summoner1Balance.toNumber()).to.equal(1000); - expect(summoner1Shares.toNumber()).to.equal(10); - - /// get balance after a block - await hre.provider.send('evm_mine'); - const newBalance = await dao.elasticGovernanceToken.balanceOf(summoner1.address); - expect(newBalance.toNumber()).to.equal(1000); - }); - - it('Should not allow summoners to seed before token has been initialized', async () => { - const { summoner1 } = await signers(); - dao.sdk.changeSigner(summoner1); - - await expect( - dao.elasticDAO.contract.seedSummoning({ value: ethers.constants.WeiPerEther }), - ).to.be.revertedWith('ElasticDAO: Please call initializeToken first'); - }); - - it('Should not allow non summoners to seed', async () => { - await dao.elasticDAO.contract.initializeToken( - 'Elastic Governance Token', - 'EGT', - dao.toEthersBigNumber(0.1, 18), - dao.toEthersBigNumber(0.02, 18), - dao.toEthersBigNumber(100, 18), - ethers.constants.WeiPerEther, // lambda - ); - - await expect( - dao.elasticDAO.contract.seedSummoning({ value: ethers.constants.WeiPerEther }), - ).to.be.revertedWith('ElasticDAO: Only summoners'); - }); - - it('Should not allow the DAO to be summoned by a non-summoner', async () => { - await dao.elasticDAO.contract.initializeToken( - 'Elastic Governance Token', - 'EGT', - dao.toEthersBigNumber(0.1, 18), - dao.toEthersBigNumber(0.02, 18), - dao.toEthersBigNumber(100, 18), - ethers.constants.WeiPerEther, - ); - - const { agent, summoner1 } = await signers(); - dao.sdk.changeSigner(summoner1); + ); + + await dao.ecosystem.refresh(); + + expect(dao.ecosystem.governanceTokenAddress).to.not.equal(ethers.constants.AddressZero); + }); + + it('Should not allow a token to be initialized if not the deployer', async () => { + const { summoner1 } = await signers(); + dao.sdk.changeSigner(summoner1); + + await expect( + dao.elasticDAO.contract.initializeToken( + 'Elastic Governance Token', + 'EGT', + dao.toEthersBigNumber(0.1, 18), + dao.toEthersBigNumber(0.02, 18), + dao.toEthersBigNumber(100, 18), + ethers.constants.WeiPerEther, + ), + ).to.be.revertedWith('ElasticDAO: Only deployer'); + }); + + it('Should not allow the DAO to be summoned before it has been seeded', async () => { + await dao.elasticDAO.contract.initializeToken( + 'Elastic Governance Token', + 'EGT', + dao.toEthersBigNumber(0.1, 18), + dao.toEthersBigNumber(0.02, 18), + dao.toEthersBigNumber(100, 18), + ethers.constants.WeiPerEther, + ); - await dao.elasticDAO.seedSummoning({ value: 1 }); + const { summoner1 } = await signers(); + dao.sdk.changeSigner(summoner1); + const token = await dao.token(); - dao.sdk.changeSigner(agent); + await expect( + dao.elasticDAO.contract.summon(dao.toEthersBigNumber(token.maxLambdaPurchase, 18)), + ).to.be.revertedWith('ElasticDAO: Please seed DAO with ETH to set ETH:EGT ratio'); + }); - await expect(dao.elasticDAO.summon(1)).to.be.revertedWith('ElasticDAO: Only summoners'); - }); + it('Should allow summoners to seed', async () => { + await dao.elasticDAO.contract.initializeToken( + 'Elastic Governance Token', + 'EGT', + dao.toEthersBigNumber(0.1, 18), + dao.toEthersBigNumber(0.02, 18), + dao.toEthersBigNumber(100, 18), + ethers.constants.WeiPerEther, // lambda + ); + + const { summoner1 } = await signers(); + dao.sdk.changeSigner(summoner1); + dao = await dao.refresh(); + await dao.elasticDAO.seedSummoning({ value: 1 }); + const balance = await ethBalance(dao.uuid); + expect(balance.toNumber()).to.equal(1); + /// signers token balance is correct + + const summoner1Balance = await dao.elasticGovernanceToken.balanceOf(summoner1.address); + const summoner1Shares = await dao.elasticGovernanceToken.balanceOfInShares(summoner1.address); + expect(summoner1Balance.toNumber()).to.equal(1000); + expect(summoner1Shares.toNumber()).to.equal(10); + + /// get balance after a block + await hre.provider.send('evm_mine'); + const newBalance = await dao.elasticGovernanceToken.balanceOf(summoner1.address); + expect(newBalance.toNumber()).to.equal(1000); + }); + + it('Should not allow summoners to seed before token has been initialized', async () => { + const { summoner1 } = await signers(); + dao.sdk.changeSigner(summoner1); + + await expect( + dao.elasticDAO.contract.seedSummoning({ value: ethers.constants.WeiPerEther }), + ).to.be.revertedWith('ElasticDAO: Please call initializeToken first'); + }); + + it('Should not allow non summoners to seed', async () => { + await dao.elasticDAO.contract.initializeToken( + 'Elastic Governance Token', + 'EGT', + dao.toEthersBigNumber(0.1, 18), + dao.toEthersBigNumber(0.02, 18), + dao.toEthersBigNumber(100, 18), + ethers.constants.WeiPerEther, // lambda + ); - it('Should allow the DAO to be summoned after it has been seeded', async () => { - await dao.elasticDAO.contract.initializeToken( - 'Elastic Governance Token', - 'EGT', - dao.toEthersBigNumber(0.1, 18), - dao.toEthersBigNumber(0.02, 18), - dao.toEthersBigNumber(100, 18), - ethers.constants.WeiPerEther, - ); + await expect( + dao.elasticDAO.contract.seedSummoning({ value: ethers.constants.WeiPerEther }), + ).to.be.revertedWith('ElasticDAO: Only summoners'); + }); - const { summoner1, summoner2, summoner3 } = await signers(); - dao.sdk.changeSigner(summoner1); + it('Should not allow the DAO to be summoned by a non-summoner', async () => { + await dao.elasticDAO.contract.initializeToken( + 'Elastic Governance Token', + 'EGT', + dao.toEthersBigNumber(0.1, 18), + dao.toEthersBigNumber(0.02, 18), + dao.toEthersBigNumber(100, 18), + ethers.constants.WeiPerEther, + ); - await dao.elasticDAO.seedSummoning({ value: 1 }); - await dao.elasticDAO.summon(1); + const { agent, summoner1 } = await signers(); + dao.sdk.changeSigner(summoner1); - expect(dao.summoned).to.equal(true); + await dao.elasticDAO.seedSummoning({ value: 1 }); - const summoner1balance = await dao.elasticGovernanceToken.balanceOf(summoner1.address); - const summoner2balance = await dao.elasticGovernanceToken.balanceOf(summoner2.address); - const summoner3balance = await dao.elasticGovernanceToken.balanceOf(summoner3.address); + dao.sdk.changeSigner(agent); - expect(summoner1balance.toNumber()).to.equal(1100); - expect(summoner2balance.toNumber()).to.equal(100); - expect(summoner3balance.toNumber()).to.equal(100); - }); + await expect(dao.elasticDAO.summon(1)).to.be.revertedWith('ElasticDAO: Only summoners'); + }); - it('Should not allow a token to be initialized after summoning', async () => { - dao = await summonedDAO(); - await expect( - dao.elasticDAO.contract.initializeToken( + it('Should allow the DAO to be summoned after it has been seeded', async () => { + await dao.elasticDAO.contract.initializeToken( 'Elastic Governance Token', 'EGT', dao.toEthersBigNumber(0.1, 18), dao.toEthersBigNumber(0.02, 18), dao.toEthersBigNumber(100, 18), ethers.constants.WeiPerEther, - ), - ).to.be.revertedWith('ElasticDAO: DAO must not be summoned'); - }); + ); - it('Should not allow the caller to setController if not controller', async () => { - dao = await summonedDAO(); + const { summoner1, summoner2, summoner3 } = await signers(); + dao.sdk.changeSigner(summoner1); - const { summoner1 } = await signers(); - dao.sdk.changeSigner(summoner1); + await dao.elasticDAO.seedSummoning({ value: 1 }); + await dao.elasticDAO.summon(1); - await expect(dao.elasticDAO.contract.setController(summoner1.address)).to.be.revertedWith( - 'ElasticDAO: Only controller', - ); - }); + expect(dao.summoned).to.equal(true); - it('Should allow the controller to setController', async () => { - dao = await summonedDAO(); - const { summoner1, agent } = await signers(); - dao.sdk.changeSigner(agent); + const summoner1balance = await dao.elasticGovernanceToken.balanceOf(summoner1.address); + const summoner2balance = await dao.elasticGovernanceToken.balanceOf(summoner2.address); + const summoner3balance = await dao.elasticGovernanceToken.balanceOf(summoner3.address); - await dao.elasticDAO.contract.setController(summoner1.address); + expect(summoner1balance.toNumber()).to.equal(1100); + expect(summoner2balance.toNumber()).to.equal(100); + expect(summoner3balance.toNumber()).to.equal(100); + }); - const controller = await dao.elasticDAO.getController(); - expect(controller).to.equal(summoner1.address); - }); + it('Should getDAO', async () => { + const getDAO = await dao.elasticDAO.contract.getDAO(); - it('Should allow the controller to setMaxVotingLambda', async () => { - dao = await summonedDAO(); - const { agent } = await signers(); - dao.sdk.changeSigner(agent); + expect(getDAO.uuid.toLowerCase()).to.equal(dao.id); + }); - await dao.elasticDAO.contract.setMaxVotingLambda(dao.toEthersBigNumber(5, 18)); + it('Should getEcosystem', async () => { + const getEcosystem = await dao.elasticDAO.contract.getEcosystem(); - const maxVotingLambda = await dao.elasticDAO.getMaxVotingLambda(); - expect(maxVotingLambda).to.equal(dao.toEthersBigNumber(5, 18)); - }); + expect(getEcosystem.daoAddress.toLowerCase()).to.equal(dao.id); + }); - it('Should not allow the caller to setMaxVotingLambda if not controller', async () => { - dao = await summonedDAO(); - const { summoner1 } = await signers(); - dao.sdk.changeSigner(summoner1); + it('Should check to see if a instance record exists by daoAddress', async () => { + const { agent } = await signers(); + const DAOModel = await deployments.get('DAO_Implementation'); + const DAOModelStorage = new ethers.Contract(DAOModel.address, DAOModel.abi, agent); + const ecosystem = await dao.elasticDAO.contract.getEcosystem(); + const recordDoesntExist = await DAOModelStorage.exists( + ethers.constants.AddressZero, + ecosystem, + ); + const recordExists = await DAOModelStorage.exists(dao.uuid, ecosystem); - await expect( - dao.elasticDAO.contract.setMaxVotingLambda(dao.toEthersBigNumber(5, 18)), - ).to.be.revertedWith('ElasticDAO: Only controller'); + expect(recordDoesntExist).to.equal(false); + expect(recordExists).to.equal(true); + }); }); - it('Should getDAO', async () => { - const getDAO = await dao.elasticDAO.contract.getDAO(); + describe('after summoning', () => { + beforeEach(async () => { + dao = await summonedDAO(); + }); - expect(getDAO.uuid.toLowerCase()).to.equal(dao.id); - }); + it('Should not allow a token to be initialized after summoning', async () => { + await expect( + dao.elasticDAO.contract.initializeToken( + 'Elastic Governance Token', + 'EGT', + dao.toEthersBigNumber(0.1, 18), + dao.toEthersBigNumber(0.02, 18), + dao.toEthersBigNumber(100, 18), + ethers.constants.WeiPerEther, + ), + ).to.be.revertedWith('ElasticDAO: DAO must not be summoned'); + }); - it('Should getEcosystem', async () => { - const getEcosystem = await dao.elasticDAO.contract.getEcosystem(); + it('Should not allow the caller to setController if not controller', async () => { + const { summoner1 } = await signers(); + dao.sdk.changeSigner(summoner1); - expect(getEcosystem.daoAddress.toLowerCase()).to.equal(dao.id); - }); + await expect(dao.elasticDAO.contract.setController(summoner1.address)).to.be.revertedWith( + 'ElasticDAO: Only controller', + ); + }); - it('Should check to see if a instance record exists by daoAddress', async () => { - const { agent } = await signers(); - const DAOModel = await deployments.get('DAO_Implementation'); - const DAOModelStorage = new ethers.Contract(DAOModel.address, DAOModel.abi, agent); - const ecosystem = await dao.elasticDAO.contract.getEcosystem(); - const recordDoesntExist = await DAOModelStorage.exists(ethers.constants.AddressZero, ecosystem); - const recordExists = await DAOModelStorage.exists(dao.uuid, ecosystem); + it('Should allow the controller to setController', async () => { + const { summoner1, agent } = await signers(); + dao.sdk.changeSigner(agent); - expect(recordDoesntExist).to.equal(false); - expect(recordExists).to.equal(true); - }); + await dao.elasticDAO.contract.setController(summoner1.address); + + const controller = await dao.elasticDAO.getController(); + expect(controller).to.equal(summoner1.address); + }); + + it('Should allow the controller to setMaxVotingLambda', async () => { + const { agent } = await signers(); + dao.sdk.changeSigner(agent); + + await dao.elasticDAO.contract.setMaxVotingLambda(dao.toEthersBigNumber(5, 18)); + + const maxVotingLambda = await dao.elasticDAO.getMaxVotingLambda(); + expect(maxVotingLambda).to.equal(dao.toEthersBigNumber(5, 18)); + }); + + it('Should not allow the caller to setMaxVotingLambda if not controller', async () => { + const { summoner1 } = await signers(); + dao.sdk.changeSigner(summoner1); + + await expect( + dao.elasticDAO.contract.setMaxVotingLambda(dao.toEthersBigNumber(5, 18)), + ).to.be.revertedWith('ElasticDAO: Only controller'); + }); - it('Should allow to exit with 1 share and corresponding eth', async () => { - dao = await summonedDAO(); - const { summoner1 } = await signers(); + it('Should allow to exit with 1 share and corresponding eth', async () => { + const { summoner1 } = await signers(); - const postSummonBalanceOf = await dao.elasticGovernanceToken.balanceOf(summoner1.address); + const postSummonBalanceOf = await dao.elasticGovernanceToken.balanceOf(summoner1.address); - expect(postSummonBalanceOf.toNumber()).to.equal(1010); + expect(postSummonBalanceOf.toNumber()).to.equal(1010); - await dao.elasticDAO.exit(1); + await dao.elasticDAO.exit(1); - const atExitBalanceRecord = await dao.elasticGovernanceToken.balanceOf(summoner1.address); - expect(atExitBalanceRecord.toNumber()).to.equal(910); + const atExitBalanceRecord = await dao.elasticGovernanceToken.balanceOf(summoner1.address); + expect(atExitBalanceRecord.toNumber()).to.equal(910); + }); }); }); From 08e92234468bb225553ff5984110eb9599960e8c Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Wed, 10 Feb 2021 14:00:30 +0200 Subject: [PATCH 035/118] adds test proving that a user cannot exit with more shares than they have --- test/elasticDAOTests.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/elasticDAOTests.js b/test/elasticDAOTests.js index 9d6b294..550eaf1 100644 --- a/test/elasticDAOTests.js +++ b/test/elasticDAOTests.js @@ -271,5 +271,12 @@ describe('ElasticDAO: Core', () => { const atExitBalanceRecord = await dao.elasticGovernanceToken.balanceOf(summoner1.address); expect(atExitBalanceRecord.toNumber()).to.equal(910); }); + + it('Should not allow exit with too many shares', async () => { + const totalShares = await dao.elasticGovernanceToken.totalSupplyInShares(); + await expect(dao.elasticDAO.exit(totalShares)).to.be.revertedWith( + 'SafeMath: subtraction overflow', + ); + }); }); }); From a25fda95f8e7a56dea0e0e17eccb1645f450d588 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Wed, 10 Feb 2021 15:06:25 +0200 Subject: [PATCH 036/118] numberOfSummoners should come from the array passed to ElasticDAO constructor --- src/core/ElasticDAO.sol | 6 +++--- src/core/ElasticDAOFactory.sol | 3 +-- src/models/DAO.sol | 6 +++--- src/services/Configurator.sol | 3 --- test/elasticDAOTests.js | 1 - test/helpers.js | 1 - 6 files changed, 7 insertions(+), 13 deletions(-) diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index 8fe873b..a0505e8 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -80,13 +80,13 @@ contract ElasticDAO is ReentryProtection { address _ecosystemModelAddress, address _controller, address[] memory _summoners, - string memory _name, - uint256 _numberOfSummoners + string memory _name ) { require( _ecosystemModelAddress != address(0) || _controller != address(0), 'ElasticDAO: Address Zero' ); + require(_summoners.length > 0, 'ElasticDAO: At least 1 summoner required'); ecosystemModelAddress = _ecosystemModelAddress; controller = _controller; @@ -97,7 +97,7 @@ contract ElasticDAO is ReentryProtection { Configurator configurator = Configurator(defaults.configuratorAddress); Ecosystem.Instance memory ecosystem = configurator.buildEcosystem(defaults); - bool success = configurator.buildDAO(_summoners, _name, _numberOfSummoners, ecosystem); + bool success = configurator.buildDAO(_summoners, _name, ecosystem); require(success, 'ElasticDAO: Build DAO Failed'); } diff --git a/src/core/ElasticDAOFactory.sol b/src/core/ElasticDAOFactory.sol index ab27ac7..11245de 100644 --- a/src/core/ElasticDAOFactory.sol +++ b/src/core/ElasticDAOFactory.sol @@ -38,7 +38,6 @@ contract ElasticDAOFactory is ReentryProtection { function deployDAOAndToken( address[] memory _summoners, string memory _nameOfDAO, - uint256 _numberOfSummoners, string memory _nameOfToken, string memory _symbol, uint256 _eByL, @@ -48,7 +47,7 @@ contract ElasticDAOFactory is ReentryProtection { ) external payable preventReentry { // create the DAO ElasticDAO elasticDAO = - new ElasticDAO(ecosystemModelAddress, msg.sender, _summoners, _nameOfDAO, _numberOfSummoners); + new ElasticDAO(ecosystemModelAddress, msg.sender, _summoners, _nameOfDAO); deployedDAOAddresses.push(address(elasticDAO)); deployedDAOCount = SafeMath.add(deployedDAOCount, 1); diff --git a/src/models/DAO.sol b/src/models/DAO.sol index 25843c7..a7653f4 100644 --- a/src/models/DAO.sol +++ b/src/models/DAO.sol @@ -76,11 +76,11 @@ contract DAO is EternalModel, ReentryProtection { ); setString(keccak256(abi.encode(record.uuid, 'name')), record.name); - setUint(keccak256(abi.encode(record.uuid, 'numberOfSummoners')), record.numberOfSummoners); setBool(keccak256(abi.encode(record.uuid, 'summoned')), record.summoned); - if (record.summoners.length == record.numberOfSummoners) { - // not an unbound number of summoners. fixed limit. + if (record.summoners.length > 0) { + record.numberOfSummoners = record.summoners.length; + setUint(keccak256(abi.encode(record.uuid, 'numberOfSummoners')), record.numberOfSummoners); for (uint256 i = 0; i < record.numberOfSummoners; i = SafeMath.add(i, 1)) { setBool(keccak256(abi.encode(record.uuid, 'summoner', record.summoners[i])), true); setAddress(keccak256(abi.encode(record.uuid, 'summoners', i)), record.summoners[i]); diff --git a/src/services/Configurator.sol b/src/services/Configurator.sol index d1c98a5..d3911af 100644 --- a/src/services/Configurator.sol +++ b/src/services/Configurator.sol @@ -16,7 +16,6 @@ contract Configurator { * @dev creates DAO.Instance record * @param _summoners - an array of the addresses of the summoners * @param _name - the name of the DAO - * @param _numberOfSummoners - the number of summoners * @param _ecosystem - an instance of Ecosystem * @return bool true */ @@ -24,7 +23,6 @@ contract Configurator { function buildDAO( address[] memory _summoners, string memory _name, - uint256 _numberOfSummoners, Ecosystem.Instance memory _ecosystem ) external returns (bool) { DAO daoStorage = DAO(_ecosystem.daoModelAddress); @@ -33,7 +31,6 @@ contract Configurator { dao.uuid = msg.sender; dao.ecosystem = _ecosystem; dao.name = _name; - dao.numberOfSummoners = _numberOfSummoners; dao.summoned = false; dao.summoners = _summoners; daoStorage.serialize(dao); diff --git a/test/elasticDAOTests.js b/test/elasticDAOTests.js index 550eaf1..7b4efb9 100644 --- a/test/elasticDAOTests.js +++ b/test/elasticDAOTests.js @@ -16,7 +16,6 @@ describe('ElasticDAO: Core', () => { summoner1.address, await summoners(), 'ElasticDAO', - 3, ]; const ElasticDAO = await hre.getContractFactory('ElasticDAO'); diff --git a/test/helpers.js b/test/helpers.js index 6647cf5..5ee8284 100644 --- a/test/helpers.js +++ b/test/helpers.js @@ -18,7 +18,6 @@ const newDAO = async () => { return elasticDAOFactory.deployDAOAndToken( await summoners(), 'Elastic DAO', - 3, 'Elastic Governance Token', 'EGT', 0.1, From 08ce2b3d9b9bbab8cc69b54368808a9470f58181 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Wed, 10 Feb 2021 17:43:20 +0200 Subject: [PATCH 037/118] enforce the fee on factory deployment --- src/core/ElasticDAOFactory.sol | 37 ++++++++---- test/elasticDAOFactoryTest.js | 105 ++++++++++++++++++++++++++++----- 2 files changed, 116 insertions(+), 26 deletions(-) diff --git a/src/core/ElasticDAOFactory.sol b/src/core/ElasticDAOFactory.sol index 11245de..465137a 100644 --- a/src/core/ElasticDAOFactory.sol +++ b/src/core/ElasticDAOFactory.sol @@ -9,28 +9,39 @@ import '../services/ReentryProtection.sol'; // This contract is the facory contract for ElasticDAO contract ElasticDAOFactory is ReentryProtection { - address public deployer; address public ecosystemModelAddress; + address public manager; address payable feeAddress; address[] public deployedDAOAddresses; uint256 public deployedDAOCount = 0; + uint256 public fee = 250000000000000000; event DeployedDAO(address indexed daoAddress); event FeeAddressUpdated(address indexed feeReceiver); event FeesCollected(address treasuryAddress, uint256 amount); + event FeeUpdated(uint256 amount); + event ManagerUpdated(address indexed newManager); - modifier onlyDeployer() { - require(msg.sender == deployer, 'ElasticDAO: Only deployer'); + modifier onlyManager() { + require(manager == msg.sender, 'ElasticDAO: Only manager'); _; } constructor(address _ecosystemModelAddress) { require(_ecosystemModelAddress != address(0), 'ElasticDAO: Address Zero'); - deployer = msg.sender; + manager = msg.sender; ecosystemModelAddress = _ecosystemModelAddress; } + function collectFees() external preventReentry { + uint256 amount = address(this).balance; + + (bool success, ) = feeAddress.call{ value: amount }(''); + require(success, 'ElasticDAO: TransactionFailed'); + emit FeesCollected(address(feeAddress), amount); + } + /** * @dev deploys DAO and initializes token * and stores the address of the deployed DAO @@ -45,6 +56,8 @@ contract ElasticDAOFactory is ReentryProtection { uint256 _k, uint256 _maxLambdaPurchase ) external payable preventReentry { + require(fee == msg.value, 'ElasticDAO: pay up'); + // create the DAO ElasticDAO elasticDAO = new ElasticDAO(ecosystemModelAddress, msg.sender, _summoners, _nameOfDAO); @@ -57,19 +70,21 @@ contract ElasticDAOFactory is ReentryProtection { emit DeployedDAO(address(elasticDAO)); } - function updateFeeAddress(address _feeReceiver) external onlyDeployer preventReentry { + function updateFee(uint256 amount) external onlyManager preventReentry { + fee = amount; + emit FeeUpdated(fee); + } + + function updateFeeAddress(address _feeReceiver) external onlyManager preventReentry { require(_feeReceiver != address(0), 'ElasticDAO: Address Zero'); feeAddress = payable(_feeReceiver); emit FeeAddressUpdated(_feeReceiver); } - function collectFees() external preventReentry { - uint256 amount = address(this).balance; - - (bool success, ) = feeAddress.call{ value: amount }(''); - require(success, 'ElasticDAO: TransactionFailed'); - emit FeesCollected(address(feeAddress), amount); + function updateManager(address newManager) external onlyManager preventReentry { + manager = newManager; + emit ManagerUpdated(manager); } receive() external payable {} diff --git a/test/elasticDAOFactoryTest.js b/test/elasticDAOFactoryTest.js index 7dedcb9..888f23b 100644 --- a/test/elasticDAOFactoryTest.js +++ b/test/elasticDAOFactoryTest.js @@ -1,50 +1,125 @@ const { ethers } = require('ethers'); const { expect } = require('chai'); -const { newDAO, signers, summonedDAO } = require('./helpers'); +const { newDAO, SDK, signers, summoners } = require('./helpers'); describe('ElasticDAO: Factory', () => { + let sdk; + + beforeEach(async () => { + sdk = await SDK(); + }); + it('Should allow a DAO to be deployed using the factory', async () => { const dao = await newDAO(); expect(dao.uuid).to.not.equal(ethers.constants.AddressZero); expect(dao.ecosystem.governanceTokenAddress).to.not.equal(ethers.constants.AddressZero); }); + it('Should allow the fee to be updated by the manager', async () => { + const { agent } = await signers(); + + sdk.changeSigner(agent); + + const originalFee = await sdk.elasticDAOFactory.contract.fee(); + const newFee = sdk.elasticDAOFactory.toEthersBigNumber(1, 18); + const tx = await sdk.elasticDAOFactory.contract.updateFee(newFee); + const logs = await tx.wait(1); + + expect(logs.events[0].event).to.equal('FeeUpdated'); + expect(logs.events[0].args.amount.toString()).to.equal(newFee.toString()); + + await sdk.elasticDAOFactory.contract.updateFee(originalFee); + }); + + it('Should not allow the fee to be updated by a non-manager', async () => { + const { summoner2 } = await signers(); + + sdk.changeSigner(summoner2); + + await expect(sdk.elasticDAOFactory.contract.updateFee(0)).to.be.revertedWith( + 'ElasticDAO: Only manager', + ); + }); + + it('Should not allow the DAO to be deployed without the correct fee', async () => { + const { agent } = await signers(); + + sdk.changeSigner(agent); + + await expect( + sdk.elasticDAOFactory.contract.deployDAOAndToken( + await summoners(), + 'Elastic DAO', + 'Elastic Governance Token', + 'EGT', + sdk.elasticDAOFactory.toEthersBigNumber(0.1, 18), + sdk.elasticDAOFactory.toEthersBigNumber(0.02, 18), + sdk.elasticDAOFactory.toEthersBigNumber(100, 18), + sdk.elasticDAOFactory.toEthersBigNumber(1, 18), + { value: 0 }, + ), + ).to.be.revertedWith('ElasticDAO: pay up'); + }); + it('Should updateFeeAddress', async () => { - const dao = await summonedDAO(); const { agent, summoner2 } = await signers(); - dao.sdk.changeSigner(agent); + sdk.changeSigner(agent); - const tx = await dao.sdk.elasticDAOFactory.updateFeeAddress(summoner2.address); + const tx = await sdk.elasticDAOFactory.contract.updateFeeAddress(summoner2.address); const logs = await tx.wait(1); expect(logs.events[0].event).to.equal('FeeAddressUpdated'); expect(logs.events[0].args.feeReceiver).to.equal(summoner2.address); }); - it('Should not updateFeeAddress when caller is not deployer', async () => { - const dao = await summonedDAO(); + it('Should not updateFeeAddress when caller is not the manager', async () => { const { summoner2 } = await signers(); - dao.sdk.changeSigner(summoner2); + sdk.changeSigner(summoner2); - await expect(dao.sdk.elasticDAOFactory.updateFeeAddress(summoner2.address)).to.be.revertedWith( - 'ElasticDAO: Only deployer', - ); + await expect( + sdk.elasticDAOFactory.contract.updateFeeAddress(summoner2.address), + ).to.be.revertedWith('ElasticDAO: Only manager'); + }); + + it('Should updateManager', async () => { + const { agent, summoner2 } = await signers(); + + sdk.changeSigner(agent); + + const tx = await sdk.elasticDAOFactory.contract.updateManager(summoner2.address); + const logs = await tx.wait(1); + + expect(logs.events[0].event).to.equal('ManagerUpdated'); + expect(logs.events[0].args.newManager).to.equal(summoner2.address); + + sdk.changeSigner(summoner2); + + await sdk.elasticDAOFactory.contract.updateManager(agent.address); + }); + + it('Should not updateManager when caller is not the manager', async () => { + const { summoner2 } = await signers(); + + sdk.changeSigner(summoner2); + + await expect( + sdk.elasticDAOFactory.contract.updateManager(summoner2.address), + ).to.be.revertedWith('ElasticDAO: Only manager'); }); it('Should collectFees to the feeAddress', async () => { - const dao = await summonedDAO(); const { agent } = await signers(); - dao.sdk.changeSigner(agent); + sdk.changeSigner(agent); - await dao.sdk.elasticDAOFactory.updateFeeAddress(agent.address); + await sdk.elasticDAOFactory.contract.updateFeeAddress(agent.address); - const feeAmountToCollect = await agent.provider.getBalance(dao.sdk.elasticDAOFactory.address); + const feeAmountToCollect = await agent.provider.getBalance(sdk.elasticDAOFactory.address); - const tx = await dao.sdk.elasticDAOFactory.collectFees(); + const tx = await sdk.elasticDAOFactory.collectFees(); const logs = await tx.wait(1); expect(logs.events[0].event).to.equal('FeesCollected'); From 13f8de9e0ac717685d4ced0be85d348855e92da5 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Wed, 10 Feb 2021 18:09:43 +0200 Subject: [PATCH 038/118] maxVotingLambda passed with DAO creation --- src/core/ElasticDAO.sol | 5 +++-- src/core/ElasticDAOFactory.sol | 5 +++-- test/elasticDAOFactoryTest.js | 1 + test/elasticDAOTests.js | 1 + test/helpers.js | 1 + 5 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index a0505e8..cc6c309 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -80,7 +80,8 @@ contract ElasticDAO is ReentryProtection { address _ecosystemModelAddress, address _controller, address[] memory _summoners, - string memory _name + string memory _name, + uint256 _maxVotingLambda ) { require( _ecosystemModelAddress != address(0) || _controller != address(0), @@ -92,7 +93,7 @@ contract ElasticDAO is ReentryProtection { controller = _controller; deployer = msg.sender; Ecosystem.Instance memory defaults = Ecosystem(_ecosystemModelAddress).deserialize(address(0)); - maxVotingLambda = 1000000000000000000; + maxVotingLambda = _maxVotingLambda; summoners = _summoners; Configurator configurator = Configurator(defaults.configuratorAddress); diff --git a/src/core/ElasticDAOFactory.sol b/src/core/ElasticDAOFactory.sol index 465137a..d0ecb99 100644 --- a/src/core/ElasticDAOFactory.sol +++ b/src/core/ElasticDAOFactory.sol @@ -54,13 +54,14 @@ contract ElasticDAOFactory is ReentryProtection { uint256 _eByL, uint256 _elasticity, uint256 _k, - uint256 _maxLambdaPurchase + uint256 _maxLambdaPurchase, + uint256 _maxVotingLambda ) external payable preventReentry { require(fee == msg.value, 'ElasticDAO: pay up'); // create the DAO ElasticDAO elasticDAO = - new ElasticDAO(ecosystemModelAddress, msg.sender, _summoners, _nameOfDAO); + new ElasticDAO(ecosystemModelAddress, msg.sender, _summoners, _nameOfDAO, _maxVotingLambda); deployedDAOAddresses.push(address(elasticDAO)); deployedDAOCount = SafeMath.add(deployedDAOCount, 1); diff --git a/test/elasticDAOFactoryTest.js b/test/elasticDAOFactoryTest.js index 888f23b..b8ddbff 100644 --- a/test/elasticDAOFactoryTest.js +++ b/test/elasticDAOFactoryTest.js @@ -57,6 +57,7 @@ describe('ElasticDAO: Factory', () => { sdk.elasticDAOFactory.toEthersBigNumber(0.02, 18), sdk.elasticDAOFactory.toEthersBigNumber(100, 18), sdk.elasticDAOFactory.toEthersBigNumber(1, 18), + sdk.elasticDAOFactory.toEthersBigNumber(1, 18), { value: 0 }, ), ).to.be.revertedWith('ElasticDAO: pay up'); diff --git a/test/elasticDAOTests.js b/test/elasticDAOTests.js index 7b4efb9..ac24bee 100644 --- a/test/elasticDAOTests.js +++ b/test/elasticDAOTests.js @@ -16,6 +16,7 @@ describe('ElasticDAO: Core', () => { summoner1.address, await summoners(), 'ElasticDAO', + sdk.elasticDAOFactory.toEthersBigNumber(1, 18), ]; const ElasticDAO = await hre.getContractFactory('ElasticDAO'); diff --git a/test/helpers.js b/test/helpers.js index 5ee8284..25d37ab 100644 --- a/test/helpers.js +++ b/test/helpers.js @@ -24,6 +24,7 @@ const newDAO = async () => { 0.02, 100, 1, + 1, ); }; From d1f7d1eadb4662506d429558681f7081c752a5e5 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Wed, 10 Feb 2021 19:16:23 +0200 Subject: [PATCH 039/118] remove checked in coverage file --- coverage.json | 1 - 1 file changed, 1 deletion(-) delete mode 100644 coverage.json diff --git a/coverage.json b/coverage.json deleted file mode 100644 index cf78150..0000000 --- a/coverage.json +++ /dev/null @@ -1 +0,0 @@ -{"src/core/ElasticDAO.sol":{"l":{"41":30,"42":30,"43":30,"46":466,"47":466,"49":466,"50":465,"53":1303,"54":1303,"55":1302,"58":26,"59":24,"62":485,"63":484,"66":817,"67":817,"68":817,"69":817,"71":817,"72":815,"75":16,"76":16,"86":614,"87":614,"88":614,"89":614,"90":614,"91":614,"93":614,"94":614,"95":614,"100":14,"101":14,"102":14,"105":11,"106":11,"108":11,"109":10,"120":484,"121":484,"123":484,"134":384,"135":384,"136":384,"138":384,"148":16,"150":16,"155":16,"156":16,"165":16,"175":16,"178":15,"179":15,"182":15,"183":15,"184":15,"185":15,"188":15,"190":8,"194":12,"195":12,"196":12,"197":12,"199":11,"203":12,"205":11,"218":465,"220":465,"221":465,"222":465,"224":248,"228":349,"230":348,"231":348,"232":348,"233":348,"235":348,"237":348,"238":1044,"240":319,"241":319,"243":261,"249":1,"253":2,"259":1334,"260":1334,"264":4439,"268":507,"269":507},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAO.sol","s":{"1":30,"2":30,"3":466,"4":466,"5":466,"6":1303,"7":1303,"8":26,"9":485,"10":817,"11":817,"12":817,"13":817,"14":817,"15":16,"16":614,"17":614,"18":614,"19":614,"20":614,"21":614,"22":614,"23":614,"24":614,"25":14,"26":14,"27":14,"28":11,"29":11,"30":11,"31":10,"32":484,"33":484,"34":484,"35":384,"36":384,"37":384,"38":384,"39":16,"40":16,"41":16,"42":16,"43":16,"44":16,"45":15,"46":15,"47":15,"48":15,"49":15,"50":15,"51":15,"52":8,"53":12,"54":12,"55":12,"56":12,"57":11,"58":12,"59":11,"60":465,"61":465,"62":465,"63":465,"64":248,"65":349,"66":348,"67":348,"68":348,"69":348,"70":348,"71":348,"72":1044,"73":319,"74":319,"75":261,"76":1,"77":2,"78":1334,"79":1334,"80":4439,"81":507,"82":507},"b":{"1":[30,0],"2":[465,1],"3":[1302,1],"4":[24,2],"5":[484,1],"6":[815,2],"7":[16,0],"8":[484,0],"9":[16,0],"10":[15,1],"11":[348,1]},"f":{"1":30,"2":466,"3":1303,"4":26,"5":485,"6":817,"7":16,"8":614,"9":14,"10":484,"11":16,"12":12,"13":12,"14":465,"15":349,"16":1,"17":2,"18":1334,"19":4439,"20":507,"21":0},"fnMap":{"1":{"name":"onlyAfterSummoning","line":40,"loc":{"start":{"line":40,"column":2},"end":{"line":44,"column":2}}},"2":{"name":"onlyAfterTokenInitialized","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":51,"column":2}}},"3":{"name":"onlyBeforeSummoning","line":52,"loc":{"start":{"line":52,"column":2},"end":{"line":56,"column":2}}},"4":{"name":"onlyController","line":57,"loc":{"start":{"line":57,"column":2},"end":{"line":60,"column":2}}},"5":{"name":"onlyDeployer","line":61,"loc":{"start":{"line":61,"column":2},"end":{"line":64,"column":2}}},"6":{"name":"onlySummoners","line":65,"loc":{"start":{"line":65,"column":2},"end":{"line":73,"column":2}}},"7":{"name":"onlyWhenOpen","line":74,"loc":{"start":{"line":74,"column":2},"end":{"line":77,"column":2}}},"8":{"name":"constructor","line":79,"loc":{"start":{"line":79,"column":2},"end":{"line":96,"column":2}}},"9":{"name":"exit","line":98,"loc":{"start":{"line":98,"column":2},"end":{"line":110,"column":2}}},"10":{"name":"initializeToken","line":119,"loc":{"start":{"line":112,"column":2},"end":{"line":139,"column":2}}},"11":{"name":"join","line":146,"loc":{"start":{"line":141,"column":2},"end":{"line":191,"column":2}}},"12":{"name":"setController","line":193,"loc":{"start":{"line":193,"column":2},"end":{"line":200,"column":2}}},"13":{"name":"setMaxVotingLambda","line":202,"loc":{"start":{"line":202,"column":2},"end":{"line":206,"column":2}}},"14":{"name":"seedSummoning","line":216,"loc":{"start":{"line":210,"column":2},"end":{"line":225,"column":2}}},"15":{"name":"summon","line":227,"loc":{"start":{"line":227,"column":2},"end":{"line":244,"column":2}}},"16":{"name":"getDAO","line":248,"loc":{"start":{"line":248,"column":2},"end":{"line":250,"column":2}}},"17":{"name":"getEcosystem","line":252,"loc":{"start":{"line":252,"column":2},"end":{"line":254,"column":2}}},"18":{"name":"_getDAO","line":258,"loc":{"start":{"line":258,"column":2},"end":{"line":261,"column":2}}},"19":{"name":"_getEcosystem","line":263,"loc":{"start":{"line":263,"column":2},"end":{"line":265,"column":2}}},"20":{"name":"_getToken","line":267,"loc":{"start":{"line":267,"column":2},"end":{"line":271,"column":2}}},"21":{"name":null,"line":275,"loc":{"start":{"line":275,"column":2},"end":{"line":275,"column":31}}}},"statementMap":{"1":{"start":{"line":41,"column":4},"end":{"line":41,"column":39}},"2":{"start":{"line":42,"column":4},"end":{"line":42,"column":60}},"3":{"start":{"line":46,"column":4},"end":{"line":46,"column":57}},"4":{"start":{"line":47,"column":4},"end":{"line":47,"column":1602}},"5":{"start":{"line":49,"column":4},"end":{"line":49,"column":77}},"6":{"start":{"line":53,"column":4},"end":{"line":53,"column":39}},"7":{"start":{"line":54,"column":4},"end":{"line":54,"column":73}},"8":{"start":{"line":58,"column":4},"end":{"line":58,"column":67}},"9":{"start":{"line":62,"column":4},"end":{"line":62,"column":63}},"10":{"start":{"line":66,"column":4},"end":{"line":66,"column":57}},"11":{"start":{"line":67,"column":4},"end":{"line":67,"column":52}},"12":{"start":{"line":68,"column":4},"end":{"line":68,"column":79}},"13":{"start":{"line":69,"column":4},"end":{"line":69,"column":64}},"14":{"start":{"line":71,"column":4},"end":{"line":71,"column":55}},"15":{"start":{"line":75,"column":4},"end":{"line":75,"column":71}},"16":{"start":{"line":86,"column":4},"end":{"line":86,"column":49}},"17":{"start":{"line":87,"column":4},"end":{"line":87,"column":27}},"18":{"start":{"line":88,"column":4},"end":{"line":88,"column":24}},"19":{"start":{"line":89,"column":4},"end":{"line":89,"column":98}},"20":{"start":{"line":90,"column":4},"end":{"line":90,"column":40}},"21":{"start":{"line":91,"column":4},"end":{"line":91,"column":25}},"22":{"start":{"line":93,"column":4},"end":{"line":93,"column":74}},"23":{"start":{"line":94,"column":4},"end":{"line":94,"column":79}},"24":{"start":{"line":95,"column":4},"end":{"line":95,"column":74}},"25":{"start":{"line":100,"column":4},"end":{"line":100,"column":45}},"26":{"start":{"line":101,"column":4},"end":{"line":101,"column":77}},"27":{"start":{"line":102,"column":4},"end":{"line":102,"column":53}},"28":{"start":{"line":105,"column":4},"end":{"line":105,"column":72}},"29":{"start":{"line":106,"column":4},"end":{"line":106,"column":86}},"30":{"start":{"line":108,"column":4},"end":{"line":108,"column":41}},"31":{"start":{"line":109,"column":4},"end":{"line":109,"column":76}},"32":{"start":{"line":120,"column":4},"end":{"line":120,"column":88}},"33":{"start":{"line":121,"column":4},"end":{"line":121,"column":57}},"34":{"start":{"line":123,"column":4},"end":{"line":123,"column":4330}},"35":{"start":{"line":134,"column":4},"end":{"line":134,"column":77}},"36":{"start":{"line":135,"column":4},"end":{"line":135,"column":38}},"37":{"start":{"line":136,"column":4},"end":{"line":136,"column":38}},"38":{"start":{"line":138,"column":4},"end":{"line":138,"column":51}},"39":{"start":{"line":148,"column":4},"end":{"line":148,"column":45}},"40":{"start":{"line":150,"column":4},"end":{"line":150,"column":4951}},"41":{"start":{"line":155,"column":4},"end":{"line":155,"column":77}},"42":{"start":{"line":156,"column":4},"end":{"line":156,"column":5162}},"43":{"start":{"line":165,"column":4},"end":{"line":165,"column":5608}},"44":{"start":{"line":175,"column":4},"end":{"line":175,"column":67}},"45":{"start":{"line":178,"column":4},"end":{"line":178,"column":65}},"46":{"start":{"line":179,"column":4},"end":{"line":179,"column":72}},"47":{"start":{"line":182,"column":4},"end":{"line":182,"column":57}},"48":{"start":{"line":183,"column":4},"end":{"line":183,"column":59}},"49":{"start":{"line":184,"column":4},"end":{"line":184,"column":18}},"50":{"start":{"line":185,"column":4},"end":{"line":185,"column":32}},"51":{"start":{"line":188,"column":4},"end":{"line":188,"column":53}},"52":{"start":{"line":190,"column":4},"end":{"line":190,"column":68}},"53":{"start":{"line":194,"column":4},"end":{"line":194,"column":27}},"54":{"start":{"line":195,"column":4},"end":{"line":195,"column":83}},"55":{"start":{"line":196,"column":4},"end":{"line":196,"column":38}},"56":{"start":{"line":197,"column":4},"end":{"line":197,"column":38}},"57":{"start":{"line":199,"column":4},"end":{"line":199,"column":70}},"58":{"start":{"line":203,"column":4},"end":{"line":203,"column":37}},"59":{"start":{"line":205,"column":4},"end":{"line":205,"column":86}},"60":{"start":{"line":218,"column":4},"end":{"line":218,"column":45}},"61":{"start":{"line":220,"column":4},"end":{"line":220,"column":30}},"62":{"start":{"line":221,"column":4},"end":{"line":221,"column":62}},"63":{"start":{"line":222,"column":4},"end":{"line":222,"column":73}},"64":{"start":{"line":224,"column":4},"end":{"line":224,"column":56}},"65":{"start":{"line":228,"column":4},"end":{"line":228,"column":98}},"66":{"start":{"line":230,"column":4},"end":{"line":230,"column":57}},"67":{"start":{"line":231,"column":4},"end":{"line":231,"column":52}},"68":{"start":{"line":232,"column":4},"end":{"line":232,"column":79}},"69":{"start":{"line":233,"column":4},"end":{"line":233,"column":7907}},"70":{"start":{"line":235,"column":4},"end":{"line":235,"column":77}},"71":{"start":{"line":237,"column":4},"end":{"line":237,"column":8027}},"72":{"start":{"line":238,"column":6},"end":{"line":238,"column":76}},"73":{"start":{"line":240,"column":4},"end":{"line":240,"column":22}},"74":{"start":{"line":241,"column":4},"end":{"line":241,"column":29}},"75":{"start":{"line":243,"column":4},"end":{"line":243,"column":47}},"76":{"start":{"line":249,"column":4},"end":{"line":249,"column":20}},"77":{"start":{"line":253,"column":4},"end":{"line":253,"column":26}},"78":{"start":{"line":259,"column":4},"end":{"line":259,"column":57}},"79":{"start":{"line":260,"column":4},"end":{"line":260,"column":79}},"80":{"start":{"line":264,"column":4},"end":{"line":264,"column":70}},"81":{"start":{"line":268,"column":4},"end":{"line":268,"column":57}},"82":{"start":{"line":269,"column":4},"end":{"line":269,"column":9120}}},"branchMap":{"1":{"line":42,"type":"if","locations":[{"start":{"line":42,"column":4},"end":{"line":42,"column":4}},{"start":{"line":42,"column":4},"end":{"line":42,"column":4}}]},"2":{"line":49,"type":"if","locations":[{"start":{"line":49,"column":4},"end":{"line":49,"column":4}},{"start":{"line":49,"column":4},"end":{"line":49,"column":4}}]},"3":{"line":54,"type":"if","locations":[{"start":{"line":54,"column":4},"end":{"line":54,"column":4}},{"start":{"line":54,"column":4},"end":{"line":54,"column":4}}]},"4":{"line":58,"type":"if","locations":[{"start":{"line":58,"column":4},"end":{"line":58,"column":4}},{"start":{"line":58,"column":4},"end":{"line":58,"column":4}}]},"5":{"line":62,"type":"if","locations":[{"start":{"line":62,"column":4},"end":{"line":62,"column":4}},{"start":{"line":62,"column":4},"end":{"line":62,"column":4}}]},"6":{"line":71,"type":"if","locations":[{"start":{"line":71,"column":4},"end":{"line":71,"column":4}},{"start":{"line":71,"column":4},"end":{"line":71,"column":4}}]},"7":{"line":75,"type":"if","locations":[{"start":{"line":75,"column":4},"end":{"line":75,"column":4}},{"start":{"line":75,"column":4},"end":{"line":75,"column":4}}]},"8":{"line":120,"type":"if","locations":[{"start":{"line":120,"column":4},"end":{"line":120,"column":4}},{"start":{"line":120,"column":4},"end":{"line":120,"column":4}}]},"9":{"line":150,"type":"if","locations":[{"start":{"line":150,"column":4},"end":{"line":150,"column":4}},{"start":{"line":150,"column":4},"end":{"line":150,"column":4}}]},"10":{"line":175,"type":"if","locations":[{"start":{"line":175,"column":4},"end":{"line":175,"column":4}},{"start":{"line":175,"column":4},"end":{"line":175,"column":4}}]},"11":{"line":228,"type":"if","locations":[{"start":{"line":228,"column":4},"end":{"line":228,"column":4}},{"start":{"line":228,"column":4},"end":{"line":228,"column":4}}]}}},"src/core/ElasticDAOFactory.sol":{"l":{"23":25,"24":24,"28":3,"29":3,"48":406,"52":406,"54":318,"55":318,"56":318,"60":24,"61":22,"65":12,"67":12,"68":11},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/core/ElasticDAOFactory.sol","s":{"1":25,"2":3,"3":3,"4":406,"5":406,"6":318,"7":318,"8":318,"9":24,"10":22,"11":12,"12":12,"13":11},"b":{"1":[24,1]},"f":{"1":25,"2":3,"3":406,"4":24,"5":12,"6":0},"fnMap":{"1":{"name":"onlyDeployer","line":22,"loc":{"start":{"line":22,"column":2},"end":{"line":25,"column":2}}},"2":{"name":"constructor","line":27,"loc":{"start":{"line":27,"column":2},"end":{"line":30,"column":2}}},"3":{"name":"deployDAOAndToken","line":46,"loc":{"start":{"line":36,"column":2},"end":{"line":57,"column":2}}},"4":{"name":"updateFeeAddress","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":62,"column":2}}},"5":{"name":"collectFees","line":64,"loc":{"start":{"line":64,"column":2},"end":{"line":69,"column":2}}},"6":{"name":null,"line":73,"loc":{"start":{"line":73,"column":2},"end":{"line":73,"column":31}}}},"statementMap":{"1":{"start":{"line":23,"column":4},"end":{"line":23,"column":63}},"2":{"start":{"line":28,"column":4},"end":{"line":28,"column":24}},"3":{"start":{"line":29,"column":4},"end":{"line":29,"column":49}},"4":{"start":{"line":48,"column":4},"end":{"line":48,"column":1431}},"5":{"start":{"line":52,"column":4},"end":{"line":52,"column":96}},"6":{"start":{"line":54,"column":4},"end":{"line":54,"column":49}},"7":{"start":{"line":55,"column":4},"end":{"line":55,"column":55}},"8":{"start":{"line":56,"column":4},"end":{"line":56,"column":41}},"9":{"start":{"line":60,"column":4},"end":{"line":60,"column":37}},"10":{"start":{"line":61,"column":4},"end":{"line":61,"column":40}},"11":{"start":{"line":65,"column":4},"end":{"line":65,"column":42}},"12":{"start":{"line":67,"column":4},"end":{"line":67,"column":30}},"13":{"start":{"line":68,"column":4},"end":{"line":68,"column":51}}},"branchMap":{"1":{"line":23,"type":"if","locations":[{"start":{"line":23,"column":4},"end":{"line":23,"column":4}},{"start":{"line":23,"column":4},"end":{"line":23,"column":4}}]}}},"src/interfaces/IElasticToken.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IElasticToken.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/interfaces/IERC20.sol":{"l":{},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/interfaces/IERC20.sol","s":{},"b":{},"f":{},"fnMap":{},"statementMap":{},"branchMap":{}},"src/libraries/ElasticMath.sol":{"l":{"16":16,"40":16,"42":16,"45":16,"48":16,"51":16,"54":16,"57":16,"60":16,"63":16,"66":16,"74":70,"92":31,"105":16,"122":1613,"132":3418,"142":593},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/ElasticMath.sol","s":{"1":16,"2":16,"3":16,"4":16,"5":16,"6":16,"7":16,"8":16,"9":16,"10":16,"11":16,"12":70,"13":31,"14":16,"15":1613,"16":3418,"17":593},"b":{},"f":{"1":16,"2":16,"3":70,"4":31,"5":16,"6":1613,"7":3418,"8":593},"fnMap":{"1":{"name":"capitalDelta","line":11,"loc":{"start":{"line":11,"column":2},"end":{"line":17,"column":2}}},"2":{"name":"deltaE","line":32,"loc":{"start":{"line":32,"column":2},"end":{"line":67,"column":2}}},"3":{"name":"lambdaFromT","line":69,"loc":{"start":{"line":69,"column":2},"end":{"line":75,"column":2}}},"4":{"name":"mDash","line":87,"loc":{"start":{"line":87,"column":2},"end":{"line":93,"column":2}}},"5":{"name":"revamp","line":104,"loc":{"start":{"line":104,"column":2},"end":{"line":106,"column":2}}},"6":{"name":"t","line":117,"loc":{"start":{"line":117,"column":2},"end":{"line":123,"column":2}}},"7":{"name":"wmul","line":131,"loc":{"start":{"line":131,"column":2},"end":{"line":133,"column":2}}},"8":{"name":"wdiv","line":141,"loc":{"start":{"line":141,"column":2},"end":{"line":143,"column":2}}}},"statementMap":{"1":{"start":{"line":16,"column":4},"end":{"line":16,"column":53}},"2":{"start":{"line":40,"column":4},"end":{"line":40,"column":58}},"3":{"start":{"line":42,"column":4},"end":{"line":42,"column":42}},"4":{"start":{"line":45,"column":4},"end":{"line":45,"column":34}},"5":{"start":{"line":48,"column":4},"end":{"line":48,"column":31}},"6":{"start":{"line":51,"column":4},"end":{"line":51,"column":44}},"7":{"start":{"line":54,"column":4},"end":{"line":54,"column":26}},"8":{"start":{"line":57,"column":4},"end":{"line":57,"column":35}},"9":{"start":{"line":60,"column":4},"end":{"line":60,"column":34}},"10":{"start":{"line":63,"column":4},"end":{"line":63,"column":27}},"11":{"start":{"line":66,"column":4},"end":{"line":66,"column":22}},"12":{"start":{"line":74,"column":4},"end":{"line":74,"column":30}},"13":{"start":{"line":92,"column":4},"end":{"line":92,"column":44}},"14":{"start":{"line":105,"column":4},"end":{"line":105,"column":57}},"15":{"start":{"line":122,"column":4},"end":{"line":122,"column":35}},"16":{"start":{"line":132,"column":4},"end":{"line":132,"column":90}},"17":{"start":{"line":142,"column":4},"end":{"line":142,"column":72}}},"branchMap":{}},"src/libraries/SafeMath.sol":{"l":{"29":16698,"30":16698,"32":16698,"46":139,"64":139,"65":139,"67":139,"84":4283,"85":0,"88":4283,"89":4283,"91":4283,"95":16,"96":0,"98":0,"100":0,"102":16,"103":16,"104":16},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/libraries/SafeMath.sol","s":{"1":16698,"2":16698,"3":16698,"4":139,"5":139,"6":139,"7":139,"8":4283,"9":0,"10":4283,"11":4283,"12":4283,"13":16,"14":0,"15":16,"16":0,"17":16,"18":0,"19":16,"20":16,"21":272,"22":16},"b":{"1":[16698,0],"2":[139,0],"3":[0,4283],"4":[4283,0],"5":[0,16],"6":[0,16],"7":[0,16]},"f":{"1":16698,"2":139,"3":139,"4":4283,"5":16},"fnMap":{"1":{"name":"add","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":33,"column":2}}},"2":{"name":"sub","line":45,"loc":{"start":{"line":45,"column":2},"end":{"line":47,"column":2}}},"3":{"name":"sub","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":68,"column":2}}},"4":{"name":"mul","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":92,"column":2}}},"5":{"name":"pow","line":94,"loc":{"start":{"line":94,"column":2},"end":{"line":106,"column":2}}}},"statementMap":{"1":{"start":{"line":29,"column":4},"end":{"line":29,"column":21}},"2":{"start":{"line":30,"column":4},"end":{"line":30,"column":49}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":12}},"4":{"start":{"line":46,"column":4},"end":{"line":46,"column":54}},"5":{"start":{"line":64,"column":4},"end":{"line":64,"column":32}},"6":{"start":{"line":65,"column":4},"end":{"line":65,"column":21}},"7":{"start":{"line":67,"column":4},"end":{"line":67,"column":12}},"8":{"start":{"line":84,"column":4},"end":{"line":84,"column":2356}},"9":{"start":{"line":85,"column":6},"end":{"line":85,"column":14}},"10":{"start":{"line":88,"column":4},"end":{"line":88,"column":21}},"11":{"start":{"line":89,"column":4},"end":{"line":89,"column":59}},"12":{"start":{"line":91,"column":4},"end":{"line":91,"column":12}},"13":{"start":{"line":95,"column":4},"end":{"line":95,"column":2583}},"14":{"start":{"line":96,"column":6},"end":{"line":96,"column":14}},"15":{"start":{"line":97,"column":11},"end":{"line":97,"column":2631}},"16":{"start":{"line":98,"column":6},"end":{"line":98,"column":17}},"17":{"start":{"line":99,"column":11},"end":{"line":99,"column":2682}},"18":{"start":{"line":100,"column":6},"end":{"line":100,"column":14}},"19":{"start":{"line":102,"column":6},"end":{"line":102,"column":22}},"20":{"start":{"line":103,"column":6},"end":{"line":103,"column":71}},"21":{"start":{"line":103,"column":55},"end":{"line":103,"column":70}},"22":{"start":{"line":104,"column":6},"end":{"line":104,"column":14}}},"branchMap":{"1":{"line":30,"type":"if","locations":[{"start":{"line":30,"column":4},"end":{"line":30,"column":4}},{"start":{"line":30,"column":4},"end":{"line":30,"column":4}}]},"2":{"line":64,"type":"if","locations":[{"start":{"line":64,"column":4},"end":{"line":64,"column":4}},{"start":{"line":64,"column":4},"end":{"line":64,"column":4}}]},"3":{"line":84,"type":"if","locations":[{"start":{"line":84,"column":4},"end":{"line":84,"column":4}},{"start":{"line":84,"column":4},"end":{"line":84,"column":4}}]},"4":{"line":89,"type":"if","locations":[{"start":{"line":89,"column":4},"end":{"line":89,"column":4}},{"start":{"line":89,"column":4},"end":{"line":89,"column":4}}]},"5":{"line":95,"type":"if","locations":[{"start":{"line":95,"column":4},"end":{"line":95,"column":4}},{"start":{"line":95,"column":4},"end":{"line":95,"column":4}}]},"6":{"line":97,"type":"if","locations":[{"start":{"line":97,"column":11},"end":{"line":97,"column":11}},{"start":{"line":97,"column":11},"end":{"line":97,"column":11}}]},"7":{"line":99,"type":"if","locations":[{"start":{"line":99,"column":11},"end":{"line":99,"column":11}},{"start":{"line":99,"column":11},"end":{"line":99,"column":11}}]}}},"src/models/DAO.sol":{"l":{"33":2607,"34":2607,"36":2607,"37":2607,"38":2607,"39":2607,"42":2607,"51":2,"55":1044,"65":817,"73":904,"78":904,"79":904,"80":904,"82":904,"83":614,"84":1842,"85":1842,"89":904,"93":2609},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/DAO.sol","s":{"1":2607,"2":2607,"3":2607,"4":2607,"5":2607,"6":2607,"7":2607,"8":2,"9":1044,"10":817,"11":904,"12":904,"13":904,"14":904,"15":904,"16":614,"17":1842,"18":1842,"19":904,"20":2609},"b":{"1":[2607,0],"2":[904,0],"3":[614,290]},"f":{"1":2607,"2":2,"3":1044,"4":817,"5":904,"6":2609},"fnMap":{"1":{"name":"deserialize","line":28,"loc":{"start":{"line":28,"column":2},"end":{"line":43,"column":2}}},"2":{"name":"exists","line":50,"loc":{"start":{"line":50,"column":2},"end":{"line":52,"column":2}}},"3":{"name":"getSummoner","line":54,"loc":{"start":{"line":54,"column":2},"end":{"line":56,"column":2}}},"4":{"name":"isSummoner","line":64,"loc":{"start":{"line":64,"column":2},"end":{"line":66,"column":2}}},"5":{"name":"serialize","line":72,"loc":{"start":{"line":72,"column":2},"end":{"line":90,"column":2}}},"6":{"name":"_exists","line":92,"loc":{"start":{"line":92,"column":2},"end":{"line":94,"column":2}}}},"statementMap":{"1":{"start":{"line":33,"column":4},"end":{"line":33,"column":22}},"2":{"start":{"line":34,"column":4},"end":{"line":34,"column":32}},"3":{"start":{"line":36,"column":4},"end":{"line":36,"column":966}},"4":{"start":{"line":37,"column":6},"end":{"line":37,"column":66}},"5":{"start":{"line":38,"column":6},"end":{"line":38,"column":90}},"6":{"start":{"line":39,"column":6},"end":{"line":39,"column":72}},"7":{"start":{"line":42,"column":4},"end":{"line":42,"column":17}},"8":{"start":{"line":51,"column":4},"end":{"line":51,"column":25}},"9":{"start":{"line":55,"column":4},"end":{"line":55,"column":76}},"10":{"start":{"line":65,"column":4},"end":{"line":65,"column":82}},"11":{"start":{"line":73,"column":4},"end":{"line":73,"column":2204}},"12":{"start":{"line":78,"column":4},"end":{"line":78,"column":69}},"13":{"start":{"line":79,"column":4},"end":{"line":79,"column":93}},"14":{"start":{"line":80,"column":4},"end":{"line":80,"column":75}},"15":{"start":{"line":82,"column":4},"end":{"line":82,"column":2592}},"16":{"start":{"line":83,"column":6},"end":{"line":83,"column":2659}},"17":{"start":{"line":84,"column":8},"end":{"line":84,"column":89}},"18":{"start":{"line":85,"column":8},"end":{"line":85,"column":90}},"19":{"start":{"line":89,"column":4},"end":{"line":89,"column":62}},"20":{"start":{"line":93,"column":4},"end":{"line":93,"column":58}}},"branchMap":{"1":{"line":36,"type":"if","locations":[{"start":{"line":36,"column":4},"end":{"line":36,"column":4}},{"start":{"line":36,"column":4},"end":{"line":36,"column":4}}]},"2":{"line":73,"type":"if","locations":[{"start":{"line":73,"column":4},"end":{"line":73,"column":4}},{"start":{"line":73,"column":4},"end":{"line":73,"column":4}}]},"3":{"line":82,"type":"if","locations":[{"start":{"line":82,"column":4},"end":{"line":82,"column":4}},{"start":{"line":82,"column":4},"end":{"line":82,"column":4}}]}}},"src/models/Ecosystem.sol":{"l":{"34":10153,"35":10153,"36":10153,"39":10153,"42":10153,"43":10153,"46":10153,"49":10153,"54":10153,"63":1,"71":1082,"73":1082,"80":1082,"84":1082,"85":1082,"89":1082,"93":1082,"98":1082,"102":11236},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Ecosystem.sol","s":{"1":10153,"2":10153,"3":10153,"4":10153,"5":10153,"6":10153,"7":10153,"8":10153,"9":10153,"10":1,"11":1082,"12":1082,"13":1082,"14":1082,"15":1082,"16":1082,"17":1082,"18":1082,"19":11236},"b":{"1":[10153,0],"2":[1082,0]},"f":{"1":10153,"2":1,"3":1082,"4":11236},"fnMap":{"1":{"name":"deserialize","line":33,"loc":{"start":{"line":33,"column":2},"end":{"line":55,"column":2}}},"2":{"name":"exists","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":64,"column":2}}},"3":{"name":"serialize","line":70,"loc":{"start":{"line":70,"column":2},"end":{"line":99,"column":2}}},"4":{"name":"_exists","line":101,"loc":{"start":{"line":101,"column":2},"end":{"line":103,"column":2}}}},"statementMap":{"1":{"start":{"line":34,"column":4},"end":{"line":34,"column":1129}},"2":{"start":{"line":35,"column":6},"end":{"line":35,"column":36}},"3":{"start":{"line":36,"column":6},"end":{"line":36,"column":1204}},"4":{"start":{"line":39,"column":6},"end":{"line":39,"column":1332}},"5":{"start":{"line":42,"column":6},"end":{"line":42,"column":49}},"6":{"start":{"line":43,"column":6},"end":{"line":43,"column":1504}},"7":{"start":{"line":46,"column":6},"end":{"line":46,"column":1638}},"8":{"start":{"line":49,"column":6},"end":{"line":49,"column":1774}},"9":{"start":{"line":54,"column":4},"end":{"line":54,"column":17}},"10":{"start":{"line":63,"column":4},"end":{"line":63,"column":31}},"11":{"start":{"line":71,"column":4},"end":{"line":71,"column":50}},"12":{"start":{"line":73,"column":4},"end":{"line":73,"column":2385}},"13":{"start":{"line":80,"column":4},"end":{"line":80,"column":2592}},"14":{"start":{"line":84,"column":4},"end":{"line":84,"column":98}},"15":{"start":{"line":85,"column":4},"end":{"line":85,"column":2820}},"16":{"start":{"line":89,"column":4},"end":{"line":89,"column":2953}},"17":{"start":{"line":93,"column":4},"end":{"line":93,"column":3088}},"18":{"start":{"line":98,"column":4},"end":{"line":98,"column":68}},"19":{"start":{"line":102,"column":4},"end":{"line":102,"column":64}}},"branchMap":{"1":{"line":34,"type":"if","locations":[{"start":{"line":34,"column":4},"end":{"line":34,"column":4}},{"start":{"line":34,"column":4},"end":{"line":34,"column":4}}]},"2":{"line":73,"type":"if","locations":[{"start":{"line":73,"column":4},"end":{"line":73,"column":4}},{"start":{"line":73,"column":4},"end":{"line":73,"column":4}}]}}},"src/models/EternalModel.sol":{"l":{"30":39331,"37":11123,"44":51809,"51":24119,"63":19018,"71":4976,"79":7252,"87":8339},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/EternalModel.sol","s":{"1":39331,"2":11123,"3":51809,"4":24119,"5":19018,"6":4976,"7":7252,"8":8339},"b":{},"f":{"1":39331,"2":11123,"3":51809,"4":24119,"5":19018,"6":4976,"7":7252,"8":8339},"fnMap":{"1":{"name":"getUint","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":31,"column":2}}},"2":{"name":"getString","line":36,"loc":{"start":{"line":36,"column":2},"end":{"line":38,"column":2}}},"3":{"name":"getAddress","line":43,"loc":{"start":{"line":43,"column":2},"end":{"line":45,"column":2}}},"4":{"name":"getBool","line":50,"loc":{"start":{"line":50,"column":2},"end":{"line":52,"column":2}}},"5":{"name":"setUint","line":62,"loc":{"start":{"line":62,"column":2},"end":{"line":64,"column":2}}},"6":{"name":"setString","line":70,"loc":{"start":{"line":70,"column":2},"end":{"line":72,"column":2}}},"7":{"name":"setAddress","line":78,"loc":{"start":{"line":78,"column":2},"end":{"line":80,"column":2}}},"8":{"name":"setBool","line":86,"loc":{"start":{"line":86,"column":2},"end":{"line":88,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":30}},"2":{"start":{"line":37,"column":4},"end":{"line":37,"column":32}},"3":{"start":{"line":44,"column":4},"end":{"line":44,"column":33}},"4":{"start":{"line":51,"column":4},"end":{"line":51,"column":30}},"5":{"start":{"line":63,"column":4},"end":{"line":63,"column":31}},"6":{"start":{"line":71,"column":4},"end":{"line":71,"column":33}},"7":{"start":{"line":79,"column":4},"end":{"line":79,"column":34}},"8":{"start":{"line":87,"column":4},"end":{"line":87,"column":31}}},"branchMap":{}},"src/models/Token.sol":{"l":{"42":4262,"43":4262,"45":4262,"46":4258,"47":4258,"48":4258,"49":4258,"50":4258,"51":4258,"52":4258,"53":4258,"54":4258,"55":4258,"58":4262,"62":466,"66":1650,"68":1650,"69":1650,"77":2036,"84":2036,"85":2036,"86":2030,"87":2029,"88":2029,"89":2029,"90":2028,"91":2027,"93":1998,"100":1070,"104":5183},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/Token.sol","s":{"1":4262,"2":4262,"3":4262,"4":4258,"5":4258,"6":4258,"7":4258,"8":4258,"9":4258,"10":4258,"11":4258,"12":4258,"13":4258,"14":4262,"15":466,"16":1650,"17":1650,"18":1650,"19":2036,"20":2036,"21":2036,"22":2030,"23":2029,"24":2029,"25":2029,"26":2028,"27":2027,"28":1998,"29":1070,"30":5183},"b":{"1":[4258,4],"2":[1650,0],"3":[2036,0]},"f":{"1":4262,"2":466,"3":1650,"4":2036,"5":1070,"6":5183},"fnMap":{"1":{"name":"deserialize","line":37,"loc":{"start":{"line":37,"column":2},"end":{"line":59,"column":2}}},"2":{"name":"exists","line":61,"loc":{"start":{"line":61,"column":2},"end":{"line":63,"column":2}}},"3":{"name":"incrementCounter","line":65,"loc":{"start":{"line":65,"column":2},"end":{"line":70,"column":2}}},"4":{"name":"serialize","line":76,"loc":{"start":{"line":76,"column":2},"end":{"line":94,"column":2}}},"5":{"name":"updateNumberOfTokenHolders","line":98,"loc":{"start":{"line":96,"column":2},"end":{"line":101,"column":2}}},"6":{"name":"_exists","line":103,"loc":{"start":{"line":103,"column":2},"end":{"line":105,"column":2}}}},"statementMap":{"1":{"start":{"line":42,"column":4},"end":{"line":42,"column":22}},"2":{"start":{"line":43,"column":4},"end":{"line":43,"column":32}},"3":{"start":{"line":45,"column":4},"end":{"line":45,"column":1331}},"4":{"start":{"line":46,"column":6},"end":{"line":46,"column":70}},"5":{"start":{"line":47,"column":6},"end":{"line":47,"column":64}},"6":{"start":{"line":48,"column":6},"end":{"line":48,"column":76}},"7":{"start":{"line":49,"column":6},"end":{"line":49,"column":58}},"8":{"start":{"line":50,"column":6},"end":{"line":50,"column":68}},"9":{"start":{"line":51,"column":6},"end":{"line":51,"column":58}},"10":{"start":{"line":52,"column":6},"end":{"line":52,"column":90}},"11":{"start":{"line":53,"column":6},"end":{"line":53,"column":66}},"12":{"start":{"line":54,"column":6},"end":{"line":54,"column":96}},"13":{"start":{"line":55,"column":6},"end":{"line":55,"column":70}},"14":{"start":{"line":58,"column":4},"end":{"line":58,"column":17}},"15":{"start":{"line":62,"column":4},"end":{"line":62,"column":25}},"16":{"start":{"line":66,"column":4},"end":{"line":66,"column":65}},"17":{"start":{"line":68,"column":4},"end":{"line":68,"column":76}},"18":{"start":{"line":69,"column":4},"end":{"line":69,"column":83}},"19":{"start":{"line":77,"column":4},"end":{"line":77,"column":2706}},"20":{"start":{"line":84,"column":4},"end":{"line":84,"column":69}},"21":{"start":{"line":85,"column":4},"end":{"line":85,"column":73}},"22":{"start":{"line":86,"column":4},"end":{"line":86,"column":67}},"23":{"start":{"line":87,"column":4},"end":{"line":87,"column":79}},"24":{"start":{"line":88,"column":4},"end":{"line":88,"column":61}},"25":{"start":{"line":89,"column":4},"end":{"line":89,"column":71}},"26":{"start":{"line":90,"column":4},"end":{"line":90,"column":61}},"27":{"start":{"line":91,"column":4},"end":{"line":91,"column":93}},"28":{"start":{"line":93,"column":4},"end":{"line":93,"column":62}},"29":{"start":{"line":100,"column":4},"end":{"line":100,"column":92}},"30":{"start":{"line":104,"column":4},"end":{"line":104,"column":58}}},"branchMap":{"1":{"line":45,"type":"if","locations":[{"start":{"line":45,"column":4},"end":{"line":45,"column":4}},{"start":{"line":45,"column":4},"end":{"line":45,"column":4}}]},"2":{"line":66,"type":"if","locations":[{"start":{"line":66,"column":4},"end":{"line":66,"column":4}},{"start":{"line":66,"column":4},"end":{"line":66,"column":4}}]},"3":{"line":77,"type":"if","locations":[{"start":{"line":77,"column":4},"end":{"line":77,"column":4}},{"start":{"line":77,"column":4},"end":{"line":77,"column":4}}]}}},"src/models/TokenHolder.sol":{"l":{"30":1666,"31":1666,"32":1666,"34":1666,"35":505,"36":505,"39":1666,"43":1,"51":1613,"53":1613,"54":1610,"56":1609,"60":1667},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/models/TokenHolder.sol","s":{"1":1666,"2":1666,"3":1666,"4":1666,"5":505,"6":505,"7":1666,"8":1,"9":1613,"10":1613,"11":1610,"12":1609,"13":1667},"b":{"1":[505,1161],"2":[1613,0]},"f":{"1":1666,"2":1,"3":1613,"4":1667},"fnMap":{"1":{"name":"deserialize","line":25,"loc":{"start":{"line":25,"column":2},"end":{"line":40,"column":2}}},"2":{"name":"exists","line":42,"loc":{"start":{"line":42,"column":2},"end":{"line":44,"column":2}}},"3":{"name":"serialize","line":50,"loc":{"start":{"line":50,"column":2},"end":{"line":57,"column":2}}},"4":{"name":"_exists","line":59,"loc":{"start":{"line":59,"column":2},"end":{"line":61,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":28}},"2":{"start":{"line":31,"column":4},"end":{"line":31,"column":32}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":24}},"4":{"start":{"line":34,"column":4},"end":{"line":34,"column":1066}},"5":{"start":{"line":35,"column":6},"end":{"line":35,"column":98}},"6":{"start":{"line":36,"column":6},"end":{"line":36,"column":96}},"7":{"start":{"line":39,"column":4},"end":{"line":39,"column":17}},"8":{"start":{"line":43,"column":4},"end":{"line":43,"column":36}},"9":{"start":{"line":51,"column":4},"end":{"line":51,"column":71}},"10":{"start":{"line":53,"column":4},"end":{"line":53,"column":95}},"11":{"start":{"line":54,"column":4},"end":{"line":54,"column":93}},"12":{"start":{"line":56,"column":4},"end":{"line":56,"column":84}},"13":{"start":{"line":60,"column":4},"end":{"line":60,"column":74}}},"branchMap":{"1":{"line":34,"type":"if","locations":[{"start":{"line":34,"column":4},"end":{"line":34,"column":4}},{"start":{"line":34,"column":4},"end":{"line":34,"column":4}}]},"2":{"line":51,"type":"if","locations":[{"start":{"line":51,"column":4},"end":{"line":51,"column":4}},{"start":{"line":51,"column":4},"end":{"line":51,"column":4}}]}}},"src/services/Configurator.sol":{"l":{"30":614,"31":614,"32":614,"33":614,"34":614,"35":614,"36":614,"37":614,"38":614,"50":614,"52":614,"55":614,"56":614,"57":614,"58":614,"61":614,"63":614,"64":614,"89":484,"90":484,"91":484,"92":484,"93":484,"94":484,"95":484,"96":484,"97":484,"98":484,"99":484,"101":455,"102":455,"103":455,"105":384},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/services/Configurator.sol","s":{"1":614,"2":614,"3":614,"4":614,"5":614,"6":614,"7":614,"8":614,"9":614,"10":614,"11":614,"12":614,"13":614,"14":614,"15":614,"16":614,"17":614,"18":614,"19":484,"20":484,"21":484,"22":484,"23":484,"24":484,"25":484,"26":484,"27":484,"28":484,"29":484,"30":455,"31":455,"32":455,"33":384},"b":{},"f":{"1":614,"2":614,"3":484},"fnMap":{"1":{"name":"buildDAO","line":24,"loc":{"start":{"line":24,"column":2},"end":{"line":39,"column":2}}},"2":{"name":"buildEcosystem","line":46,"loc":{"start":{"line":46,"column":2},"end":{"line":65,"column":2}}},"3":{"name":"buildToken","line":80,"loc":{"start":{"line":80,"column":2},"end":{"line":106,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":52}},"2":{"start":{"line":31,"column":4},"end":{"line":31,"column":24}},"3":{"start":{"line":32,"column":4},"end":{"line":32,"column":29}},"4":{"start":{"line":33,"column":4},"end":{"line":33,"column":19}},"5":{"start":{"line":34,"column":4},"end":{"line":34,"column":45}},"6":{"start":{"line":35,"column":4},"end":{"line":35,"column":23}},"7":{"start":{"line":36,"column":4},"end":{"line":36,"column":29}},"8":{"start":{"line":37,"column":4},"end":{"line":37,"column":28}},"9":{"start":{"line":38,"column":4},"end":{"line":38,"column":14}},"10":{"start":{"line":50,"column":4},"end":{"line":50,"column":74}},"11":{"start":{"line":52,"column":4},"end":{"line":52,"column":36}},"12":{"start":{"line":55,"column":4},"end":{"line":55,"column":55}},"13":{"start":{"line":56,"column":4},"end":{"line":56,"column":67}},"14":{"start":{"line":57,"column":4},"end":{"line":57,"column":71}},"15":{"start":{"line":58,"column":4},"end":{"line":58,"column":59}},"16":{"start":{"line":61,"column":4},"end":{"line":61,"column":63}},"17":{"start":{"line":63,"column":4},"end":{"line":63,"column":40}},"18":{"start":{"line":64,"column":4},"end":{"line":64,"column":20}},"19":{"start":{"line":89,"column":4},"end":{"line":89,"column":60}},"20":{"start":{"line":90,"column":4},"end":{"line":90,"column":21}},"21":{"start":{"line":91,"column":4},"end":{"line":91,"column":31}},"22":{"start":{"line":92,"column":4},"end":{"line":92,"column":33}},"23":{"start":{"line":93,"column":4},"end":{"line":93,"column":15}},"24":{"start":{"line":94,"column":4},"end":{"line":94,"column":19}},"25":{"start":{"line":95,"column":4},"end":{"line":95,"column":32}},"26":{"start":{"line":96,"column":4},"end":{"line":96,"column":47}},"27":{"start":{"line":97,"column":4},"end":{"line":97,"column":21}},"28":{"start":{"line":98,"column":4},"end":{"line":98,"column":25}},"29":{"start":{"line":99,"column":4},"end":{"line":99,"column":97}},"30":{"start":{"line":101,"column":4},"end":{"line":101,"column":49}},"31":{"start":{"line":102,"column":4},"end":{"line":102,"column":68}},"32":{"start":{"line":103,"column":4},"end":{"line":103,"column":32}},"33":{"start":{"line":105,"column":4},"end":{"line":105,"column":16}}},"branchMap":{}},"src/services/ReentryProtection.sol":{"l":{"19":11053,"20":11021,"21":10959,"22":10133,"23":9936,"31":0,"32":0},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/services/ReentryProtection.sol","s":{"1":11053,"2":11021,"3":9936,"4":0},"b":{"1":[11021,32],"2":[0,0]},"f":{"1":11053,"2":0},"fnMap":{"1":{"name":"preventReentry","line":18,"loc":{"start":{"line":18,"column":2},"end":{"line":24,"column":2}}},"2":{"name":"noReentry","line":30,"loc":{"start":{"line":30,"column":2},"end":{"line":33,"column":2}}}},"statementMap":{"1":{"start":{"line":19,"column":4},"end":{"line":19,"column":50}},"2":{"start":{"line":20,"column":4},"end":{"line":20,"column":15}},"3":{"start":{"line":23,"column":4},"end":{"line":23,"column":10}},"4":{"start":{"line":31,"column":4},"end":{"line":31,"column":50}}},"branchMap":{"1":{"line":19,"type":"if","locations":[{"start":{"line":19,"column":4},"end":{"line":19,"column":4}},{"start":{"line":19,"column":4},"end":{"line":19,"column":4}}]},"2":{"line":31,"type":"if","locations":[{"start":{"line":31,"column":4},"end":{"line":31,"column":4}},{"start":{"line":31,"column":4},"end":{"line":31,"column":4}}]}}},"src/tokens/ElasticGovernanceToken.sol":{"l":{"30":792,"31":792,"35":29,"36":28,"40":1539,"41":1538,"45":484,"46":484,"47":484,"48":484,"61":3,"80":24,"81":22,"90":13,"91":13,"92":13,"94":13,"103":1,"104":1,"108":2,"109":2,"110":2,"111":2,"113":2,"114":1,"116":1,"133":14,"134":13,"150":14,"151":12,"159":1,"169":12,"171":12,"173":12,"174":11,"184":24,"185":22,"195":14,"197":13,"213":1524,"214":1366,"222":1,"226":1,"230":396,"234":396,"243":1,"256":18,"257":18,"261":1,"262":1,"274":28,"275":22,"293":14,"295":14,"297":13,"298":13,"300":12,"303":12,"313":60,"314":60,"316":60,"318":55,"322":14,"323":14,"324":14,"328":28,"329":28,"330":28,"331":28,"332":28,"334":28,"336":28,"337":28,"339":28,"340":28,"341":25,"345":14,"346":14,"347":14,"351":1538,"352":1538,"353":1538,"354":1538,"355":1538,"357":1538,"359":1538,"361":1538,"362":1538,"364":1537,"365":1537,"366":1473,"368":1380,"376":42,"377":42,"378":42,"380":42,"381":42,"382":42,"383":42,"385":42,"386":42,"388":42,"389":42,"391":42,"392":42,"393":42,"394":35,"395":35,"397":35,"406":1650,"408":1650,"409":1650,"411":1650,"412":1580,"414":70,"417":1650,"419":1650,"428":1568,"429":1101,"432":1475,"433":0,"440":4989,"444":1666,"445":1666,"454":65,"455":65},"path":"/mnt/d/Projects/ElasticDAO/contracts/src/tokens/ElasticGovernanceToken.sol","s":{"1":792,"2":29,"3":1539,"4":484,"5":484,"6":484,"7":484,"8":3,"9":24,"10":22,"11":13,"12":13,"13":13,"14":13,"15":1,"16":1,"17":2,"18":2,"19":2,"20":2,"21":2,"22":1,"23":1,"24":14,"25":13,"26":14,"27":12,"28":1,"29":12,"30":12,"31":12,"32":11,"33":24,"34":22,"35":14,"36":13,"37":1524,"38":1366,"39":1,"40":1,"41":396,"42":396,"43":1,"44":18,"45":18,"46":1,"47":1,"48":28,"49":22,"50":14,"51":14,"52":13,"53":13,"54":12,"55":12,"56":60,"57":60,"58":60,"59":55,"60":14,"61":14,"62":14,"63":28,"64":28,"65":28,"66":28,"67":28,"68":28,"69":28,"70":28,"71":28,"72":28,"73":25,"74":14,"75":14,"76":14,"77":1538,"78":1538,"79":1538,"80":1538,"81":1538,"82":1538,"83":1538,"84":1538,"85":1538,"86":1537,"87":1537,"88":1473,"89":1380,"90":42,"91":42,"92":42,"93":42,"94":42,"95":42,"96":42,"97":42,"98":42,"99":42,"100":42,"101":42,"102":42,"103":42,"104":35,"105":35,"106":35,"107":1650,"108":1650,"109":1650,"110":1650,"111":1580,"112":70,"113":1650,"114":1650,"115":1568,"116":1101,"117":1475,"118":0,"119":4989,"120":1666,"121":1666,"122":65,"123":65},"b":{"1":[792,0],"2":[28,1],"3":[1538,1],"4":[1,1],"5":[12,0],"6":[14,0],"7":[13,0],"8":[60,0],"9":[60,0],"10":[1580,70],"11":[1101,467],"12":[0,1475]},"f":{"1":792,"2":29,"3":1539,"4":484,"5":3,"6":24,"7":13,"8":1,"9":2,"10":14,"11":14,"12":1,"13":12,"14":24,"15":14,"16":1524,"17":1,"18":1,"19":396,"20":396,"21":1,"22":18,"23":1,"24":28,"25":14,"26":60,"27":14,"28":28,"29":14,"30":1538,"31":42,"32":1650,"33":1568,"34":4989,"35":1666,"36":65},"fnMap":{"1":{"name":"onlyDAO","line":29,"loc":{"start":{"line":29,"column":2},"end":{"line":32,"column":2}}},"2":{"name":"onlyDAOorBurner","line":34,"loc":{"start":{"line":34,"column":2},"end":{"line":37,"column":2}}},"3":{"name":"onlyDAOorMinter","line":39,"loc":{"start":{"line":39,"column":2},"end":{"line":42,"column":2}}},"4":{"name":"constructor","line":44,"loc":{"start":{"line":44,"column":2},"end":{"line":49,"column":2}}},"5":{"name":"allowance","line":60,"loc":{"start":{"line":60,"column":2},"end":{"line":62,"column":2}}},"6":{"name":"approve","line":79,"loc":{"start":{"line":79,"column":2},"end":{"line":82,"column":2}}},"7":{"name":"balanceOf","line":89,"loc":{"start":{"line":89,"column":2},"end":{"line":95,"column":2}}},"8":{"name":"balanceOfInShares","line":102,"loc":{"start":{"line":102,"column":2},"end":{"line":105,"column":2}}},"9":{"name":"balanceOfVoting","line":107,"loc":{"start":{"line":107,"column":2},"end":{"line":118,"column":2}}},"10":{"name":"burn","line":130,"loc":{"start":{"line":126,"column":2},"end":{"line":135,"column":2}}},"11":{"name":"burnShares","line":147,"loc":{"start":{"line":143,"column":2},"end":{"line":152,"column":2}}},"12":{"name":"decimals","line":158,"loc":{"start":{"line":158,"column":2},"end":{"line":160,"column":2}}},"13":{"name":"decreaseAllowance","line":168,"loc":{"start":{"line":168,"column":2},"end":{"line":175,"column":2}}},"14":{"name":"increaseAllowance","line":183,"loc":{"start":{"line":183,"column":2},"end":{"line":186,"column":2}}},"15":{"name":"mint","line":194,"loc":{"start":{"line":194,"column":2},"end":{"line":198,"column":2}}},"16":{"name":"mintShares","line":210,"loc":{"start":{"line":206,"column":2},"end":{"line":215,"column":2}}},"17":{"name":"name","line":221,"loc":{"start":{"line":221,"column":2},"end":{"line":223,"column":2}}},"18":{"name":"numberOfTokenHolders","line":225,"loc":{"start":{"line":225,"column":2},"end":{"line":227,"column":2}}},"19":{"name":"setBurner","line":229,"loc":{"start":{"line":229,"column":2},"end":{"line":231,"column":2}}},"20":{"name":"setMinter","line":233,"loc":{"start":{"line":233,"column":2},"end":{"line":235,"column":2}}},"21":{"name":"symbol","line":242,"loc":{"start":{"line":242,"column":2},"end":{"line":244,"column":2}}},"22":{"name":"totalSupply","line":255,"loc":{"start":{"line":255,"column":2},"end":{"line":258,"column":2}}},"23":{"name":"totalSupplyInShares","line":260,"loc":{"start":{"line":260,"column":2},"end":{"line":263,"column":2}}},"24":{"name":"transfer","line":273,"loc":{"start":{"line":273,"column":2},"end":{"line":276,"column":2}}},"25":{"name":"transferFrom","line":292,"loc":{"start":{"line":288,"column":2},"end":{"line":304,"column":2}}},"26":{"name":"_approve","line":308,"loc":{"start":{"line":308,"column":2},"end":{"line":319,"column":2}}},"27":{"name":"_burn","line":321,"loc":{"start":{"line":321,"column":2},"end":{"line":325,"column":2}}},"28":{"name":"_burnShares","line":327,"loc":{"start":{"line":327,"column":2},"end":{"line":342,"column":2}}},"29":{"name":"_mint","line":344,"loc":{"start":{"line":344,"column":2},"end":{"line":348,"column":2}}},"30":{"name":"_mintShares","line":350,"loc":{"start":{"line":350,"column":2},"end":{"line":369,"column":2}}},"31":{"name":"_transfer","line":371,"loc":{"start":{"line":371,"column":2},"end":{"line":398,"column":2}}},"32":{"name":"_updateBalance","line":400,"loc":{"start":{"line":400,"column":2},"end":{"line":420,"column":2}}},"33":{"name":"_updateNumberOfTokenHolders","line":422,"loc":{"start":{"line":422,"column":2},"end":{"line":435,"column":2}}},"34":{"name":"_getEcosystem","line":439,"loc":{"start":{"line":439,"column":2},"end":{"line":441,"column":2}}},"35":{"name":"_getTokenHolder","line":443,"loc":{"start":{"line":443,"column":2},"end":{"line":451,"column":2}}},"36":{"name":"_getToken","line":453,"loc":{"start":{"line":453,"column":2},"end":{"line":456,"column":2}}}},"statementMap":{"1":{"start":{"line":30,"column":4},"end":{"line":30,"column":90}},"2":{"start":{"line":35,"column":4},"end":{"line":35,"column":90}},"3":{"start":{"line":40,"column":4},"end":{"line":40,"column":90}},"4":{"start":{"line":45,"column":4},"end":{"line":45,"column":23}},"5":{"start":{"line":46,"column":4},"end":{"line":46,"column":27}},"6":{"start":{"line":47,"column":4},"end":{"line":47,"column":49}},"7":{"start":{"line":48,"column":4},"end":{"line":48,"column":23}},"8":{"start":{"line":61,"column":4},"end":{"line":61,"column":40}},"9":{"start":{"line":80,"column":4},"end":{"line":80,"column":42}},"10":{"start":{"line":81,"column":4},"end":{"line":81,"column":15}},"11":{"start":{"line":90,"column":4},"end":{"line":90,"column":45}},"12":{"start":{"line":91,"column":4},"end":{"line":91,"column":71}},"13":{"start":{"line":92,"column":4},"end":{"line":92,"column":67}},"14":{"start":{"line":94,"column":4},"end":{"line":94,"column":12}},"15":{"start":{"line":103,"column":4},"end":{"line":103,"column":71}},"16":{"start":{"line":104,"column":4},"end":{"line":104,"column":29}},"17":{"start":{"line":108,"column":4},"end":{"line":108,"column":45}},"18":{"start":{"line":109,"column":4},"end":{"line":109,"column":71}},"19":{"start":{"line":110,"column":4},"end":{"line":110,"column":59}},"20":{"start":{"line":111,"column":4},"end":{"line":111,"column":58}},"21":{"start":{"line":113,"column":4},"end":{"line":113,"column":3892}},"22":{"start":{"line":114,"column":6},"end":{"line":114,"column":61}},"23":{"start":{"line":116,"column":6},"end":{"line":116,"column":64}},"24":{"start":{"line":133,"column":4},"end":{"line":133,"column":27}},"25":{"start":{"line":134,"column":4},"end":{"line":134,"column":15}},"26":{"start":{"line":150,"column":4},"end":{"line":150,"column":33}},"27":{"start":{"line":151,"column":4},"end":{"line":151,"column":15}},"28":{"start":{"line":159,"column":4},"end":{"line":159,"column":13}},"29":{"start":{"line":169,"column":4},"end":{"line":169,"column":92}},"30":{"start":{"line":171,"column":4},"end":{"line":171,"column":74}},"31":{"start":{"line":173,"column":4},"end":{"line":173,"column":47}},"32":{"start":{"line":174,"column":4},"end":{"line":174,"column":15}},"33":{"start":{"line":184,"column":4},"end":{"line":184,"column":95}},"34":{"start":{"line":185,"column":4},"end":{"line":185,"column":15}},"35":{"start":{"line":195,"column":4},"end":{"line":195,"column":27}},"36":{"start":{"line":197,"column":4},"end":{"line":197,"column":15}},"37":{"start":{"line":213,"column":4},"end":{"line":213,"column":33}},"38":{"start":{"line":214,"column":4},"end":{"line":214,"column":15}},"39":{"start":{"line":222,"column":4},"end":{"line":222,"column":27}},"40":{"start":{"line":226,"column":4},"end":{"line":226,"column":43}},"41":{"start":{"line":230,"column":4},"end":{"line":230,"column":19}},"42":{"start":{"line":234,"column":4},"end":{"line":234,"column":19}},"43":{"start":{"line":243,"column":4},"end":{"line":243,"column":29}},"44":{"start":{"line":256,"column":4},"end":{"line":256,"column":45}},"45":{"start":{"line":257,"column":4},"end":{"line":257,"column":56}},"46":{"start":{"line":261,"column":4},"end":{"line":261,"column":45}},"47":{"start":{"line":262,"column":4},"end":{"line":262,"column":23}},"48":{"start":{"line":274,"column":4},"end":{"line":274,"column":38}},"49":{"start":{"line":275,"column":4},"end":{"line":275,"column":15}},"50":{"start":{"line":293,"column":4},"end":{"line":293,"column":97}},"51":{"start":{"line":295,"column":4},"end":{"line":295,"column":33}},"52":{"start":{"line":297,"column":4},"end":{"line":297,"column":9305}},"53":{"start":{"line":298,"column":6},"end":{"line":298,"column":91}},"54":{"start":{"line":300,"column":6},"end":{"line":300,"column":68}},"55":{"start":{"line":303,"column":4},"end":{"line":303,"column":15}},"56":{"start":{"line":313,"column":4},"end":{"line":313,"column":72}},"57":{"start":{"line":314,"column":4},"end":{"line":314,"column":72}},"58":{"start":{"line":316,"column":4},"end":{"line":316,"column":42}},"59":{"start":{"line":318,"column":4},"end":{"line":318,"column":44}},"60":{"start":{"line":322,"column":4},"end":{"line":322,"column":45}},"61":{"start":{"line":323,"column":4},"end":{"line":323,"column":76}},"62":{"start":{"line":324,"column":4},"end":{"line":324,"column":37}},"63":{"start":{"line":328,"column":4},"end":{"line":328,"column":57}},"64":{"start":{"line":329,"column":4},"end":{"line":329,"column":59}},"65":{"start":{"line":330,"column":4},"end":{"line":330,"column":84}},"66":{"start":{"line":331,"column":4},"end":{"line":331,"column":71}},"67":{"start":{"line":332,"column":4},"end":{"line":332,"column":52}},"68":{"start":{"line":334,"column":4},"end":{"line":334,"column":72}},"69":{"start":{"line":336,"column":4},"end":{"line":336,"column":58}},"70":{"start":{"line":337,"column":4},"end":{"line":337,"column":32}},"71":{"start":{"line":339,"column":4},"end":{"line":339,"column":83}},"72":{"start":{"line":340,"column":4},"end":{"line":340,"column":44}},"73":{"start":{"line":341,"column":4},"end":{"line":341,"column":84}},"74":{"start":{"line":345,"column":4},"end":{"line":345,"column":45}},"75":{"start":{"line":346,"column":4},"end":{"line":346,"column":76}},"76":{"start":{"line":347,"column":4},"end":{"line":347,"column":37}},"77":{"start":{"line":351,"column":4},"end":{"line":351,"column":57}},"78":{"start":{"line":352,"column":4},"end":{"line":352,"column":59}},"79":{"start":{"line":353,"column":4},"end":{"line":353,"column":84}},"80":{"start":{"line":354,"column":4},"end":{"line":354,"column":71}},"81":{"start":{"line":355,"column":4},"end":{"line":355,"column":52}},"82":{"start":{"line":357,"column":4},"end":{"line":357,"column":66}},"83":{"start":{"line":359,"column":4},"end":{"line":359,"column":71}},"84":{"start":{"line":361,"column":4},"end":{"line":361,"column":58}},"85":{"start":{"line":362,"column":4},"end":{"line":362,"column":32}},"86":{"start":{"line":364,"column":4},"end":{"line":364,"column":83}},"87":{"start":{"line":365,"column":4},"end":{"line":365,"column":44}},"88":{"start":{"line":366,"column":4},"end":{"line":366,"column":84}},"89":{"start":{"line":368,"column":4},"end":{"line":368,"column":47}},"90":{"start":{"line":376,"column":4},"end":{"line":376,"column":57}},"91":{"start":{"line":377,"column":4},"end":{"line":377,"column":59}},"92":{"start":{"line":378,"column":4},"end":{"line":378,"column":84}},"93":{"start":{"line":380,"column":4},"end":{"line":380,"column":72}},"94":{"start":{"line":381,"column":4},"end":{"line":381,"column":68}},"95":{"start":{"line":382,"column":4},"end":{"line":382,"column":60}},"96":{"start":{"line":383,"column":4},"end":{"line":383,"column":56}},"97":{"start":{"line":385,"column":4},"end":{"line":385,"column":76}},"98":{"start":{"line":386,"column":4},"end":{"line":386,"column":65}},"99":{"start":{"line":388,"column":4},"end":{"line":388,"column":79}},"100":{"start":{"line":389,"column":4},"end":{"line":389,"column":74}},"101":{"start":{"line":391,"column":4},"end":{"line":391,"column":83}},"102":{"start":{"line":392,"column":4},"end":{"line":392,"column":48}},"103":{"start":{"line":393,"column":4},"end":{"line":393,"column":46}},"104":{"start":{"line":394,"column":4},"end":{"line":394,"column":92}},"105":{"start":{"line":395,"column":4},"end":{"line":395,"column":88}},"106":{"start":{"line":397,"column":4},"end":{"line":397,"column":37}},"107":{"start":{"line":406,"column":4},"end":{"line":406,"column":57}},"108":{"start":{"line":408,"column":4},"end":{"line":408,"column":51}},"109":{"start":{"line":409,"column":4},"end":{"line":409,"column":63}},"110":{"start":{"line":411,"column":4},"end":{"line":411,"column":13810}},"111":{"start":{"line":412,"column":6},"end":{"line":412,"column":74}},"112":{"start":{"line":414,"column":6},"end":{"line":414,"column":74}},"113":{"start":{"line":417,"column":4},"end":{"line":417,"column":62}},"114":{"start":{"line":419,"column":4},"end":{"line":419,"column":23}},"115":{"start":{"line":428,"column":4},"end":{"line":428,"column":14290}},"116":{"start":{"line":429,"column":6},"end":{"line":429,"column":96}},"117":{"start":{"line":432,"column":4},"end":{"line":432,"column":14461}},"118":{"start":{"line":433,"column":6},"end":{"line":433,"column":96}},"119":{"start":{"line":440,"column":4},"end":{"line":440,"column":67}},"120":{"start":{"line":444,"column":4},"end":{"line":444,"column":57}},"121":{"start":{"line":445,"column":4},"end":{"line":445,"column":14964}},"122":{"start":{"line":454,"column":4},"end":{"line":454,"column":57}},"123":{"start":{"line":455,"column":4},"end":{"line":455,"column":83}}},"branchMap":{"1":{"line":30,"type":"if","locations":[{"start":{"line":30,"column":4},"end":{"line":30,"column":4}},{"start":{"line":30,"column":4},"end":{"line":30,"column":4}}]},"2":{"line":35,"type":"if","locations":[{"start":{"line":35,"column":4},"end":{"line":35,"column":4}},{"start":{"line":35,"column":4},"end":{"line":35,"column":4}}]},"3":{"line":40,"type":"if","locations":[{"start":{"line":40,"column":4},"end":{"line":40,"column":4}},{"start":{"line":40,"column":4},"end":{"line":40,"column":4}}]},"4":{"line":113,"type":"if","locations":[{"start":{"line":113,"column":4},"end":{"line":113,"column":4}},{"start":{"line":113,"column":4},"end":{"line":113,"column":4}}]},"5":{"line":171,"type":"if","locations":[{"start":{"line":171,"column":4},"end":{"line":171,"column":4}},{"start":{"line":171,"column":4},"end":{"line":171,"column":4}}]},"6":{"line":293,"type":"if","locations":[{"start":{"line":293,"column":4},"end":{"line":293,"column":4}},{"start":{"line":293,"column":4},"end":{"line":293,"column":4}}]},"7":{"line":297,"type":"if","locations":[{"start":{"line":297,"column":4},"end":{"line":297,"column":4}},{"start":{"line":297,"column":4},"end":{"line":297,"column":4}}]},"8":{"line":313,"type":"if","locations":[{"start":{"line":313,"column":4},"end":{"line":313,"column":4}},{"start":{"line":313,"column":4},"end":{"line":313,"column":4}}]},"9":{"line":314,"type":"if","locations":[{"start":{"line":314,"column":4},"end":{"line":314,"column":4}},{"start":{"line":314,"column":4},"end":{"line":314,"column":4}}]},"10":{"line":411,"type":"if","locations":[{"start":{"line":411,"column":4},"end":{"line":411,"column":4}},{"start":{"line":411,"column":4},"end":{"line":411,"column":4}}]},"11":{"line":428,"type":"if","locations":[{"start":{"line":428,"column":4},"end":{"line":428,"column":4}},{"start":{"line":428,"column":4},"end":{"line":428,"column":4}}]},"12":{"line":432,"type":"if","locations":[{"start":{"line":432,"column":4},"end":{"line":432,"column":4}},{"start":{"line":432,"column":4},"end":{"line":432,"column":4}}]}}}} \ No newline at end of file From 5ecd931dc5d0c74bbc224725cd077f2e1fff22f3 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Wed, 10 Feb 2021 19:17:01 +0200 Subject: [PATCH 040/118] ignore coverage --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index eaf3666..cdbd15e 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ bin #coverage coverage +coverage.json .coverage_cache .coverage_contracts .coverage_artifacts From e4ddb03407a4f3633ee704ac25111461deb42657 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Wed, 10 Feb 2021 19:17:36 +0200 Subject: [PATCH 041/118] test numberOfTokeHolders --- test/elasticGovernanceTokenTest.js | 43 +++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/test/elasticGovernanceTokenTest.js b/test/elasticGovernanceTokenTest.js index 9f1ccb0..f1919bb 100644 --- a/test/elasticGovernanceTokenTest.js +++ b/test/elasticGovernanceTokenTest.js @@ -21,22 +21,26 @@ describe('ElasticDAO: Elastic Governance Token', () => { expect(allowance.toFixed()).to.equal('1'); }); + it('Should return maxVotingLambda if member has more shares than are votable', async () => { const { summoner1 } = await signers(); const balanceOfVoting = await dao.elasticGovernanceToken.balanceOfVoting(summoner1.address); expect(balanceOfVoting.toFixed()).to.equal('100'); }); + it('Should get balance of votable shares for user', async () => { const { summoner1, summoner2 } = await signers(); await dao.elasticGovernanceToken.transfer(summoner2.address, 950); const balanceOfVoting = await dao.elasticGovernanceToken.balanceOfVoting(summoner1.address); expect(balanceOfVoting.toFixed()).to.equal('60'); }); + it('Should get token decimals', async () => { const decimals = await dao.elasticGovernanceToken.decimals(); expect(decimals).to.equal('18'); }); + it('Should increase allowance', async () => { const { summoner1, summoner2 } = await signers(); await dao.elasticGovernanceToken.increaseAllowance(summoner2.address, 1); @@ -48,6 +52,7 @@ describe('ElasticDAO: Elastic Governance Token', () => { expect(allowance.toFixed()).to.equal('1'); }); + it('Should decrease allowance', async () => { const { summoner1, summoner2 } = await signers(); await dao.elasticGovernanceToken.increaseAllowance(summoner2.address, 2); @@ -60,6 +65,7 @@ describe('ElasticDAO: Elastic Governance Token', () => { expect(allowance.toFixed()).to.equal('1'); }); + it('Should mint tokens', async () => { const { agent, summoner1 } = await signers(); dao.sdk.changeSigner(agent); @@ -68,6 +74,7 @@ describe('ElasticDAO: Elastic Governance Token', () => { const balance = await dao.elasticGovernanceToken.balanceOf(summoner1.address); expect(balance.toFixed()).to.equal('1011'); }); + it('Should not mint tokens if caller is not valid minter', async () => { const { summoner1 } = await signers(); @@ -75,6 +82,7 @@ describe('ElasticDAO: Elastic Governance Token', () => { 'ElasticDAO: Not authorized', ); }); + it('Should burn tokens', async () => { const { agent, summoner1 } = await signers(); @@ -85,6 +93,7 @@ describe('ElasticDAO: Elastic Governance Token', () => { expect(balance.toFixed()).to.equal('1009'); }); + it('Should not burn tokens if caller is not the valid burner', async () => { const { summoner1 } = await signers(); @@ -92,26 +101,31 @@ describe('ElasticDAO: Elastic Governance Token', () => { 'ElasticDAO: Not authorized', ); }); + it('Should get token name', async () => { const name = await dao.elasticGovernanceToken.name(); expect(name).to.equal('Elastic Governance Token'); }); + it('Should get token symbol', async () => { const symbol = await dao.elasticGovernanceToken.symbol(); expect(symbol).to.equal('EGT'); }); + it('Should get number of token holders', async () => { const numberOfTokenHolders = await dao.elasticGovernanceToken.numberOfTokenHolders(); expect(numberOfTokenHolders.toFixed()).to.equal('3'); }); + it('Should get total supply in shares', async () => { const totalSupplyInShares = await dao.elasticGovernanceToken.totalSupplyInShares(); expect(totalSupplyInShares.toFixed()).to.equal('10.3'); }); + it('should transfer tokens a to b', async () => { const { summoner2 } = await signers(); @@ -124,11 +138,38 @@ describe('ElasticDAO: Elastic Governance Token', () => { expect(balance.toFixed()).to.equal('11'); }); + it('should increase the number of members when a new member buys tokens', async () => { + const { agent, summoner1 } = await signers(); + + const balance = await dao.elasticGovernanceToken.balanceOf(summoner1.address); + const { numberOfTokenHolders } = await dao.token(); + + dao.sdk.changeSigner(summoner1); + await dao.elasticGovernanceToken.transfer(agent.address, balance.dividedBy(2)); + + const token = await dao.token(); + + expect(token.numberOfTokenHolders).to.equal(numberOfTokenHolders + 1); + }); + + it('should decrease the number of members when a member sells all of their tokens', async () => { + const { summoner2, summoner1 } = await signers(); + + const balance = await dao.elasticGovernanceToken.balanceOf(summoner1.address); + const { numberOfTokenHolders } = await dao.token(); + + dao.sdk.changeSigner(summoner1); + await dao.elasticGovernanceToken.transfer(summoner2.address, balance); + + const token = await dao.token(); + + expect(token.numberOfTokenHolders).to.equal(numberOfTokenHolders - 1); + }); + it('should transfer tokens on behalf of a to b(transferFrom)', async () => { const { summoner2, summoner1, agent } = await signers(); let balance = await dao.elasticGovernanceToken.balanceOf(summoner2.address); - expect(balance.toFixed()).to.equal('10'); await dao.elasticGovernanceToken.approve(agent.address, 1); dao.sdk.changeSigner(agent); From b902177bcd8141a92fb94ce304ba7416382f5d46 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Wed, 10 Feb 2021 20:40:51 +0200 Subject: [PATCH 042/118] audit ready --- package.json | 2 +- src/core/ElasticDAO.sol | 34 ++++++++++++++++++++++++++ test/elasticDAOTests.js | 54 +++++++++++++++++++++++++++++++++++++++++ yarn.lock | 8 +++--- 4 files changed, 93 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 99374da..f926658 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "test": "yarn run prettier:tests && yarn run lint:tests && npx hardhat test --deploy-fixture" }, "dependencies": { - "@elastic-dao/sdk": "0.9.0-beta9", + "@elastic-dao/sdk": "0.9.0-beta10", "@nomiclabs/hardhat-ethers": "2.0.1", "@nomiclabs/hardhat-etherscan": "2.1.1", "@nomiclabs/hardhat-waffle": "2.0.1", diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index cc6c309..8228253 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -200,6 +200,40 @@ contract ElasticDAO is ReentryProtection { emit JoinDAO(address(this), msg.sender, _deltaLambda, msg.value); } + function penalize(address[] memory _addresses, uint256[] memory _amounts) + external + onlyController + preventReentry + { + require( + _addresses.length == _amounts.length, + 'ElasticDAO: An amount is required for each address' + ); + + ElasticGovernanceToken tokenContract = ElasticGovernanceToken(_getToken().uuid); + + for (uint256 i = 0; i < _addresses.length; i = SafeMath.add(i, 1)) { + tokenContract.burnShares(_addresses[i], _amounts[i]); + } + } + + function reward(address[] memory _addresses, uint256[] memory _amounts) + external + onlyController + preventReentry + { + require( + _addresses.length == _amounts.length, + 'ElasticDAO: An amount is required for each address' + ); + + ElasticGovernanceToken tokenContract = ElasticGovernanceToken(_getToken().uuid); + + for (uint256 i = 0; i < _addresses.length; i = SafeMath.add(i, 1)) { + tokenContract.mintShares(_addresses[i], _amounts[i]); + } + } + function setController(address _controller) external onlyController preventReentry { require(_controller != address(0), 'ElasticDAO: Address Zero'); diff --git a/test/elasticDAOTests.js b/test/elasticDAOTests.js index ac24bee..a918759 100644 --- a/test/elasticDAOTests.js +++ b/test/elasticDAOTests.js @@ -278,5 +278,59 @@ describe('ElasticDAO: Core', () => { 'SafeMath: subtraction overflow', ); }); + + it('Should allow multiple addresses to be rewarded', async () => { + const { agent } = await signers(); + const addresses = await summoners(); + const amount = 0.1; + const rewards = addresses.map(() => dao.elasticDAO.toEthersBigNumber(amount, 18)); + + const balances = await Promise.all( + addresses.map((address) => dao.elasticGovernanceToken.balanceOfInShares(address)), + ); + const expectedBalances = balances.map((balance) => balance.plus(amount).toNumber()); + + dao.sdk.changeSigner(agent); + + await dao.elasticDAO.contract.reward(addresses, rewards); + + const newBalances = await Promise.all( + addresses.map(async (address) => { + const balance = await dao.elasticGovernanceToken.balanceOfInShares(address); + return balance.toNumber(); + }), + ); + + for (let i = 0; i < expectedBalances.length; i += 1) { + expect(expectedBalances[i]).to.equal(newBalances[i]); + } + }); + + it('Should allow multiple addresses to be penalized', async () => { + const { agent } = await signers(); + const addresses = await summoners(); + const amount = 0.01; + const rewards = addresses.map(() => dao.elasticDAO.toEthersBigNumber(amount, 18)); + + const balances = await Promise.all( + addresses.map((address) => dao.elasticGovernanceToken.balanceOfInShares(address)), + ); + const expectedBalances = balances.map((balance) => balance.minus(amount).toNumber()); + + dao.sdk.changeSigner(agent); + + await dao.elasticDAO.contract.penalize(addresses, rewards); + + const newBalances = await Promise.all( + addresses.map(async (address) => { + const balance = await dao.elasticGovernanceToken.balanceOfInShares(address); + return balance.toNumber(); + }), + ); + + for (let i = 0; i < expectedBalances.length; i += 1) { + expect(expectedBalances[i]).to.equal(newBalances[i]); + } + }); }); }); diff --git a/yarn.lock b/yarn.lock index 9305c6d..9cd097f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,10 +23,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@elastic-dao/sdk@0.9.0-beta9": - version "0.9.0-beta9" - resolved "https://registry.yarnpkg.com/@elastic-dao/sdk/-/sdk-0.9.0-beta9.tgz#99c0975cf2efe9cf40b84de51a5f231ea78bdf74" - integrity sha512-jYibutTtwFTnYr+PMjMK82xADH34J/n3LJWAmsRn5VFlmGazjk+p82lwwyE4sLznjZ5oflsLun3Z8+/TEzIHeA== +"@elastic-dao/sdk@0.9.0-beta10": + version "0.9.0-beta10" + resolved "https://registry.yarnpkg.com/@elastic-dao/sdk/-/sdk-0.9.0-beta10.tgz#21820df62905eefc4345b1f9d01d98f80e59de6e" + integrity sha512-93gu48k5cle9pnA3zh+JrU+tFB2jIXVIzpTUE13B4yWBGjixPGdN0cQxrT545gAQLERbIo8oKJbJTOovQh0/dA== dependencies: "@pie-dao/utils" "^1.0.0" bignumber.js "^9.0.0" From 54b501a9aa8dc26f3cf9c951c5d0daf7a4ed83db Mon Sep 17 00:00:00 2001 From: Arpan Dutta Date: Wed, 10 Feb 2021 22:29:23 +0200 Subject: [PATCH 043/118] refactors to ignore ds_store files --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index cdbd15e..a07d7a8 100644 --- a/.gitignore +++ b/.gitignore @@ -16,4 +16,6 @@ coverage.json .coverage_contracts .coverage_artifacts -miner*.json \ No newline at end of file +miner*.json +.DS_Store +.DS_Store? \ No newline at end of file From 8f8cc557f2458552a8e1bcc97512f970c9262b33 Mon Sep 17 00:00:00 2001 From: Arpan Dutta Date: Wed, 10 Feb 2021 22:33:40 +0200 Subject: [PATCH 044/118] removes existing .DS_Store file --- .DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 .DS_Store diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index 9396a04e4ad81e5d42be2e0347bf7ff8adb518a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK-EPw`82!A4EiDv!fwW!b28oNRY9}TpA*9l^7nJ}Zg5UzsmMqa0$l@wVSCvxK z8{PqU10IDZ;6Zo*IQ}VWvVp`6Ld;)eAIJWVo$uI*V4ShmEekmsBQ%j}h@t`Vsd2kqeo`?gu?W}gE`WjSXZIRjRHo2q5>6l+YtNz;MeE> zBFWqt1&jj!l>*G_yZs(Q(tGQf;KW|*ARQnH6MhSYl7dWc$Fd-{;w>a;XmdmX*wwgD Sh#Hvr5s)&N%qZ|z75D)L1K Date: Thu, 11 Feb 2021 08:20:46 -0500 Subject: [PATCH 045/118] fixes issue in transferFrom of EGT --- src/tokens/ElasticGovernanceToken.sol | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index bdfe6a9..c0bcd63 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -319,9 +319,10 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { if (msg.sender != _from && _allowances[_from][msg.sender] != uint256(-1)) { _allowances[_from][msg.sender] = SafeMath.sub(_allowances[_from][msg.sender], _amount); - _transfer(_from, _to, _amount); - emit Approval(msg.sender, _to, _allowances[_from][msg.sender]); } + + _transfer(_from, _to, _amount); + emit Approval(msg.sender, _to, _allowances[_from][msg.sender]); } // Private From 875899631451d189f658435ea14d189bfe5c11fc Mon Sep 17 00:00:00 2001 From: alleycatdev Date: Thu, 11 Feb 2021 08:34:59 -0500 Subject: [PATCH 046/118] returns true from transferFrom --- src/tokens/ElasticGovernanceToken.sol | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index c0bcd63..5f0f3cf 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -323,6 +323,8 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { _transfer(_from, _to, _amount); emit Approval(msg.sender, _to, _allowances[_from][msg.sender]); + + return true; } // Private From c8e132cdba2b3dc77641481997d9266804a76223 Mon Sep 17 00:00:00 2001 From: alleycatdev Date: Thu, 11 Feb 2021 09:30:11 -0500 Subject: [PATCH 047/118] last little tweak to transferFrom --- src/tokens/ElasticGovernanceToken.sol | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index 5f0f3cf..90f672d 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -317,13 +317,13 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { ) external override preventReentry returns (bool) { require(msg.sender == _from || _amount <= _allowances[_from][msg.sender], 'ERC20: Bad Caller'); + if (msg.sender != _from && _allowances[_from][msg.sender] != uint256(-1)) { _allowances[_from][msg.sender] = SafeMath.sub(_allowances[_from][msg.sender], _amount); + emit Approval(msg.sender, _to, _allowances[_from][msg.sender]); } _transfer(_from, _to, _amount); - emit Approval(msg.sender, _to, _allowances[_from][msg.sender]); - return true; } From 8aac0fcdb0d0d5f5f827abf2879874591dca457b Mon Sep 17 00:00:00 2001 From: Arpan Dutta Date: Thu, 11 Feb 2021 18:20:15 +0200 Subject: [PATCH 048/118] removes deployment of reentryProtection --- deploy/reentryProtection.js | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 deploy/reentryProtection.js diff --git a/deploy/reentryProtection.js b/deploy/reentryProtection.js deleted file mode 100644 index 4c187bd..0000000 --- a/deploy/reentryProtection.js +++ /dev/null @@ -1,15 +0,0 @@ -module.exports = async ({ getNamedAccounts, deployments }) => { - const { deploy, log } = deployments; - const { agent } = await getNamedAccounts(); - - const reentryProtection = await deploy('ReentryProtection', { - from: agent, - args: [], - proxy: true, - }); - - if (reentryProtection.newlyDeployed) { - log(`##### ElasticDAO: Reentry Protectionl has been deployed: ${reentryProtection.address}`); - } -}; -module.exports.tags = ['ReentryProtection']; From 7dd74018f86189a20c9c0e675b34b969cde41c66 Mon Sep 17 00:00:00 2001 From: alleycatdev Date: Sat, 13 Feb 2021 08:35:10 -0500 Subject: [PATCH 049/118] updates deployDaoAndToken to use create2 --- README.md | 8 +++-- src/core/ElasticDAO.sol | 5 ++- src/core/ElasticDAOFactory.sol | 47 +++++++++++++++++++----- src/libraries/Create2.sol | 51 +++++++++++++++++++++++++++ src/tokens/ElasticGovernanceToken.sol | 1 - test/elasticDAOFactoryTest.js | 8 +++-- 6 files changed, 102 insertions(+), 18 deletions(-) create mode 100644 src/libraries/Create2.sol diff --git a/README.md b/README.md index f032d67..5cbfea6 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,6 @@ -# contracts -Elastic DAO Contracts +# Elastic DAO Contracts +Contracts for the Elastic DAO platform. + +This project uses [https://hardhat.io](Hardhat) + + diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index 8228253..578d94a 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -76,19 +76,18 @@ contract ElasticDAO is ReentryProtection { _; } - constructor( + function initialize ( address _ecosystemModelAddress, address _controller, address[] memory _summoners, string memory _name, uint256 _maxVotingLambda - ) { + ) public { require( _ecosystemModelAddress != address(0) || _controller != address(0), 'ElasticDAO: Address Zero' ); require(_summoners.length > 0, 'ElasticDAO: At least 1 summoner required'); - ecosystemModelAddress = _ecosystemModelAddress; controller = _controller; deployer = msg.sender; diff --git a/src/core/ElasticDAOFactory.sol b/src/core/ElasticDAOFactory.sol index d0ecb99..044fa87 100644 --- a/src/core/ElasticDAOFactory.sol +++ b/src/core/ElasticDAOFactory.sol @@ -6,6 +6,11 @@ import './ElasticDAO.sol'; import '../models/Ecosystem.sol'; import '../services/ReentryProtection.sol'; +import '../libraries/Create2.sol'; + +// import 'hardhat-deploy/solc_0.7/proxy/EIP173ProxyWithReceive.sol'; +import 'hardhat-deploy/solc_0.7/proxy/EIP173Proxy.sol'; +import 'hardhat/console.sol'; // This contract is the facory contract for ElasticDAO contract ElasticDAOFactory is ReentryProtection { @@ -57,18 +62,42 @@ contract ElasticDAOFactory is ReentryProtection { uint256 _maxLambdaPurchase, uint256 _maxVotingLambda ) external payable preventReentry { - require(fee == msg.value, 'ElasticDAO: pay up'); - - // create the DAO - ElasticDAO elasticDAO = - new ElasticDAO(ecosystemModelAddress, msg.sender, _summoners, _nameOfDAO, _maxVotingLambda); - - deployedDAOAddresses.push(address(elasticDAO)); + require(fee == msg.value, 'ElasticDAO: A fee is required to deploy a DAO'); + bytes32 salt = keccak256(abi.encode(_nameOfDAO)); + + // compute deployed DAO address + address payable daoAddress = + address(uint160(Create2.computeAddress(salt, type(ElasticDAO).creationCode))); + + // deploy proxy with that address + //EIP173Proxy proxy = new EIP173Proxy(daoAddress, type(ElasticDAO).creationCode, address(this)); + // console.logAddress(address(proxy.owner())); + // console.log('this addres'); + // console.logAddress(address(this)); + + // deploy DAO with computed address and initialize + Create2.deploy(salt, type(ElasticDAO).creationCode); + ElasticDAO(daoAddress).initialize( + ecosystemModelAddress, + address(proxy), + _summoners, + _nameOfDAO, + _maxVotingLambda + ); + + deployedDAOAddresses.push(address(daoAddress)); deployedDAOCount = SafeMath.add(deployedDAOCount, 1); // initialize the token - elasticDAO.initializeToken(_nameOfToken, _symbol, _eByL, _elasticity, _k, _maxLambdaPurchase); - emit DeployedDAO(address(elasticDAO)); + ElasticDAO(daoAddress).initializeToken( + _nameOfToken, + _symbol, + _eByL, + _elasticity, + _k, + _maxLambdaPurchase + ); + emit DeployedDAO(address(daoAddress)); } function updateFee(uint256 amount) external onlyManager preventReentry { diff --git a/src/libraries/Create2.sol b/src/libraries/Create2.sol new file mode 100644 index 0000000..2e94634 --- /dev/null +++ b/src/libraries/Create2.sol @@ -0,0 +1,51 @@ +pragma solidity 0.7.2; + +/** + * @dev Helper to make usage of the `CREATE2` EVM opcode easier and safer. + * `CREATE2` can be used to compute in advance the address where a smart + * contract will be deployed, which allows for interesting new mechanisms known + * as 'counterfactual interactions'. + * + * See the https://eips.ethereum.org/EIPS/eip-1014#motivation[EIP] for more + * information. + * + * _Available since v2.5.0._ OPEN ZEPELIN + */ +library Create2 { + /** + * @dev Deploys a contract using `CREATE2`. The address where the contract + * will be deployed can be known in advance via {computeAddress}. Note that + * a contract cannot be deployed twice using the same salt. + */ + function deploy(bytes32 salt, bytes memory bytecode) internal returns (address) { + address addr; + // solhint-disable-next-line no-inline-assembly + assembly { + addr := create2(0, add(bytecode, 0x20), mload(bytecode), salt) + } + require(addr != address(0), 'Create2: Failed on deploy'); + return addr; + } + + /** + * @dev Returns the address where a contract will be stored if deployed via {deploy}. Any change in the `bytecode` + * or `salt` will result in a new destination address. + */ + function computeAddress(bytes32 salt, bytes memory bytecode) internal view returns (address) { + return computeAddress(salt, bytecode, address(this)); + } + + /** + * @dev Returns the address where a contract will be stored if deployed via {deploy} from a contract located at + * `deployer`. If `deployer` is this contract's address, returns the same value as {computeAddress}. + */ + function computeAddress( + bytes32 salt, + bytes memory bytecodeHash, + address deployer + ) internal pure returns (address) { + bytes32 bytecodeHashHash = keccak256(bytecodeHash); + bytes32 _data = keccak256(abi.encodePacked(bytes1(0xff), deployer, salt, bytecodeHashHash)); + return address(bytes20(_data << 96)); + } +} diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index 90f672d..b2d86f6 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -317,7 +317,6 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { ) external override preventReentry returns (bool) { require(msg.sender == _from || _amount <= _allowances[_from][msg.sender], 'ERC20: Bad Caller'); - if (msg.sender != _from && _allowances[_from][msg.sender] != uint256(-1)) { _allowances[_from][msg.sender] = SafeMath.sub(_allowances[_from][msg.sender], _amount); emit Approval(msg.sender, _to, _allowances[_from][msg.sender]); diff --git a/test/elasticDAOFactoryTest.js b/test/elasticDAOFactoryTest.js index b8ddbff..08bce76 100644 --- a/test/elasticDAOFactoryTest.js +++ b/test/elasticDAOFactoryTest.js @@ -3,7 +3,7 @@ const { expect } = require('chai'); const { newDAO, SDK, signers, summoners } = require('./helpers'); -describe('ElasticDAO: Factory', () => { +describe.only('ElasticDAO: Factory', () => { let sdk; beforeEach(async () => { @@ -12,7 +12,9 @@ describe('ElasticDAO: Factory', () => { it('Should allow a DAO to be deployed using the factory', async () => { const dao = await newDAO(); - expect(dao.uuid).to.not.equal(ethers.constants.AddressZero); + const token = await dao.token(); + + expect(token.symbol).to.equal('EGT'); expect(dao.ecosystem.governanceTokenAddress).to.not.equal(ethers.constants.AddressZero); }); @@ -60,7 +62,7 @@ describe('ElasticDAO: Factory', () => { sdk.elasticDAOFactory.toEthersBigNumber(1, 18), { value: 0 }, ), - ).to.be.revertedWith('ElasticDAO: pay up'); + ).to.be.revertedWith('ElasticDAO: A fee is required to deploy a DAO'); }); it('Should updateFeeAddress', async () => { From c65cc360cac00d8204a976ec2bfe9058837fa7fd Mon Sep 17 00:00:00 2001 From: alleycatdev Date: Sat, 13 Feb 2021 08:36:13 -0500 Subject: [PATCH 050/118] uncomments proxy --- src/core/ElasticDAOFactory.sol | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/core/ElasticDAOFactory.sol b/src/core/ElasticDAOFactory.sol index 044fa87..39cfbe1 100644 --- a/src/core/ElasticDAOFactory.sol +++ b/src/core/ElasticDAOFactory.sol @@ -10,7 +10,6 @@ import '../libraries/Create2.sol'; // import 'hardhat-deploy/solc_0.7/proxy/EIP173ProxyWithReceive.sol'; import 'hardhat-deploy/solc_0.7/proxy/EIP173Proxy.sol'; -import 'hardhat/console.sol'; // This contract is the facory contract for ElasticDAO contract ElasticDAOFactory is ReentryProtection { @@ -70,7 +69,7 @@ contract ElasticDAOFactory is ReentryProtection { address(uint160(Create2.computeAddress(salt, type(ElasticDAO).creationCode))); // deploy proxy with that address - //EIP173Proxy proxy = new EIP173Proxy(daoAddress, type(ElasticDAO).creationCode, address(this)); + EIP173Proxy proxy = new EIP173Proxy(daoAddress, type(ElasticDAO).creationCode, address(this)); // console.logAddress(address(proxy.owner())); // console.log('this addres'); // console.logAddress(address(this)); From 09cd1ca4139f6a4e1c42a0fef766953fe9c2031d Mon Sep 17 00:00:00 2001 From: alleycatdev Date: Sat, 13 Feb 2021 11:26:05 -0500 Subject: [PATCH 051/118] fixes salt collision issue w/ new create2 --- src/core/ElasticDAO.sol | 4 ++-- src/core/ElasticDAOFactory.sol | 17 ++++++++--------- src/libraries/Create2.sol | 9 ++++++--- test/elasticDAOFactoryTest.js | 2 +- test/elasticDAOTests.js | 3 ++- 5 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index 578d94a..edd44f4 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -76,13 +76,13 @@ contract ElasticDAO is ReentryProtection { _; } - function initialize ( + function initialize( address _ecosystemModelAddress, address _controller, address[] memory _summoners, string memory _name, uint256 _maxVotingLambda - ) public { + ) external { require( _ecosystemModelAddress != address(0) || _controller != address(0), 'ElasticDAO: Address Zero' diff --git a/src/core/ElasticDAOFactory.sol b/src/core/ElasticDAOFactory.sol index 39cfbe1..99e1225 100644 --- a/src/core/ElasticDAOFactory.sol +++ b/src/core/ElasticDAOFactory.sol @@ -8,8 +8,9 @@ import '../models/Ecosystem.sol'; import '../services/ReentryProtection.sol'; import '../libraries/Create2.sol'; -// import 'hardhat-deploy/solc_0.7/proxy/EIP173ProxyWithReceive.sol'; -import 'hardhat-deploy/solc_0.7/proxy/EIP173Proxy.sol'; +import 'hardhat-deploy/solc_0.7/proxy/EIP173ProxyWithReceive.sol'; + +// import 'hardhat-deploy/solc_0.7/proxy/EIP173Proxy.sol'; // This contract is the facory contract for ElasticDAO contract ElasticDAOFactory is ReentryProtection { @@ -62,23 +63,21 @@ contract ElasticDAOFactory is ReentryProtection { uint256 _maxVotingLambda ) external payable preventReentry { require(fee == msg.value, 'ElasticDAO: A fee is required to deploy a DAO'); - bytes32 salt = keccak256(abi.encode(_nameOfDAO)); + bytes32 salt = keccak256(abi.encode(_nameOfDAO, deployedDAOCount)); // compute deployed DAO address address payable daoAddress = address(uint160(Create2.computeAddress(salt, type(ElasticDAO).creationCode))); - // deploy proxy with that address - EIP173Proxy proxy = new EIP173Proxy(daoAddress, type(ElasticDAO).creationCode, address(this)); - // console.logAddress(address(proxy.owner())); - // console.log('this addres'); - // console.logAddress(address(this)); + // deploy proxy with the computed dao address + EIP173Proxy proxy = + new EIP173ProxyWithReceive(daoAddress, type(ElasticDAO).creationCode, msg.sender); // deploy DAO with computed address and initialize Create2.deploy(salt, type(ElasticDAO).creationCode); ElasticDAO(daoAddress).initialize( ecosystemModelAddress, - address(proxy), + proxy.owner(), _summoners, _nameOfDAO, _maxVotingLambda diff --git a/src/libraries/Create2.sol b/src/libraries/Create2.sol index 2e94634..c5fee91 100644 --- a/src/libraries/Create2.sol +++ b/src/libraries/Create2.sol @@ -28,7 +28,8 @@ library Create2 { } /** - * @dev Returns the address where a contract will be stored if deployed via {deploy}. Any change in the `bytecode` + * @dev Returns the address where a contract will be stored if deployed via {deploy}. + Any change in the `bytecode` * or `salt` will result in a new destination address. */ function computeAddress(bytes32 salt, bytes memory bytecode) internal view returns (address) { @@ -36,8 +37,10 @@ library Create2 { } /** - * @dev Returns the address where a contract will be stored if deployed via {deploy} from a contract located at - * `deployer`. If `deployer` is this contract's address, returns the same value as {computeAddress}. + * @dev Returns the address where a contract will be stored if deployed via {deploy} from a + contract located at + * `deployer`. If `deployer` is this contract's address, + returns the same value as {computeAddress}. */ function computeAddress( bytes32 salt, diff --git a/test/elasticDAOFactoryTest.js b/test/elasticDAOFactoryTest.js index 08bce76..ee5bfab 100644 --- a/test/elasticDAOFactoryTest.js +++ b/test/elasticDAOFactoryTest.js @@ -3,7 +3,7 @@ const { expect } = require('chai'); const { newDAO, SDK, signers, summoners } = require('./helpers'); -describe.only('ElasticDAO: Factory', () => { +describe('ElasticDAO: Factory', () => { let sdk; beforeEach(async () => { diff --git a/test/elasticDAOTests.js b/test/elasticDAOTests.js index a918759..3b9e86e 100644 --- a/test/elasticDAOTests.js +++ b/test/elasticDAOTests.js @@ -20,7 +20,8 @@ describe('ElasticDAO: Core', () => { ]; const ElasticDAO = await hre.getContractFactory('ElasticDAO'); - const elasticDAO = await ElasticDAO.deploy(...args); + const elasticDAO = await ElasticDAO.deploy(); + await elasticDAO.initialize(...args); dao = await sdk.models.DAO.deserialize(elasticDAO.address); }); From ad06b55746161fbf4a4450a718141b98e085b272 Mon Sep 17 00:00:00 2001 From: alleycatdev Date: Sat, 13 Feb 2021 11:34:43 -0500 Subject: [PATCH 052/118] switches to a proxy with receive --- src/core/ElasticDAOFactory.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/ElasticDAOFactory.sol b/src/core/ElasticDAOFactory.sol index 99e1225..c839847 100644 --- a/src/core/ElasticDAOFactory.sol +++ b/src/core/ElasticDAOFactory.sol @@ -70,7 +70,7 @@ contract ElasticDAOFactory is ReentryProtection { address(uint160(Create2.computeAddress(salt, type(ElasticDAO).creationCode))); // deploy proxy with the computed dao address - EIP173Proxy proxy = + EIP173ProxyWithReceive proxy = new EIP173ProxyWithReceive(daoAddress, type(ElasticDAO).creationCode, msg.sender); // deploy DAO with computed address and initialize From d7e429bf48c100af79dd60d20d7a694ca018913f Mon Sep 17 00:00:00 2001 From: alleycatdev Date: Sun, 14 Feb 2021 11:55:54 -0500 Subject: [PATCH 053/118] updates Elastic Governance Token to be upgradeable via proxy and deploys it using Create2 --- src/core/ElasticDAO.sol | 20 +++++++++++++------- src/core/ElasticDAOFactory.sol | 6 +++--- src/services/Configurator.sol | 23 ++++++++++++++++++++++- src/tokens/ElasticGovernanceToken.sol | 14 +++++++++++--- test/elasticDAOTests.js | 15 +++++++++++++++ 5 files changed, 64 insertions(+), 14 deletions(-) diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index edd44f4..42f00a6 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -122,7 +122,8 @@ contract ElasticDAO is ReentryProtection { uint256 _eByL, uint256 _elasticity, uint256 _k, - uint256 _maxLambdaPurchase + uint256 _maxLambdaPurchase, + bytes32 _salt ) external onlyBeforeSummoning onlyDeployer preventReentry { require(msg.sender == deployer, 'ElasticDAO: Only deployer can initialize the Token'); Ecosystem.Instance memory ecosystem = _getEcosystem(); @@ -135,12 +136,15 @@ contract ElasticDAO is ReentryProtection { _elasticity, _k, _maxLambdaPurchase, + _salt, ecosystem ); ElasticGovernanceToken tokenContract = ElasticGovernanceToken(token.uuid); - tokenContract.setBurner(controller); - tokenContract.setMinter(controller); + bool success = tokenContract.setBurner(controller); + require(success, 'ElasticDAO: Set Burner failed during initialize token'); + success = tokenContract.setMinter(controller); + require(success, 'ElasticDAO: Set Minter failed during initialize token'); emit ElasticGovernanceTokenDeployed(token.uuid); } @@ -194,8 +198,8 @@ contract ElasticDAO is ReentryProtection { tokenStorage.serialize(token); // tokencontract mint shares - tokenContract.mintShares(msg.sender, _deltaLambda); - + bool success = tokenContract.mintShares(msg.sender, _deltaLambda); + require(success, 'ElasticDAO: Mint Shares Failed during Join'); emit JoinDAO(address(this), msg.sender, _deltaLambda, msg.value); } @@ -238,8 +242,10 @@ contract ElasticDAO is ReentryProtection { controller = _controller; ElasticGovernanceToken tokenContract = ElasticGovernanceToken(_getToken().uuid); - tokenContract.setBurner(controller); - tokenContract.setMinter(controller); + bool success = tokenContract.setBurner(controller); + require(success, 'ElasticDAO: Set Burner failed during setController'); + success = tokenContract.setMinter(controller); + require(success, 'ElasticDAO: Set Minter failed during setController'); emit ControllerChanged(address(this), 'setController', controller); } diff --git a/src/core/ElasticDAOFactory.sol b/src/core/ElasticDAOFactory.sol index c839847..bbc836c 100644 --- a/src/core/ElasticDAOFactory.sol +++ b/src/core/ElasticDAOFactory.sol @@ -7,7 +7,6 @@ import './ElasticDAO.sol'; import '../models/Ecosystem.sol'; import '../services/ReentryProtection.sol'; import '../libraries/Create2.sol'; - import 'hardhat-deploy/solc_0.7/proxy/EIP173ProxyWithReceive.sol'; // import 'hardhat-deploy/solc_0.7/proxy/EIP173Proxy.sol'; @@ -63,7 +62,7 @@ contract ElasticDAOFactory is ReentryProtection { uint256 _maxVotingLambda ) external payable preventReentry { require(fee == msg.value, 'ElasticDAO: A fee is required to deploy a DAO'); - bytes32 salt = keccak256(abi.encode(_nameOfDAO, deployedDAOCount)); + bytes32 salt = keccak256(abi.encode(msg.sender, deployedDAOCount)); // compute deployed DAO address address payable daoAddress = @@ -93,7 +92,8 @@ contract ElasticDAOFactory is ReentryProtection { _eByL, _elasticity, _k, - _maxLambdaPurchase + _maxLambdaPurchase, + salt ); emit DeployedDAO(address(daoAddress)); } diff --git a/src/services/Configurator.sol b/src/services/Configurator.sol index d3911af..f91896e 100644 --- a/src/services/Configurator.sol +++ b/src/services/Configurator.sol @@ -7,6 +7,8 @@ import '../models/Ecosystem.sol'; import '../models/Token.sol'; import '../tokens/ElasticGovernanceToken.sol'; +import 'hardhat-deploy/solc_0.7/proxy/EIP173Proxy.sol'; +import '../libraries/Create2.sol'; /// @author ElasticDAO - https://ElasticDAO.org /// @notice This contract is used for configuring ElasticDAOs @@ -84,6 +86,7 @@ contract Configurator { uint256 _elasticity, uint256 _k, uint256 _maxLambdaPurchase, + bytes32 _salt, Ecosystem.Instance memory _ecosystem ) external returns (Token.Instance memory token) { Token tokenStorage = Token(_ecosystem.tokenModelAddress); @@ -96,9 +99,27 @@ contract Configurator { token.maxLambdaPurchase = _maxLambdaPurchase; token.name = _name; token.symbol = _symbol; - token.uuid = address(new ElasticGovernanceToken(msg.sender, _ecosystem.ecosystemModelAddress)); + // deploy new token with create2 and set the computed address as uuid + address tokenAddress = Create2.computeAddress(_salt, type(ElasticGovernanceToken).creationCode); + // set token uuid to computed address + token.uuid = tokenAddress; + // create upgradeable ERC20 proxy + EIP173Proxy proxy = + new EIP173Proxy( + tokenAddress, + type(ElasticGovernanceToken).creationCode, + _ecosystem.daoAddress + ); + // deploy the new elastic governance token + Create2.deploy(_salt, type(ElasticGovernanceToken).creationCode); + // initialize the token within the ecosystem + ElasticGovernanceToken(tokenAddress).initialize( + proxy.owner(), + _ecosystem.ecosystemModelAddress + ); _ecosystem.governanceTokenAddress = token.uuid; + // serialize ecosystem Ecosystem(_ecosystem.ecosystemModelAddress).serialize(_ecosystem); tokenStorage.serialize(token); diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index b2d86f6..07efc27 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -41,7 +41,9 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { _; } - constructor(address _daoAddress, address _ecosystemModelAddress) IERC20() { + constructor() IERC20() {} + + function initialize(address _daoAddress, address _ecosystemModelAddress) external returns (bool) { require(_daoAddress != address(0), 'ElasticDAO: Address Zero'); require(_ecosystemModelAddress != address(0), 'ElasticDAO: Address Zero'); @@ -49,6 +51,8 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { daoAddress = _daoAddress; ecosystemModelAddress = _ecosystemModelAddress; minter = _daoAddress; + + return true; } /** @@ -247,16 +251,20 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { return _getToken().numberOfTokenHolders; } - function setBurner(address _burner) external onlyDAO preventReentry { + function setBurner(address _burner) external onlyDAO preventReentry returns (bool) { require(_burner != address(0), 'ElasticDAO: Address Zero'); burner = _burner; + + return true; } - function setMinter(address _minter) external onlyDAO preventReentry { + function setMinter(address _minter) external onlyDAO preventReentry returns (bool) { require(_minter != address(0), 'ElasticDAO: Address Zero'); minter = _minter; + + return true; } /** diff --git a/test/elasticDAOTests.js b/test/elasticDAOTests.js index 3b9e86e..59e371d 100644 --- a/test/elasticDAOTests.js +++ b/test/elasticDAOTests.js @@ -6,6 +6,8 @@ const { ethBalance, SDK, signers, summoners, summonedDAO } = require('./helpers' describe('ElasticDAO: Core', () => { let dao; + let salt; + let mockDeployedDAOCount = 0; describe('before summoning', () => { beforeEach(async () => { @@ -21,6 +23,11 @@ describe('ElasticDAO: Core', () => { const ElasticDAO = await hre.getContractFactory('ElasticDAO'); const elasticDAO = await ElasticDAO.deploy(); + mockDeployedDAOCount += 1; + salt = ethers.utils.solidityKeccak256( + ['address', 'uint'], + [summoner1.address, mockDeployedDAOCount], + ); await elasticDAO.initialize(...args); dao = await sdk.models.DAO.deserialize(elasticDAO.address); @@ -34,6 +41,7 @@ describe('ElasticDAO: Core', () => { dao.toEthersBigNumber(0.02, 18), dao.toEthersBigNumber(100, 18), ethers.constants.WeiPerEther, + salt, ); await dao.ecosystem.refresh(); @@ -53,6 +61,7 @@ describe('ElasticDAO: Core', () => { dao.toEthersBigNumber(0.02, 18), dao.toEthersBigNumber(100, 18), ethers.constants.WeiPerEther, + salt, ), ).to.be.revertedWith('ElasticDAO: Only deployer'); }); @@ -65,6 +74,7 @@ describe('ElasticDAO: Core', () => { dao.toEthersBigNumber(0.02, 18), dao.toEthersBigNumber(100, 18), ethers.constants.WeiPerEther, + salt, ); const { summoner1 } = await signers(); @@ -84,6 +94,7 @@ describe('ElasticDAO: Core', () => { dao.toEthersBigNumber(0.02, 18), dao.toEthersBigNumber(100, 18), ethers.constants.WeiPerEther, // lambda + salt, ); const { summoner1 } = await signers(); @@ -122,6 +133,7 @@ describe('ElasticDAO: Core', () => { dao.toEthersBigNumber(0.02, 18), dao.toEthersBigNumber(100, 18), ethers.constants.WeiPerEther, // lambda + salt, ); await expect( @@ -137,6 +149,7 @@ describe('ElasticDAO: Core', () => { dao.toEthersBigNumber(0.02, 18), dao.toEthersBigNumber(100, 18), ethers.constants.WeiPerEther, + salt, ); const { agent, summoner1 } = await signers(); @@ -157,6 +170,7 @@ describe('ElasticDAO: Core', () => { dao.toEthersBigNumber(0.02, 18), dao.toEthersBigNumber(100, 18), ethers.constants.WeiPerEther, + salt, ); const { summoner1, summoner2, summoner3 } = await signers(); @@ -218,6 +232,7 @@ describe('ElasticDAO: Core', () => { dao.toEthersBigNumber(0.02, 18), dao.toEthersBigNumber(100, 18), ethers.constants.WeiPerEther, + salt, ), ).to.be.revertedWith('ElasticDAO: DAO must not be summoned'); }); From db2b6716ae528c1a5c47b95a8f1678f4897a115a Mon Sep 17 00:00:00 2001 From: alleycatdev Date: Thu, 18 Feb 2021 14:34:04 -0500 Subject: [PATCH 054/118] fixes proxy issues --- deploy/elasticDAOFactory.js | 14 ++++++++++++-- deploy/initialDeployment.js | 10 +++++----- package.json | 2 +- src/core/ElasticDAO.sol | 6 +++++- src/core/ElasticDAOFactory.sol | 14 +++++++++----- src/tokens/ElasticGovernanceToken.sol | 9 ++++++++- test/capitalDeltaTest.js | 2 +- test/ecosystemTests.js | 10 +++++----- test/elasticDAOTests.js | 2 +- test/env.js | 10 +++++----- yarn.lock | 8 ++++---- 11 files changed, 56 insertions(+), 31 deletions(-) diff --git a/deploy/elasticDAOFactory.js b/deploy/elasticDAOFactory.js index c96df09..fe9219c 100644 --- a/deploy/elasticDAOFactory.js +++ b/deploy/elasticDAOFactory.js @@ -1,15 +1,25 @@ +const { ethers } = require('ethers'); +const hre = require('hardhat').ethers; + module.exports = async ({ getNamedAccounts, deployments }) => { const { deploy, log } = deployments; const { agent } = await getNamedAccounts(); - const Ecosystem = await deployments.get('Ecosystem_Implementation'); + const Ecosystem = await deployments.get('Ecosystem'); const elasticDAOFactory = await deploy('ElasticDAOFactory', { from: agent, - args: [Ecosystem.address], + args: [], proxy: true, }); + const factory = new ethers.Contract( + elasticDAOFactory.address, + elasticDAOFactory.abi, + hre.provider.getSigner(agent), + ); + await factory.initialize(Ecosystem.address); + if (elasticDAOFactory.newlyDeployed) { log(`##### ElasticDAO: ElasticDAOFactory has been deployed: ${elasticDAOFactory.address}`); } diff --git a/deploy/initialDeployment.js b/deploy/initialDeployment.js index 4bad7d3..0c75a61 100644 --- a/deploy/initialDeployment.js +++ b/deploy/initialDeployment.js @@ -5,16 +5,16 @@ module.exports = async ({ getNamedAccounts, deployments }) => { const { log } = deployments; const { agent } = await getNamedAccounts(); - const Configurator = await deployments.get('Configurator_Implementation'); - const Dao = await deployments.get('DAO_Implementation'); - const Ecosystem = await deployments.get('Ecosystem_Implementation'); + const Configurator = await deployments.get('Configurator'); + const Dao = await deployments.get('DAO'); + const Ecosystem = await deployments.get('Ecosystem'); const ecosystemStorage = new ethers.Contract( Ecosystem.address, Ecosystem.abi, hre.provider.getSigner(agent), ); - const Token = await deployments.get('Token_Implementation'); - const TokenHolder = await deployments.get('TokenHolder_Implementation'); + const Token = await deployments.get('Token'); + const TokenHolder = await deployments.get('TokenHolder'); const ecosystemStructArray = [ ethers.constants.AddressZero, diff --git a/package.json b/package.json index f926658..99374da 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "test": "yarn run prettier:tests && yarn run lint:tests && npx hardhat test --deploy-fixture" }, "dependencies": { - "@elastic-dao/sdk": "0.9.0-beta10", + "@elastic-dao/sdk": "0.9.0-beta9", "@nomiclabs/hardhat-ethers": "2.0.1", "@nomiclabs/hardhat-etherscan": "2.1.1", "@nomiclabs/hardhat-waffle": "2.0.1", diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index 42f00a6..e605532 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -18,6 +18,7 @@ contract ElasticDAO is ReentryProtection { address public controller; address[] public summoners; uint256 public maxVotingLambda; + bool public initialized; event ElasticGovernanceTokenDeployed(address indexed tokenAddress); event MaxVotingLambdaChanged(address indexed daoAddress, bytes32 settingName, uint256 value); @@ -82,7 +83,9 @@ contract ElasticDAO is ReentryProtection { address[] memory _summoners, string memory _name, uint256 _maxVotingLambda - ) external { + ) external preventReentry { + require(initialized == false, 'ElasticDAO: Already initialized'); + require( _ecosystemModelAddress != address(0) || _controller != address(0), 'ElasticDAO: Address Zero' @@ -98,6 +101,7 @@ contract ElasticDAO is ReentryProtection { Configurator configurator = Configurator(defaults.configuratorAddress); Ecosystem.Instance memory ecosystem = configurator.buildEcosystem(defaults); bool success = configurator.buildDAO(_summoners, _name, ecosystem); + initialized = true; require(success, 'ElasticDAO: Build DAO Failed'); } diff --git a/src/core/ElasticDAOFactory.sol b/src/core/ElasticDAOFactory.sol index bbc836c..6c36210 100644 --- a/src/core/ElasticDAOFactory.sol +++ b/src/core/ElasticDAOFactory.sol @@ -8,8 +8,7 @@ import '../models/Ecosystem.sol'; import '../services/ReentryProtection.sol'; import '../libraries/Create2.sol'; import 'hardhat-deploy/solc_0.7/proxy/EIP173ProxyWithReceive.sol'; - -// import 'hardhat-deploy/solc_0.7/proxy/EIP173Proxy.sol'; +import 'hardhat/console.sol'; // This contract is the facory contract for ElasticDAO contract ElasticDAOFactory is ReentryProtection { @@ -17,8 +16,9 @@ contract ElasticDAOFactory is ReentryProtection { address public manager; address payable feeAddress; address[] public deployedDAOAddresses; - uint256 public deployedDAOCount = 0; - uint256 public fee = 250000000000000000; + uint256 public deployedDAOCount; + uint256 public fee; + bool public initialized = false; event DeployedDAO(address indexed daoAddress); event FeeAddressUpdated(address indexed feeReceiver); @@ -31,10 +31,14 @@ contract ElasticDAOFactory is ReentryProtection { _; } - constructor(address _ecosystemModelAddress) { + function initialize(address _ecosystemModelAddress) external preventReentry { + require(initialized == false, 'ElasticDAO: Factory already initialized'); require(_ecosystemModelAddress != address(0), 'ElasticDAO: Address Zero'); + initialized = true; manager = msg.sender; + deployedDAOCount = 0; + fee = 250000000000000000; ecosystemModelAddress = _ecosystemModelAddress; } diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index 07efc27..769e895 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -23,6 +23,7 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { address public daoAddress; address public ecosystemModelAddress; address public minter; + bool public initialized; mapping(address => mapping(address => uint256)) private _allowances; @@ -43,10 +44,16 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { constructor() IERC20() {} - function initialize(address _daoAddress, address _ecosystemModelAddress) external returns (bool) { + function initialize(address _daoAddress, address _ecosystemModelAddress) + external + preventReentry + returns (bool) + { + require(initialized == false, 'ElasticDAO: Already initialized'); require(_daoAddress != address(0), 'ElasticDAO: Address Zero'); require(_ecosystemModelAddress != address(0), 'ElasticDAO: Address Zero'); + initialized = true; burner = _daoAddress; daoAddress = _daoAddress; ecosystemModelAddress = _ecosystemModelAddress; diff --git a/test/capitalDeltaTest.js b/test/capitalDeltaTest.js index 0d0809e..5706964 100644 --- a/test/capitalDeltaTest.js +++ b/test/capitalDeltaTest.js @@ -2,8 +2,8 @@ const { expect } = require('chai'); const { capitalDelta, deltaE, mDash } = require('@elastic-dao/sdk'); const BigNumber = require('bignumber.js'); -const { ONE } = require('./constants'); +const { ONE } = require('./constants'); const { ethBalance, signers, summonedDAO } = require('./helpers'); describe('ElasticDAO: CapitalDelta value of a token', () => { diff --git a/test/ecosystemTests.js b/test/ecosystemTests.js index 0213281..1614ff3 100644 --- a/test/ecosystemTests.js +++ b/test/ecosystemTests.js @@ -16,12 +16,12 @@ describe('ElasticDAO: Ecosystem Model', () => { [agent] = await hre.getSigners(); // setup needed contracts - Configurator = await deployments.get('Configurator_Implementation'); - Dao = await deployments.get('DAO_Implementation'); - Ecosystem = await deployments.get('Ecosystem_Implementation'); + Configurator = await deployments.get('Configurator'); + Dao = await deployments.get('DAO'); + Ecosystem = await deployments.get('Ecosystem'); ecosystemStorage = new ethers.Contract(Ecosystem.address, Ecosystem.abi, agent); - TokenHolder = await deployments.get('TokenHolder_Implementation'); - Token = await deployments.get('Token_Implementation'); + TokenHolder = await deployments.get('TokenHolder'); + Token = await deployments.get('Token'); }); it('Should look up and return ecosystem instance record by uuid address', async () => { diff --git a/test/elasticDAOTests.js b/test/elasticDAOTests.js index 59e371d..c694d5e 100644 --- a/test/elasticDAOTests.js +++ b/test/elasticDAOTests.js @@ -204,7 +204,7 @@ describe('ElasticDAO: Core', () => { it('Should check to see if a instance record exists by daoAddress', async () => { const { agent } = await signers(); - const DAOModel = await deployments.get('DAO_Implementation'); + const DAOModel = await deployments.get('DAO'); const DAOModelStorage = new ethers.Contract(DAOModel.address, DAOModel.abi, agent); const ecosystem = await dao.elasticDAO.contract.getEcosystem(); const recordDoesntExist = await DAOModelStorage.exists( diff --git a/test/env.js b/test/env.js index cb3978c..88e12e1 100644 --- a/test/env.js +++ b/test/env.js @@ -2,11 +2,11 @@ const { deployments } = require('hardhat'); module.exports = async () => { const [DAO, Ecosystem, Factory, Token, TokenHolder] = await Promise.all([ - deployments.get('DAO_Implementation'), - deployments.get('Ecosystem_Implementation'), - deployments.get('ElasticDAOFactory_Implementation'), - deployments.get('Token_Implementation'), - deployments.get('TokenHolder_Implementation'), + deployments.get('DAO'), + deployments.get('Ecosystem'), + deployments.get('ElasticDAOFactory'), + deployments.get('Token'), + deployments.get('TokenHolder'), ]); const env = { elasticDAO: { diff --git a/yarn.lock b/yarn.lock index 9cd097f..9305c6d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,10 +23,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@elastic-dao/sdk@0.9.0-beta10": - version "0.9.0-beta10" - resolved "https://registry.yarnpkg.com/@elastic-dao/sdk/-/sdk-0.9.0-beta10.tgz#21820df62905eefc4345b1f9d01d98f80e59de6e" - integrity sha512-93gu48k5cle9pnA3zh+JrU+tFB2jIXVIzpTUE13B4yWBGjixPGdN0cQxrT545gAQLERbIo8oKJbJTOovQh0/dA== +"@elastic-dao/sdk@0.9.0-beta9": + version "0.9.0-beta9" + resolved "https://registry.yarnpkg.com/@elastic-dao/sdk/-/sdk-0.9.0-beta9.tgz#99c0975cf2efe9cf40b84de51a5f231ea78bdf74" + integrity sha512-jYibutTtwFTnYr+PMjMK82xADH34J/n3LJWAmsRn5VFlmGazjk+p82lwwyE4sLznjZ5oflsLun3Z8+/TEzIHeA== dependencies: "@pie-dao/utils" "^1.0.0" bignumber.js "^9.0.0" From 077201976a04f1e369841a52059df77ee3641af0 Mon Sep 17 00:00:00 2001 From: alleycatdev Date: Thu, 18 Feb 2021 15:24:42 -0500 Subject: [PATCH 055/118] updates hardhat-deploy --- deploy/elasticDAOFactory.js | 4 +++- package.json | 2 +- yarn.lock | 8 ++++---- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/deploy/elasticDAOFactory.js b/deploy/elasticDAOFactory.js index fe9219c..79c184a 100644 --- a/deploy/elasticDAOFactory.js +++ b/deploy/elasticDAOFactory.js @@ -10,7 +10,9 @@ module.exports = async ({ getNamedAccounts, deployments }) => { const elasticDAOFactory = await deploy('ElasticDAOFactory', { from: agent, args: [], - proxy: true, + proxy: { + proxyContract: "EIP173ProxyWithReceive" + }, }); const factory = new ethers.Contract( diff --git a/package.json b/package.json index 99374da..cb2a02c 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "ethers": "5.0.26", "hardhat": "2.0.8", "hardhat-contract-sizer": "2.0.2", - "hardhat-deploy": "^0.7.0-beta.44", + "hardhat-deploy": "^0.7.0-beta.45", "hardhat-gas-reporter": "1.0.4", "scrypt": "6.0.3", "solc": "0.7.2", diff --git a/yarn.lock b/yarn.lock index 9305c6d..e5c5100 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4665,10 +4665,10 @@ hardhat-contract-sizer@2.0.2: cli-table3 "^0.6.0" colors "^1.4.0" -hardhat-deploy@^0.7.0-beta.44: - version "0.7.0-beta.44" - resolved "https://registry.yarnpkg.com/hardhat-deploy/-/hardhat-deploy-0.7.0-beta.44.tgz#e03eb60765d4ecc3711dc7aadaba60c64b1d381c" - integrity sha512-eIM8RrLDgD12wINTdduYshxqNP/uz9qMCgao37jl6iiZ2LwHkNTL/X+RtTVfq/vS7bvLW7qpjymHJiak5rd1Pg== +hardhat-deploy@^0.7.0-beta.45: + version "0.7.0-beta.45" + resolved "https://registry.yarnpkg.com/hardhat-deploy/-/hardhat-deploy-0.7.0-beta.45.tgz#fa81f3368e83b0195323da9fd04923c80e968e90" + integrity sha512-pWl11O3X92kE88P5pQfPTxpM9tBes0RGD78JygQpiE0lOFaO0vm65H1dLX1F63gKyW+IMXM0Kf7xRAwSLtt7nQ== dependencies: "@ethersproject/abi" "^5.0.2" "@ethersproject/abstract-signer" "^5.0.2" From 407d5da76a29472ed1ae0d447b3a29ea2aefb938 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Fri, 19 Feb 2021 13:13:27 +0200 Subject: [PATCH 056/118] locks versions, adds openzeppelin --- package.json | 7 ++++--- yarn.lock | 5 +++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index cb2a02c..db8c20d 100644 --- a/package.json +++ b/package.json @@ -29,17 +29,18 @@ "@nomiclabs/hardhat-ethers": "2.0.1", "@nomiclabs/hardhat-etherscan": "2.1.1", "@nomiclabs/hardhat-waffle": "2.0.1", + "@openzeppelin/contracts": "3.4.0", "bignumber.js": "9.0.1", - "dotenv": "^8.2.0", + "dotenv": "8.2.0", "ethereum-waffle": "3.2.1", "ethers": "5.0.26", "hardhat": "2.0.8", "hardhat-contract-sizer": "2.0.2", - "hardhat-deploy": "^0.7.0-beta.45", + "hardhat-deploy": "0.7.0-beta.45", "hardhat-gas-reporter": "1.0.4", "scrypt": "6.0.3", "solc": "0.7.2", - "solidity-coverage": "^0.7.14" + "solidity-coverage": "0.7.14" }, "devDependencies": { "chai": "4.2.0", diff --git a/yarn.lock b/yarn.lock index e5c5100..43ca874 100644 --- a/yarn.lock +++ b/yarn.lock @@ -534,6 +534,11 @@ "@types/sinon-chai" "^3.2.3" "@types/web3" "1.0.19" +"@openzeppelin/contracts@^3.4.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-3.4.0.tgz#9a1669ad5f9fdfb6e273bb5a4fed10cb4cc35eb0" + integrity sha512-qh+EiHWzfY/9CORr+eRUkeEUP1WiFUcq3974bLHwyYzLBUtK6HPaMkIUHi74S1rDTZ0sNz42DwPc5A4IJvN3rg== + "@pie-dao/utils@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@pie-dao/utils/-/utils-1.0.0.tgz#c504c080c5f3a8b0fba0e8d12d0881421ec2cec4" From 41464d7ff70d869356894c5ce524214fc5011ae6 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Fri, 19 Feb 2021 13:40:11 +0200 Subject: [PATCH 057/118] cleans up and documents SafeMath, efficiency improvements --- src/libraries/SafeMath.sol | 29 ++++++++--------------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/src/libraries/SafeMath.sol b/src/libraries/SafeMath.sol index 968b74c..71ba2cb 100644 --- a/src/libraries/SafeMath.sol +++ b/src/libraries/SafeMath.sol @@ -43,27 +43,8 @@ library SafeMath { * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { - return sub(a, b, 'SafeMath: subtraction overflow'); - } - - /** - * @dev Returns the subtraction of two unsigned integers, reverting with custom message on - * overflow (when the result is negative). - * - * Counterpart to Solidity's `-` operator. - * - * Requirements: - * - * - Subtraction cannot overflow. - */ - function sub( - uint256 a, - uint256 b, - string memory errorMessage - ) internal pure returns (uint256) { - require(b <= a, errorMessage); + require(b <= a, 'SafeMath: subtraction overflow'); uint256 c = a - b; - return c; } @@ -91,6 +72,12 @@ library SafeMath { return c; } + /** + * @dev Returns one unsigned integer to the power of another, reverting on + * a multiplication overflow. + * + * Counterpart to Solidity's `**` operator. + */ function pow(uint256 base, uint256 exponent) internal pure returns (uint256) { if (exponent == 0) { return 1; @@ -100,7 +87,7 @@ library SafeMath { return 0; } else { uint256 z = base; - for (uint256 i = 1; i < exponent; i = add(i, 1)) z = mul(z, base); + for (uint256 i = 1; i < exponent; i += 1) z = mul(z, base); return z; } } From 4c423fd3bd54ba2107e5fbf8d5a13713906dc568 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Fri, 19 Feb 2021 14:08:29 +0200 Subject: [PATCH 058/118] replaces custom clone and own create 2 with OpenZeppelin audited version --- src/core/ElasticDAO.sol | 2 +- src/core/ElasticDAOFactory.sol | 7 ++--- src/libraries/Create2.sol | 54 ---------------------------------- src/services/Configurator.sol | 6 ++-- 4 files changed, 7 insertions(+), 62 deletions(-) delete mode 100644 src/libraries/Create2.sol diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index e605532..4f78809 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -8,9 +8,9 @@ import '../libraries/SafeMath.sol'; import '../models/DAO.sol'; import '../models/Ecosystem.sol'; import '../models/Token.sol'; -import '../services/ReentryProtection.sol'; import '../services/Configurator.sol'; +import '../services/ReentryProtection.sol'; contract ElasticDAO is ReentryProtection { address public deployer; diff --git a/src/core/ElasticDAOFactory.sol b/src/core/ElasticDAOFactory.sol index 6c36210..d126287 100644 --- a/src/core/ElasticDAOFactory.sol +++ b/src/core/ElasticDAOFactory.sol @@ -6,9 +6,8 @@ import './ElasticDAO.sol'; import '../models/Ecosystem.sol'; import '../services/ReentryProtection.sol'; -import '../libraries/Create2.sol'; +import '@openzeppelin/contracts/utils/Create2.sol'; import 'hardhat-deploy/solc_0.7/proxy/EIP173ProxyWithReceive.sol'; -import 'hardhat/console.sol'; // This contract is the facory contract for ElasticDAO contract ElasticDAOFactory is ReentryProtection { @@ -70,14 +69,14 @@ contract ElasticDAOFactory is ReentryProtection { // compute deployed DAO address address payable daoAddress = - address(uint160(Create2.computeAddress(salt, type(ElasticDAO).creationCode))); + address(uint160(Create2.computeAddress(salt, keccak256(type(ElasticDAO).creationCode)))); // deploy proxy with the computed dao address EIP173ProxyWithReceive proxy = new EIP173ProxyWithReceive(daoAddress, type(ElasticDAO).creationCode, msg.sender); // deploy DAO with computed address and initialize - Create2.deploy(salt, type(ElasticDAO).creationCode); + Create2.deploy(0, salt, type(ElasticDAO).creationCode); ElasticDAO(daoAddress).initialize( ecosystemModelAddress, proxy.owner(), diff --git a/src/libraries/Create2.sol b/src/libraries/Create2.sol deleted file mode 100644 index c5fee91..0000000 --- a/src/libraries/Create2.sol +++ /dev/null @@ -1,54 +0,0 @@ -pragma solidity 0.7.2; - -/** - * @dev Helper to make usage of the `CREATE2` EVM opcode easier and safer. - * `CREATE2` can be used to compute in advance the address where a smart - * contract will be deployed, which allows for interesting new mechanisms known - * as 'counterfactual interactions'. - * - * See the https://eips.ethereum.org/EIPS/eip-1014#motivation[EIP] for more - * information. - * - * _Available since v2.5.0._ OPEN ZEPELIN - */ -library Create2 { - /** - * @dev Deploys a contract using `CREATE2`. The address where the contract - * will be deployed can be known in advance via {computeAddress}. Note that - * a contract cannot be deployed twice using the same salt. - */ - function deploy(bytes32 salt, bytes memory bytecode) internal returns (address) { - address addr; - // solhint-disable-next-line no-inline-assembly - assembly { - addr := create2(0, add(bytecode, 0x20), mload(bytecode), salt) - } - require(addr != address(0), 'Create2: Failed on deploy'); - return addr; - } - - /** - * @dev Returns the address where a contract will be stored if deployed via {deploy}. - Any change in the `bytecode` - * or `salt` will result in a new destination address. - */ - function computeAddress(bytes32 salt, bytes memory bytecode) internal view returns (address) { - return computeAddress(salt, bytecode, address(this)); - } - - /** - * @dev Returns the address where a contract will be stored if deployed via {deploy} from a - contract located at - * `deployer`. If `deployer` is this contract's address, - returns the same value as {computeAddress}. - */ - function computeAddress( - bytes32 salt, - bytes memory bytecodeHash, - address deployer - ) internal pure returns (address) { - bytes32 bytecodeHashHash = keccak256(bytecodeHash); - bytes32 _data = keccak256(abi.encodePacked(bytes1(0xff), deployer, salt, bytecodeHashHash)); - return address(bytes20(_data << 96)); - } -} diff --git a/src/services/Configurator.sol b/src/services/Configurator.sol index f91896e..b94e7f7 100644 --- a/src/services/Configurator.sol +++ b/src/services/Configurator.sol @@ -8,7 +8,7 @@ import '../models/Token.sol'; import '../tokens/ElasticGovernanceToken.sol'; import 'hardhat-deploy/solc_0.7/proxy/EIP173Proxy.sol'; -import '../libraries/Create2.sol'; +import '@openzeppelin/contracts/utils/Create2.sol'; /// @author ElasticDAO - https://ElasticDAO.org /// @notice This contract is used for configuring ElasticDAOs @@ -101,7 +101,7 @@ contract Configurator { token.symbol = _symbol; // deploy new token with create2 and set the computed address as uuid - address tokenAddress = Create2.computeAddress(_salt, type(ElasticGovernanceToken).creationCode); + address tokenAddress = Create2.computeAddress(_salt, keccak256(type(ElasticGovernanceToken).creationCode)); // set token uuid to computed address token.uuid = tokenAddress; // create upgradeable ERC20 proxy @@ -112,7 +112,7 @@ contract Configurator { _ecosystem.daoAddress ); // deploy the new elastic governance token - Create2.deploy(_salt, type(ElasticGovernanceToken).creationCode); + Create2.deploy(0, _salt, type(ElasticGovernanceToken).creationCode); // initialize the token within the ecosystem ElasticGovernanceToken(tokenAddress).initialize( proxy.owner(), From 3253ebd8c51bb42592e6c2af73c96822169e6774 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Fri, 19 Feb 2021 14:17:10 +0200 Subject: [PATCH 059/118] replace IRC20.sol with openzeppelin version --- src/interfaces/IERC20.sol | 79 --------------------------- src/interfaces/IElasticToken.sol | 2 +- src/tokens/ElasticGovernanceToken.sol | 2 - 3 files changed, 1 insertion(+), 82 deletions(-) delete mode 100644 src/interfaces/IERC20.sol diff --git a/src/interfaces/IERC20.sol b/src/interfaces/IERC20.sol deleted file mode 100644 index 7b768eb..0000000 --- a/src/interfaces/IERC20.sol +++ /dev/null @@ -1,79 +0,0 @@ -// SPDX-License-Identifier: GPLv3 -pragma solidity 0.7.2; - -/** - * @dev Interface of the ERC20 standard as defined in the EIP. - */ -interface IERC20 { - /** - * @dev Emitted when the allowance of a @param _spender for @param _owner is set by - * a call to {approve} - * @param _amount is the new allowance - */ - event Approval(address indexed _owner, address indexed _spender, uint256 _amount); - - /** - * @dev Emitted when @param _amount tokens are moved from the @param _from account - * to @param _to account - */ - event Transfer(address indexed _from, address indexed _to, uint256 _amount); - - /** - * @dev Returns the remaining number of tokens that @param _spender will be - * allowed to spend on behalf of @param _owner through {transferFrom}. This is - * zero by default - * - * This value changes when {approve} or {transferFrom} are called - */ - function allowance(address _owner, address _spender) external view returns (uint256); - - /** - * @dev Sets @param _amount as the allowance of @param _spender over the caller's tokens - * - * Returns a boolean value indicating whether the operation succeeded - * - * IMPORTANT: Beware that changing an allowance with this method brings the risk - * that someone may use both the old and the new allowance by unfortunate - * transaction ordering. One possible solution to mitigate this race - * condition is to first reduce the spender's allowance to 0 and set the - * desired value afterwards: - * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 - * - * Emits an {Approval} event - */ - function approve(address _spender, uint256 _amount) external returns (bool); - - /** - * @dev Returns the amount of tokens owned by @param _account. - */ - function balanceOf(address _account) external view returns (uint256); - - /** - * @dev Returns the amount of tokens in existence - */ - function totalSupply() external view returns (uint256); - - /** - * @dev Moves @param _amount tokens from the caller's account to @param _to address - * - * Returns a boolean value indicating whether the operation succeeded - * - * Emits a {Transfer} event - */ - function transfer(address _to, uint256 _amount) external returns (bool); - - /** - * @dev Moves @param _amount tokens from @param _from to @param _to using the - * allowance mechanism. @param _amount is then deducted from the caller's - * allowance - * - * Returns a boolean value indicating whether the operation succeeded - * - * Emits a {Transfer} event - */ - function transferFrom( - address _from, - address _to, - uint256 _amount - ) external returns (bool); -} diff --git a/src/interfaces/IElasticToken.sol b/src/interfaces/IElasticToken.sol index 05efe6e..409b10f 100644 --- a/src/interfaces/IElasticToken.sol +++ b/src/interfaces/IElasticToken.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPLv3 pragma solidity 0.7.2; -import './IERC20.sol'; +import '@openzeppelin/contracts/token/ERC20/IERC20.sol'; interface IElasticToken is IERC20 { /** diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index 769e895..70ed00a 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -42,8 +42,6 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { _; } - constructor() IERC20() {} - function initialize(address _daoAddress, address _ecosystemModelAddress) external preventReentry From 0742f596c22880ee77ac6ca7d2db9f0eda2e224b Mon Sep 17 00:00:00 2001 From: Arpan Dutta Date: Fri, 19 Feb 2021 14:18:05 +0200 Subject: [PATCH 060/118] adds docs for ElasticDAOFactory and ElasticDAO contracts --- src/core/ElasticDAO.sol | 66 ++++++++++++++++++++++++++++++++-- src/core/ElasticDAOFactory.sol | 47 ++++++++++++++++++++---- 2 files changed, 104 insertions(+), 9 deletions(-) diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index 4f78809..1100c3b 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -12,6 +12,9 @@ import '../models/Token.sol'; import '../services/Configurator.sol'; import '../services/ReentryProtection.sol'; +/** + @title Th ElasticDAO contract +*/ contract ElasticDAO is ReentryProtection { address public deployer; address public ecosystemModelAddress; @@ -77,6 +80,14 @@ contract ElasticDAO is ReentryProtection { _; } + /** + * @notice Intializes the ElasticDAO + * @param _ecosystemModelAddress - the address of the ecosystem model + * @param _controller - the address of the controller + * @param _summoners - an array containing the addresses of the summoners + * @param _name - the name of the DAO + * @param _maxVotingLambda - the maximum amount of lambda that can be used to vote in the DAO + */ function initialize( address _ecosystemModelAddress, address _controller, @@ -105,6 +116,11 @@ contract ElasticDAO is ReentryProtection { require(success, 'ElasticDAO: Build DAO Failed'); } + /** + * @notice this function is used to exit the DAO + * @param _deltaLambda - the amount of lambda the address exits with + * @dev emits ExitDAO event + */ function exit(uint256 _deltaLambda) external onlyAfterSummoning preventReentry { // burn the shares Token.Instance memory token = _getToken(); @@ -120,6 +136,18 @@ contract ElasticDAO is ReentryProtection { emit ExitDAO(address(this), msg.sender, _deltaLambda, ethToBeTransfered); } + /** + * @notice initializes the token of the DAO + * @param _name - name of the token + * @param _symbol - symbol of the token + * @param _eByL - the amount of lambda a summoner gets(per ETH) during the seeding phase of the DAO + * @param _elasticity - the value by which the cost of entering the DAO increases ( on every join ) + * @param _k - is the constant token multiplier - it increases the number of tokens that each member of the DAO has with respect to their lambda + * @param _maxLambdaPurchase - is the maximum amount of lambda that can be purchased per wallet + * @param _salt - an arbitary value provided by the function caller ( to follow the Create2 pattern of generating opcodes) + * @dev refer https://docs.openzeppelin.com/cli/2.8/deploying-with-create2#create2 for further understanding of Create2 and salt + * @dev emits ElasticGovernanceTokenDeployed event + */ function initializeToken( string memory _name, string memory _symbol, @@ -153,6 +181,12 @@ contract ElasticDAO is ReentryProtection { emit ElasticGovernanceTokenDeployed(token.uuid); } + /** + * @notice this function is used to join the DAO after it has been summoned + * @param _deltaLambda - the amount of lambda the address joins with + * @dev documentation and further math regarding capitalDelta, deltaE, mDash can be found at ../libraries/ElasticMath.sol + * @dev emits the JoinDAO event + */ function join(uint256 _deltaLambda) external payable @@ -207,6 +241,11 @@ contract ElasticDAO is ReentryProtection { emit JoinDAO(address(this), msg.sender, _deltaLambda, msg.value); } + /** + * @notice penalizes @param _addresess with @param _amounts respectively + * @param _addresses - an array of addresses + * @param _amounts - an array containing the amounts each address has to be penalized respectively + */ function penalize(address[] memory _addresses, uint256[] memory _amounts) external onlyController @@ -224,6 +263,11 @@ contract ElasticDAO is ReentryProtection { } } + /** + * @notice rewards @param _addresess with @param _amounts respectively + * @param _addresses - an array of addresses + * @param _amounts - an array containing the amounts each address has to be rewarded respectively + */ function reward(address[] memory _addresses, uint256[] memory _amounts) external onlyController @@ -241,6 +285,11 @@ contract ElasticDAO is ReentryProtection { } } + /** + * @notice sets the controller of the DAO + * @param _controller - the address of the controller of the DAO + * @dev emits ControllerChanged event + */ function setController(address _controller) external onlyController preventReentry { require(_controller != address(0), 'ElasticDAO: Address Zero'); @@ -254,14 +303,22 @@ contract ElasticDAO is ReentryProtection { emit ControllerChanged(address(this), 'setController', controller); } + /** + * @notice sets the max voting lambda value for the DAO + * @param _maxVotingLambda - the value of the maximum amount of lambda that can be used for voting + * @dev emits MaxVotingLambda event + */ function setMaxVotingLambda(uint256 _maxVotingLambda) external onlyController preventReentry { maxVotingLambda = _maxVotingLambda; emit MaxVotingLambdaChanged(address(this), 'setMaxVotingLambda', _maxVotingLambda); } - // Summoning - + /** + * @notice seeds the DAO + * @dev seeding of the DAO occurs after the DAO has been initialized and before the DAO has been summoned + * @dev emits the SeedDAO event + */ function seedSummoning() external payable @@ -279,6 +336,11 @@ contract ElasticDAO is ReentryProtection { emit SeedDAO(address(this), msg.sender, deltaLambda); } + /** + * @notice summons the DAO + * @param _deltaLambda - the amount of lambda each summoner address recieves + * @dev emits SummonedDAO event + */ function summon(uint256 _deltaLambda) external onlyBeforeSummoning onlySummoners preventReentry { require(address(this).balance > 0, 'ElasticDAO: Please seed DAO with ETH to set ETH:EGT ratio'); diff --git a/src/core/ElasticDAOFactory.sol b/src/core/ElasticDAOFactory.sol index d126287..30b6aef 100644 --- a/src/core/ElasticDAOFactory.sol +++ b/src/core/ElasticDAOFactory.sol @@ -9,7 +9,9 @@ import '../services/ReentryProtection.sol'; import '@openzeppelin/contracts/utils/Create2.sol'; import 'hardhat-deploy/solc_0.7/proxy/EIP173ProxyWithReceive.sol'; -// This contract is the facory contract for ElasticDAO +/** + @title This contract is the facory contract for ElasticDAO + */ contract ElasticDAOFactory is ReentryProtection { address public ecosystemModelAddress; address public manager; @@ -30,6 +32,10 @@ contract ElasticDAOFactory is ReentryProtection { _; } + /** + @notice Initializes the ElasticDAO factory + @param _ecosystemModelAddress - the address of the ecosystem model + */ function initialize(address _ecosystemModelAddress) external preventReentry { require(initialized == false, 'ElasticDAO: Factory already initialized'); require(_ecosystemModelAddress != address(0), 'ElasticDAO: Address Zero'); @@ -41,6 +47,10 @@ contract ElasticDAOFactory is ReentryProtection { ecosystemModelAddress = _ecosystemModelAddress; } + /** + @notice collects the fees sent to this contract + @dev emits FeesCollected event + */ function collectFees() external preventReentry { uint256 amount = address(this).balance; @@ -50,8 +60,16 @@ contract ElasticDAOFactory is ReentryProtection { } /** - * @dev deploys DAO and initializes token - * and stores the address of the deployed DAO + * @notice deploys DAO and initializes token and stores the address of the deployed DAO + * @param _summoners - an array containing address of summoners + * @param _nameOfDAO - the name of the DAO + * @param _nameOfToken - the name of the token + * @param _eByL - the amount of lambda a summoner gets(per ETH) during the seeding phase of the DAO + * @param _elasticity - the value by which the cost of entering the DAO increases ( on every join ) + * @param _k - is the constant token multiplier - it increases the number of tokens that each member of the DAO has with respect to their lambda + * @param _maxLambdaPurchase - is the maximum amount of lambda that can be purchased per wallet + * @param _maxVotingLambda - is the maximum amount of lambda that can be used to vote + * @dev emits DeployedDAO event */ function deployDAOAndToken( address[] memory _summoners, @@ -101,11 +119,21 @@ contract ElasticDAOFactory is ReentryProtection { emit DeployedDAO(address(daoAddress)); } - function updateFee(uint256 amount) external onlyManager preventReentry { - fee = amount; + /** + * @notice updates the fee required to deploy a DAQ + * @param _amount - the new amount of the fees + * @dev emits FeeUpdated event + */ + function updateFee(uint256 _amount) external onlyManager preventReentry { + fee = _amount; emit FeeUpdated(fee); } + /** + * @notice updates the address of the fee reciever + * @param _feeReceiver - the new address of the fee reciever + * @dev emits FeeUpdated event + */ function updateFeeAddress(address _feeReceiver) external onlyManager preventReentry { require(_feeReceiver != address(0), 'ElasticDAO: Address Zero'); @@ -113,8 +141,13 @@ contract ElasticDAOFactory is ReentryProtection { emit FeeAddressUpdated(_feeReceiver); } - function updateManager(address newManager) external onlyManager preventReentry { - manager = newManager; + /** + * @notice updates the manager address + * @param _newManager - the address of the new manager + * @dev emits ManagerUpdated event + */ + function updateManager(address _newManager) external onlyManager preventReentry { + manager = _newManager; emit ManagerUpdated(manager); } From a58f0c57ddd4b414d9ad69765220fef9e5e0595a Mon Sep 17 00:00:00 2001 From: Arpan Dutta Date: Fri, 19 Feb 2021 15:14:08 +0200 Subject: [PATCH 061/118] refactors Factory docs --- deploy/elasticDAOFactory.js | 2 +- src/core/ElasticDAO.sol | 116 ++++++++++++++++++--------------- src/core/ElasticDAOFactory.sol | 57 +++++++++------- src/services/Configurator.sol | 3 +- yarn.lock | 8 +-- 5 files changed, 104 insertions(+), 82 deletions(-) diff --git a/deploy/elasticDAOFactory.js b/deploy/elasticDAOFactory.js index 79c184a..bb7f8ce 100644 --- a/deploy/elasticDAOFactory.js +++ b/deploy/elasticDAOFactory.js @@ -11,7 +11,7 @@ module.exports = async ({ getNamedAccounts, deployments }) => { from: agent, args: [], proxy: { - proxyContract: "EIP173ProxyWithReceive" + proxyContract: 'EIP173ProxyWithReceive', }, }); diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index 1100c3b..32a95e2 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -13,8 +13,10 @@ import '../services/Configurator.sol'; import '../services/ReentryProtection.sol'; /** - @title Th ElasticDAO contract -*/ +* @dev The ElasticDAO contract, +* Serves as a blueprint for all the parameters and permissions +* required by an ElasticDAO +*/ contract ElasticDAO is ReentryProtection { address public deployer; address public ecosystemModelAddress; @@ -81,13 +83,19 @@ contract ElasticDAO is ReentryProtection { } /** - * @notice Intializes the ElasticDAO - * @param _ecosystemModelAddress - the address of the ecosystem model - * @param _controller - the address of the controller - * @param _summoners - an array containing the addresses of the summoners - * @param _name - the name of the DAO - * @param _maxVotingLambda - the maximum amount of lambda that can be used to vote in the DAO - */ + * @notice Initializes and builds the ElasticDAO struct by passing and initializing + * all the required parameters into the configurator + * @param _ecosystemModelAddress - the address of the ecosystem model + * @param _controller - the address of the controller + * @param _summoners - an array containing the addresses of the summoners + * @param _name - the name of the DAO + * @param _maxVotingLambda - the maximum amount of lambda that can be used to vote in the DAO + * @dev + * Requirements: + * - The DAO cannot already be initialized + * - The ecosystem model address cannot be the zero address + * - The DAO must have atleast one summoner + */ function initialize( address _ecosystemModelAddress, address _controller, @@ -117,10 +125,10 @@ contract ElasticDAO is ReentryProtection { } /** - * @notice this function is used to exit the DAO - * @param _deltaLambda - the amount of lambda the address exits with - * @dev emits ExitDAO event - */ + * @notice this function is used to exit the DAO + * @param _deltaLambda - the amount of lambda the address exits with + * @dev emits ExitDAO event + */ function exit(uint256 _deltaLambda) external onlyAfterSummoning preventReentry { // burn the shares Token.Instance memory token = _getToken(); @@ -137,17 +145,17 @@ contract ElasticDAO is ReentryProtection { } /** - * @notice initializes the token of the DAO - * @param _name - name of the token - * @param _symbol - symbol of the token - * @param _eByL - the amount of lambda a summoner gets(per ETH) during the seeding phase of the DAO - * @param _elasticity - the value by which the cost of entering the DAO increases ( on every join ) - * @param _k - is the constant token multiplier - it increases the number of tokens that each member of the DAO has with respect to their lambda - * @param _maxLambdaPurchase - is the maximum amount of lambda that can be purchased per wallet - * @param _salt - an arbitary value provided by the function caller ( to follow the Create2 pattern of generating opcodes) - * @dev refer https://docs.openzeppelin.com/cli/2.8/deploying-with-create2#create2 for further understanding of Create2 and salt - * @dev emits ElasticGovernanceTokenDeployed event - */ + * @notice initializes the token of the DAO + * @param _name - name of the token + * @param _symbol - symbol of the token + * @param _eByL - the amount of lambda a summoner gets(per ETH) during the seeding phase of the DAO + * @param _elasticity - the value by which the cost of entering the DAO increases ( on every join ) + * @param _k - is the constant token multiplier - it increases the number of tokens that each member of the DAO has with respect to their lambda + * @param _maxLambdaPurchase - is the maximum amount of lambda that can be purchased per wallet + * @param _salt - an arbitary value provided by the function caller ( to follow the Create2 pattern of generating opcodes) + * @dev refer https://docs.openzeppelin.com/cli/2.8/deploying-with-create2#create2 for further understanding of Create2 and salt + * @dev emits ElasticGovernanceTokenDeployed event + */ function initializeToken( string memory _name, string memory _symbol, @@ -182,11 +190,11 @@ contract ElasticDAO is ReentryProtection { } /** - * @notice this function is used to join the DAO after it has been summoned - * @param _deltaLambda - the amount of lambda the address joins with - * @dev documentation and further math regarding capitalDelta, deltaE, mDash can be found at ../libraries/ElasticMath.sol - * @dev emits the JoinDAO event - */ + * @notice this function is used to join the DAO after it has been summoned + * @param _deltaLambda - the amount of lambda the address joins with + * @dev documentation and further math regarding capitalDelta, deltaE, mDash can be found at ../libraries/ElasticMath.sol + * @dev emits the JoinDAO event + */ function join(uint256 _deltaLambda) external payable @@ -207,7 +215,7 @@ contract ElasticDAO is ReentryProtection { // at this stage address(this).balance has the eth present in it(before function join), // along with msg.value // hence msg.value is subtracted from capitalDelta because capitalDelta is calculated - // with the eth present in the contract prior to recieving msg.value + // with the eth present in the contract prior to receieving msg.value address(this).balance - msg.value, tokenContract.totalSupply() ); @@ -242,10 +250,10 @@ contract ElasticDAO is ReentryProtection { } /** - * @notice penalizes @param _addresess with @param _amounts respectively - * @param _addresses - an array of addresses - * @param _amounts - an array containing the amounts each address has to be penalized respectively - */ + * @notice penalizes @param _addresess with @param _amounts respectively + * @param _addresses - an array of addresses + * @param _amounts - an array containing the amounts each address has to be penalized respectively + */ function penalize(address[] memory _addresses, uint256[] memory _amounts) external onlyController @@ -264,10 +272,10 @@ contract ElasticDAO is ReentryProtection { } /** - * @notice rewards @param _addresess with @param _amounts respectively - * @param _addresses - an array of addresses - * @param _amounts - an array containing the amounts each address has to be rewarded respectively - */ + * @notice rewards @param _addresess with @param _amounts respectively + * @param _addresses - an array of addresses + * @param _amounts - an array containing the amounts each address has to be rewarded respectively + */ function reward(address[] memory _addresses, uint256[] memory _amounts) external onlyController @@ -286,10 +294,10 @@ contract ElasticDAO is ReentryProtection { } /** - * @notice sets the controller of the DAO - * @param _controller - the address of the controller of the DAO - * @dev emits ControllerChanged event - */ + * @notice sets the controller of the DAO + * @param _controller - the address of the controller of the DAO + * @dev emits ControllerChanged event + */ function setController(address _controller) external onlyController preventReentry { require(_controller != address(0), 'ElasticDAO: Address Zero'); @@ -304,10 +312,10 @@ contract ElasticDAO is ReentryProtection { } /** - * @notice sets the max voting lambda value for the DAO - * @param _maxVotingLambda - the value of the maximum amount of lambda that can be used for voting - * @dev emits MaxVotingLambda event - */ + * @notice sets the max voting lambda value for the DAO + * @param _maxVotingLambda - the value of the maximum amount of lambda that can be used for voting + * @dev emits MaxVotingLambda event + */ function setMaxVotingLambda(uint256 _maxVotingLambda) external onlyController preventReentry { maxVotingLambda = _maxVotingLambda; @@ -315,10 +323,10 @@ contract ElasticDAO is ReentryProtection { } /** - * @notice seeds the DAO - * @dev seeding of the DAO occurs after the DAO has been initialized and before the DAO has been summoned - * @dev emits the SeedDAO event - */ + * @notice seeds the DAO + * @dev seeding of the DAO occurs after the DAO has been initialized and before the DAO has been summoned + * @dev emits the SeedDAO event + */ function seedSummoning() external payable @@ -337,10 +345,10 @@ contract ElasticDAO is ReentryProtection { } /** - * @notice summons the DAO - * @param _deltaLambda - the amount of lambda each summoner address recieves - * @dev emits SummonedDAO event - */ + * @notice summons the DAO + * @param _deltaLambda - the amount of lambda each summoner address receieves + * @dev emits SummonedDAO event + */ function summon(uint256 _deltaLambda) external onlyBeforeSummoning onlySummoners preventReentry { require(address(this).balance > 0, 'ElasticDAO: Please seed DAO with ETH to set ETH:EGT ratio'); diff --git a/src/core/ElasticDAOFactory.sol b/src/core/ElasticDAOFactory.sol index 30b6aef..c9fda5a 100644 --- a/src/core/ElasticDAOFactory.sol +++ b/src/core/ElasticDAOFactory.sol @@ -10,8 +10,10 @@ import '@openzeppelin/contracts/utils/Create2.sol'; import 'hardhat-deploy/solc_0.7/proxy/EIP173ProxyWithReceive.sol'; /** - @title This contract is the facory contract for ElasticDAO - */ + * @dev The factory contract for ElasticDAO + * Deploys ElasticDAO's and also sets all the required parameters and permissions, + * Collects a fee which is later used by ELasticDAO for further development of the project. + */ contract ElasticDAOFactory is ReentryProtection { address public ecosystemModelAddress; address public manager; @@ -33,8 +35,12 @@ contract ElasticDAOFactory is ReentryProtection { } /** - @notice Initializes the ElasticDAO factory - @param _ecosystemModelAddress - the address of the ecosystem model + * @notice Initializes the ElasticDAO factory + * @param _ecosystemModelAddress - the address of the ecosystem model + * @dev + * Requirements: + * - The factory cannot already be initialized + * - The ecosystem model address cannot be the zero address */ function initialize(address _ecosystemModelAddress) external preventReentry { require(initialized == false, 'ElasticDAO: Factory already initialized'); @@ -48,8 +54,8 @@ contract ElasticDAOFactory is ReentryProtection { } /** - @notice collects the fees sent to this contract - @dev emits FeesCollected event + * @notice collects the fees sent to this contract + * @dev emits FeesCollected event */ function collectFees() external preventReentry { uint256 amount = address(this).balance; @@ -64,12 +70,16 @@ contract ElasticDAOFactory is ReentryProtection { * @param _summoners - an array containing address of summoners * @param _nameOfDAO - the name of the DAO * @param _nameOfToken - the name of the token - * @param _eByL - the amount of lambda a summoner gets(per ETH) during the seeding phase of the DAO - * @param _elasticity - the value by which the cost of entering the DAO increases ( on every join ) - * @param _k - is the constant token multiplier - it increases the number of tokens that each member of the DAO has with respect to their lambda + * @param _eByL-the amount of lambda a summoner gets(per ETH) during the seeding phase of the DAO + * @param _elasticity-the value by which the cost of entering the DAO increases ( on every join ) + * @param _k - is the constant token multiplier, + * it increases the number of tokens that each member of the DAO has with respect to their lambda * @param _maxLambdaPurchase - is the maximum amount of lambda that can be purchased per wallet * @param _maxVotingLambda - is the maximum amount of lambda that can be used to vote - * @dev emits DeployedDAO event + * @dev emits DeployedDAO event + * @dev + * Requirement: + * - The fee required should be sent in the call to the function */ function deployDAOAndToken( address[] memory _summoners, @@ -120,20 +130,23 @@ contract ElasticDAOFactory is ReentryProtection { } /** - * @notice updates the fee required to deploy a DAQ - * @param _amount - the new amount of the fees - * @dev emits FeeUpdated event - */ + * @notice updates the fee required to deploy a DAQ + * @param _amount - the new amount of the fees + * @dev emits FeeUpdated event + */ function updateFee(uint256 _amount) external onlyManager preventReentry { fee = _amount; emit FeeUpdated(fee); } /** - * @notice updates the address of the fee reciever - * @param _feeReceiver - the new address of the fee reciever - * @dev emits FeeUpdated event - */ + * @notice updates the address of the fee reciever + * @param _feeReceiver - the new address of the fee reciever + * @dev emits FeeUpdated event + * @dev + * Requirement: + * - The fee receiver address cannot be zero address + */ function updateFeeAddress(address _feeReceiver) external onlyManager preventReentry { require(_feeReceiver != address(0), 'ElasticDAO: Address Zero'); @@ -142,10 +155,10 @@ contract ElasticDAOFactory is ReentryProtection { } /** - * @notice updates the manager address - * @param _newManager - the address of the new manager - * @dev emits ManagerUpdated event - */ + * @notice updates the manager address + * @param _newManager - the address of the new manager + * @dev emits ManagerUpdated event + */ function updateManager(address _newManager) external onlyManager preventReentry { manager = _newManager; emit ManagerUpdated(manager); diff --git a/src/services/Configurator.sol b/src/services/Configurator.sol index b94e7f7..9d761cb 100644 --- a/src/services/Configurator.sol +++ b/src/services/Configurator.sol @@ -101,7 +101,8 @@ contract Configurator { token.symbol = _symbol; // deploy new token with create2 and set the computed address as uuid - address tokenAddress = Create2.computeAddress(_salt, keccak256(type(ElasticGovernanceToken).creationCode)); + address tokenAddress = + Create2.computeAddress(_salt, keccak256(type(ElasticGovernanceToken).creationCode)); // set token uuid to computed address token.uuid = tokenAddress; // create upgradeable ERC20 proxy diff --git a/yarn.lock b/yarn.lock index 43ca874..3f8ef34 100644 --- a/yarn.lock +++ b/yarn.lock @@ -534,7 +534,7 @@ "@types/sinon-chai" "^3.2.3" "@types/web3" "1.0.19" -"@openzeppelin/contracts@^3.4.0": +"@openzeppelin/contracts@3.4.0": version "3.4.0" resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-3.4.0.tgz#9a1669ad5f9fdfb6e273bb5a4fed10cb4cc35eb0" integrity sha512-qh+EiHWzfY/9CORr+eRUkeEUP1WiFUcq3974bLHwyYzLBUtK6HPaMkIUHi74S1rDTZ0sNz42DwPc5A4IJvN3rg== @@ -2875,7 +2875,7 @@ dom-walk@^0.1.0: resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== -dotenv@^8.2.0: +dotenv@8.2.0: version "8.2.0" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== @@ -4670,7 +4670,7 @@ hardhat-contract-sizer@2.0.2: cli-table3 "^0.6.0" colors "^1.4.0" -hardhat-deploy@^0.7.0-beta.45: +hardhat-deploy@0.7.0-beta.45: version "0.7.0-beta.45" resolved "https://registry.yarnpkg.com/hardhat-deploy/-/hardhat-deploy-0.7.0-beta.45.tgz#fa81f3368e83b0195323da9fd04923c80e968e90" integrity sha512-pWl11O3X92kE88P5pQfPTxpM9tBes0RGD78JygQpiE0lOFaO0vm65H1dLX1F63gKyW+IMXM0Kf7xRAwSLtt7nQ== @@ -8120,7 +8120,7 @@ solidity-comments-extractor@^0.0.4: resolved "https://registry.yarnpkg.com/solidity-comments-extractor/-/solidity-comments-extractor-0.0.4.tgz#ce420aef23641ffd0131c7d80ba85b6e1e42147e" integrity sha512-58glBODwXIKMaQ7rfcJOrWtFQMMOK28tJ0/LcB5Xhu7WtAxk4UX2fpgKPuaL41XjMp/y0gAa1MTLqk018wuSzA== -solidity-coverage@^0.7.14: +solidity-coverage@0.7.14: version "0.7.14" resolved "https://registry.yarnpkg.com/solidity-coverage/-/solidity-coverage-0.7.14.tgz#88aa9d663dc82e9927275835703542a5e7931a03" integrity sha512-2X9oNtu4yBbtDXtVe2tc9vYHtwON6QRqNvVylKdkhcJgAdCzP/OkJy9fWcWH/g3fnNCIOFssHoe0LPGZ2ppMZg== From 887405cedc01d44bce0221a35064c287d0a21a25 Mon Sep 17 00:00:00 2001 From: alleycatdev Date: Fri, 19 Feb 2021 08:36:16 -0500 Subject: [PATCH 062/118] update for loops to save on gas --- src/core/ElasticDAO.sol | 6 +- src/models/DAO.sol | 2 +- yarn.lock | 1764 +++++++++++++++++++++++++++++++++++++-- 3 files changed, 1701 insertions(+), 71 deletions(-) diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index 32a95e2..2411359 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -266,7 +266,7 @@ contract ElasticDAO is ReentryProtection { ElasticGovernanceToken tokenContract = ElasticGovernanceToken(_getToken().uuid); - for (uint256 i = 0; i < _addresses.length; i = SafeMath.add(i, 1)) { + for (uint256 i = 0; i < _addresses.length; i += 1) { tokenContract.burnShares(_addresses[i], _amounts[i]); } } @@ -288,7 +288,7 @@ contract ElasticDAO is ReentryProtection { ElasticGovernanceToken tokenContract = ElasticGovernanceToken(_getToken().uuid); - for (uint256 i = 0; i < _addresses.length; i = SafeMath.add(i, 1)) { + for (uint256 i = 0; i < _addresses.length; i += 1) { tokenContract.mintShares(_addresses[i], _amounts[i]); } } @@ -360,7 +360,7 @@ contract ElasticDAO is ReentryProtection { ElasticGovernanceToken tokenContract = ElasticGovernanceToken(token.uuid); // number of summoners can not grow unboundly. it is fixed limit. - for (uint256 i = 0; i < dao.numberOfSummoners; i = SafeMath.add(i, 1)) { + for (uint256 i = 0; i < dao.numberOfSummoners; i += 1) { tokenContract.mintShares(daoContract.getSummoner(dao, i), _deltaLambda); } dao.summoned = true; diff --git a/src/models/DAO.sol b/src/models/DAO.sol index a7653f4..355a4da 100644 --- a/src/models/DAO.sol +++ b/src/models/DAO.sol @@ -81,7 +81,7 @@ contract DAO is EternalModel, ReentryProtection { if (record.summoners.length > 0) { record.numberOfSummoners = record.summoners.length; setUint(keccak256(abi.encode(record.uuid, 'numberOfSummoners')), record.numberOfSummoners); - for (uint256 i = 0; i < record.numberOfSummoners; i = SafeMath.add(i, 1)) { + for (uint256 i = 0; i < record.numberOfSummoners; i += 1) { setBool(keccak256(abi.encode(record.uuid, 'summoner', record.summoners[i])), true); setAddress(keccak256(abi.encode(record.uuid, 'summoners', i)), record.summoners[i]); } diff --git a/yarn.lock b/yarn.lock index 3f8ef34..b61dbda 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,7 +9,19 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/helper-validator-identifier@^7.10.4": +"@babel/helper-module-imports@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz#ec67e4404f41750463e455cc3203f6a32e93fcb0" + integrity sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-plugin-utils@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.12.13.tgz#174254d0f2424d8aefb4dd48057511247b0a9eeb" + integrity sha512-C+10MXCXJLiR6IeG9+Wiejt9jmtFpxUc3MQqCmPY8hfCjyUGl9kT+B2okzEZrtykiwrc4dbCPdDoz0A/HQbDaA== + +"@babel/helper-validator-identifier@^7.10.4", "@babel/helper-validator-identifier@^7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== @@ -23,6 +35,36 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/plugin-transform-runtime@^7.5.5": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.17.tgz#329cb61d293b7e60a7685b91dda7c300668cee18" + integrity sha512-s+kIJxnaTj+E9Q3XxQZ5jOo+xcogSe3V78/iFQ5RmoT0jROdpcdxhfGdq/VLqW1hFSzw6VjqN8aQqTaAMixWsw== + dependencies: + "@babel/helper-module-imports" "^7.12.13" + "@babel/helper-plugin-utils" "^7.12.13" + semver "^5.5.1" + +"@babel/runtime@^7.12.5", "@babel/runtime@^7.5.5": + version "7.12.18" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.18.tgz#af137bd7e7d9705a412b3caaf991fe6aaa97831b" + integrity sha512-BogPQ7ciE6SYAUPtlm9tWbgI9+2AgqSam6QivMgXgAT+fKbgppaj4ZX15MHeLC1PVF5sNk70huBu20XxWOs8Cg== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/types@^7.12.13": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.17.tgz#9d711eb807e0934c90b8b1ca0eb1f7230d150963" + integrity sha512-tNMDjcv/4DIcHxErTgwB9q2ZcYyN0sUfgGKUK/mm1FJK7Wz+KstoEekxrl/tBiNDgLK1HGi+sppj1An/1DR4fQ== + dependencies: + "@babel/helper-validator-identifier" "^7.12.11" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + +"@chaitanyapotti/random-id@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@chaitanyapotti/random-id/-/random-id-1.0.3.tgz#f52f647cfe9f79fc7723ea2b01b0ad3889204002" + integrity sha512-xiVWA2vTL3jQeuZ+yebXAtwIeEbh/13RAFxvRq0YxeUc02RBOGyC9eyDKXjwlN0uxPtnEwWxsELkSwnaH5kxjg== + "@elastic-dao/sdk@0.9.0-beta9": version "0.9.0-beta9" resolved "https://registry.yarnpkg.com/@elastic-dao/sdk/-/sdk-0.9.0-beta9.tgz#99c0975cf2efe9cf40b84de51a5f231ea78bdf74" @@ -145,6 +187,21 @@ "@ethersproject/properties" "^5.0.7" "@ethersproject/strings" "^5.0.8" +"@ethersproject/abi@5.0.7": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.7.tgz#79e52452bd3ca2956d0e1c964207a58ad1a0ee7b" + 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" + "@ethersproject/abstract-provider@5.0.8", "@ethersproject/abstract-provider@^5.0.8": version "5.0.8" resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.0.8.tgz#880793c29bfed33dff4c2b2be7ecb9ba966d52c0" @@ -180,6 +237,17 @@ "@ethersproject/logger" "^5.0.8" "@ethersproject/rlp" "^5.0.7" +"@ethersproject/address@^5.0.4": + version "5.0.10" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.0.10.tgz#2bc69fdff4408e0570471cd19dee577ab06a10d0" + integrity sha512-70vqESmW5Srua1kMDIN6uVfdneZMaMyRYH4qPvkAXGkbicrCOsA9m01vIloA4wYiiF+HLEfL1ENKdn5jb9xiAw== + dependencies: + "@ethersproject/bignumber" "^5.0.13" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/keccak256" "^5.0.7" + "@ethersproject/logger" "^5.0.8" + "@ethersproject/rlp" "^5.0.7" + "@ethersproject/base64@5.0.7", "@ethersproject/base64@^5.0.7": version "5.0.7" resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.0.7.tgz#d5da73699b4a33dc92bd8e5056ad1880b262057d" @@ -204,6 +272,15 @@ "@ethersproject/logger" "^5.0.8" bn.js "^4.4.0" +"@ethersproject/bignumber@^5.0.7": + version "5.0.14" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.0.14.tgz#605bc61dcbd4a8c6df8b5a7a77c0210273f3de8a" + integrity sha512-Q4TjMq9Gg3Xzj0aeJWqJgI3tdEiPiET7Y5OtNtjTAODZ2kp4y9jMNg97zVcvPedFvGROdpGDyCI77JDFodUzOw== + dependencies: + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/logger" "^5.0.8" + bn.js "^4.4.0" + "@ethersproject/bytes@5.0.9", "@ethersproject/bytes@>=5.0.0-beta.129", "@ethersproject/bytes@^5.0.2", "@ethersproject/bytes@^5.0.9": version "5.0.9" resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.0.9.tgz#2748247402ad20df69f3a3e935dc7b58c0d75c08" @@ -211,6 +288,13 @@ dependencies: "@ethersproject/logger" "^5.0.8" +"@ethersproject/bytes@^5.0.4": + version "5.0.10" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.0.10.tgz#aa49afe7491ba24ff76fa33d98677351263f9ba4" + integrity sha512-vpu0v1LZ1j1s9kERQIMnVU69MyHEzUff7nqK9XuCU4vx+AM8n9lU2gj7jtJIvGSt9HzatK/6I6bWusI5nyuaTA== + dependencies: + "@ethersproject/logger" "^5.0.8" + "@ethersproject/constants@5.0.8", "@ethersproject/constants@>=5.0.0-beta.128", "@ethersproject/constants@^5.0.8": version "5.0.8" resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.0.8.tgz#50f2e23f48c0d1d0de3759ea79b68ec3e06435a1" @@ -218,6 +302,13 @@ dependencies: "@ethersproject/bignumber" "^5.0.13" +"@ethersproject/constants@^5.0.4": + version "5.0.9" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.0.9.tgz#81ac44c3bf612de63eb1c490b314ea1b932cda9f" + integrity sha512-2uAKH89UcaJP/Sc+54u92BtJtZ4cPgcS1p0YbB1L3tlkavwNvth+kNCUplIB1Becqs7BOZr0B/3dMNjhJDy4Dg== + dependencies: + "@ethersproject/bignumber" "^5.0.13" + "@ethersproject/contracts@5.0.9", "@ethersproject/contracts@^5.0.2": version "5.0.9" resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.0.9.tgz#6c67c0ebe20ee1af903f7f43568401023334a181" @@ -247,6 +338,20 @@ "@ethersproject/properties" "^5.0.7" "@ethersproject/strings" "^5.0.8" +"@ethersproject/hash@^5.0.4": + version "5.0.11" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.0.11.tgz#da89517438bbbf8a39df56fff09f0a71669ae7a7" + integrity sha512-H3KJ9fk33XWJ2djAW03IL7fg3DsDMYjO1XijiUb1hJ85vYfhvxu0OmsU7d3tg2Uv1H1kFSo8ghr3WFQ8c+NL3g== + dependencies: + "@ethersproject/abstract-signer" "^5.0.10" + "@ethersproject/address" "^5.0.9" + "@ethersproject/bignumber" "^5.0.13" + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/keccak256" "^5.0.7" + "@ethersproject/logger" "^5.0.8" + "@ethersproject/properties" "^5.0.7" + "@ethersproject/strings" "^5.0.8" + "@ethersproject/hdnode@5.0.8", "@ethersproject/hdnode@^5.0.8": version "5.0.8" resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.0.8.tgz#2b52ede921cfbce8de49da774ec5a74025fc2bb1" @@ -292,11 +397,24 @@ "@ethersproject/bytes" "^5.0.9" js-sha3 "0.5.7" +"@ethersproject/keccak256@^5.0.3": + version "5.0.8" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.0.8.tgz#13aaf69e1c8bd15fc59a2ebd055c0878f2a059c8" + integrity sha512-zoGbwXcWWs9MX4NOAZ7N0hhgIRl4Q/IO/u9c/RHRY4WqDy3Ywm0OLamEV53QDwhjwn3YiiVwU1Ve5j7yJ0a/KQ== + dependencies: + "@ethersproject/bytes" "^5.0.9" + js-sha3 "0.5.7" + "@ethersproject/logger@5.0.8", "@ethersproject/logger@>=5.0.0-beta.129", "@ethersproject/logger@^5.0.8": version "5.0.8" resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.0.8.tgz#135c1903d35c878265f3cbf2b287042c4c20d5d4" integrity sha512-SkJCTaVTnaZ3/ieLF5pVftxGEFX56pTH+f2Slrpv7cU0TNpUZNib84QQdukd++sWUp/S7j5t5NW+WegbXd4U/A== +"@ethersproject/logger@^5.0.5": + version "5.0.9" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.0.9.tgz#0e6a0b3ecc938713016954daf4ac7967467aa763" + integrity sha512-kV3Uamv3XOH99Xf3kpIG3ZkS7mBNYcLDM00JSDtNgNB4BihuyxpQzIZPRIDmRi+95Z/R1Bb0X2kUNHa/kJoVrw== + "@ethersproject/networks@5.0.7", "@ethersproject/networks@^5.0.7": version "5.0.7" resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.0.7.tgz#8d06e41197b27c2404d89a29ca21f741a01acbfc" @@ -319,6 +437,13 @@ dependencies: "@ethersproject/logger" "^5.0.8" +"@ethersproject/properties@^5.0.3": + version "5.0.8" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.0.8.tgz#e45d28d25402c73394873dbf058f856c966cae01" + integrity sha512-zEnLMze2Eu2VDPj/05QwCwMKHh506gpT9PP9KPVd4dDB+5d6AcROUYVLoIIQgBYK7X/Gw0UJmG3oVtnxOQafAw== + dependencies: + "@ethersproject/logger" "^5.0.8" + "@ethersproject/providers@5.0.19", "@ethersproject/providers@^5.0.5": version "5.0.19" resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.0.19.tgz#94c8f1a86755ee4187911fc6250e94b1116c089a" @@ -399,6 +524,15 @@ "@ethersproject/constants" "^5.0.8" "@ethersproject/logger" "^5.0.8" +"@ethersproject/strings@^5.0.4": + version "5.0.9" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.0.9.tgz#8e2eb2918b140231e1d1b883d77e43213a8ac280" + integrity sha512-ogxBpcUpdO524CYs841MoJHgHxEPUy0bJFDS4Ezg8My+WYVMfVAOlZSLss0Rurbeeam8CpUVDzM4zUn09SU66Q== + dependencies: + "@ethersproject/bytes" "^5.0.9" + "@ethersproject/constants" "^5.0.8" + "@ethersproject/logger" "^5.0.8" + "@ethersproject/transactions@5.0.9", "@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.0.2", "@ethersproject/transactions@^5.0.9": version "5.0.9" resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.0.9.tgz#ccfcc1d395b5e3ce7342545fa28bfe5541182fd6" @@ -466,6 +600,82 @@ "@ethersproject/properties" "^5.0.7" "@ethersproject/strings" "^5.0.8" +"@json-rpc-tools/types@^1.6.1": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@json-rpc-tools/types/-/types-1.6.1.tgz#b892599c31fb1cd62172b86fb38d0bfcbd52fe30" + integrity sha512-Fg8Dke0+K92cZaWm0/vFIZgNdHftEI5GXbgT2rwUmmo/GrjlXJn5cPRghq5ee+QGTeZvWcjYmqdwrdGbTGBCMw== + dependencies: + keyvaluestorage-interface "^1.0.0" + +"@json-rpc-tools/utils@1.6.1": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@json-rpc-tools/utils/-/utils-1.6.1.tgz#26e37d0fc4522721158d0f6057e136daa8813263" + integrity sha512-cNwP4QapAls+xATU8zLLqPYa9qCbgwEyWEK7vE1oH91b3LfbUYwHtiWZ1+rv0X/mh/9cWNTo2Oi2Sah/QX0WwA== + dependencies: + "@json-rpc-tools/types" "^1.6.1" + +"@ledgerhq/cryptoassets@^5.44.1": + version "5.44.1" + resolved "https://registry.yarnpkg.com/@ledgerhq/cryptoassets/-/cryptoassets-5.44.1.tgz#15c4aeae21049e899fe1af711150deb2540f5e55" + integrity sha512-UhAL5kH81VgU2DGXjrz+tX3fXwYtJWSrDkna01lBl56Js8S57n/s47fajpU93K2msYqjJ5hhKaNgSvjNSmeMoA== + dependencies: + invariant "2" + +"@ledgerhq/devices@^5.43.0": + version "5.43.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-5.43.0.tgz#9b8ca838a7f8ece74098dc84aa6468eb7651972d" + integrity sha512-/M5ZLUBdBK7Vl2T4yNJbES3Z4w55LbPdxD9rcOBAKH/5V3V0obQv6MUasP9b7DSkwGSSLCOGZLohoT2NxK2D2A== + dependencies: + "@ledgerhq/errors" "^5.43.0" + "@ledgerhq/logs" "^5.43.0" + rxjs "^6.6.3" + semver "^7.3.4" + +"@ledgerhq/errors@^5.34.0", "@ledgerhq/errors@^5.43.0": + version "5.43.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-5.43.0.tgz#6bec77ebc31c4333a7f8d13b1f3f4d739b859b75" + integrity sha512-ZjKlUQbIn/DHXAefW3Y1VyDrlVhVqqGnXzrqbOXuDbZ2OAIfSe/A1mrlCbWt98jP/8EJQBuCzBOtnmpXIL/nYg== + +"@ledgerhq/hw-app-eth@^5.21.0": + version "5.44.1" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-eth/-/hw-app-eth-5.44.1.tgz#eb029518a6f92f56800ec8ce3b818a9f0d1d13c8" + integrity sha512-GdrkfDVlDzLfqln79t7J8rZ9IhHcE9DtfS9QBiasu7vKY4hrGHKIQEB3b2ogG1tkZGxzbsS5m8LmxuRhlmiGqQ== + dependencies: + "@ledgerhq/cryptoassets" "^5.44.1" + "@ledgerhq/errors" "^5.43.0" + "@ledgerhq/hw-transport" "^5.43.0" + bignumber.js "^9.0.1" + rlp "^2.2.6" + +"@ledgerhq/hw-transport-u2f@^5.21.0": + version "5.34.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-u2f/-/hw-transport-u2f-5.34.0.tgz#53466e4f07e177ec29b1ea061b6c56a57439a0cd" + integrity sha512-EM6LcbdD6Xo/msedbAWalBZlv89XAZrAZwL5zN9eKlUcWPjjG8c9+t5NedR/jmIaGuzIUVseUCIRxczqd5byOw== + dependencies: + "@ledgerhq/errors" "^5.34.0" + "@ledgerhq/hw-transport" "^5.34.0" + "@ledgerhq/logs" "^5.30.0" + u2f-api "0.2.7" + +"@ledgerhq/hw-transport@^5.34.0", "@ledgerhq/hw-transport@^5.43.0": + version "5.43.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-5.43.0.tgz#dc9863706d31bae96aed66f193b8922a876cbf82" + integrity sha512-0S+TGmiEJOqgM2MWnolZQPVKU3oRtoDj4yUFUZts9Owbgby+hmo4dIKTvv0vs8mwknQbOZByUgh3MQOQiK70MQ== + dependencies: + "@ledgerhq/devices" "^5.43.0" + "@ledgerhq/errors" "^5.43.0" + events "^3.2.0" + +"@ledgerhq/logs@^5.30.0", "@ledgerhq/logs@^5.43.0": + version "5.43.0" + resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-5.43.0.tgz#031bad4b8a3525c5e14210afde0bc09c79564026" + integrity sha512-QWfQjea3ekh9ZU+JeL2tJC9cTKLZ/JrcS0JGatLejpRYxQajvnHvHfh0dbHOKXEaXfCskEPTZ3f1kzuts742GA== + +"@metamask/safe-event-emitter@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@metamask/safe-event-emitter/-/safe-event-emitter-2.0.0.tgz#af577b477c683fad17c619a78208cede06f9605c" + integrity sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q== + "@nodelib/fs.scandir@2.1.4": version "2.1.4" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" @@ -550,6 +760,44 @@ promise.allsettled "^1.0.2" regenerator-runtime "^0.13.5" +"@portis/web3-provider-engine@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@portis/web3-provider-engine/-/web3-provider-engine-1.1.2.tgz#97f383156ea6b70fba69ae93a945fdd94159b1ba" + integrity sha512-NiiF0UPfngf4ulo32ybEDAMaad4i7h44HJaN8ea8HHt/vaFiUcPtINjC2o21jhWaLANerW4ZbOrNs1iCLH4p6A== + dependencies: + async "^2.5.0" + backoff "^2.5.0" + clone "^2.0.0" + cross-fetch "^2.1.0" + eth-block-tracker "^4.2.0" + eth-json-rpc-filters "^4.0.2" + eth-json-rpc-infura "^3.1.0" + eth-json-rpc-middleware "^5.0.2" + eth-sig-util "2.5.3" + ethereumjs-block "^1.2.2" + ethereumjs-tx "^1.2.0" + ethereumjs-util "^5.1.5" + ethereumjs-vm "^2.3.4" + json-rpc-error "^2.0.0" + 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" + +"@portis/web3@^2.0.0-beta.57": + version "2.0.0-beta.59" + resolved "https://registry.yarnpkg.com/@portis/web3/-/web3-2.0.0-beta.59.tgz#2e5292d8e1daf6070aa3b4a8cb33c1a9e0315011" + integrity sha512-QdIdrI3uK+TyT+dxRK5bEYOi2PBlUDJ7vszR2uu0bT49wy7O52B9td6fL/5gsfk0VpCsmrYov3x3gEQYwGUyvQ== + dependencies: + "@portis/web3-provider-engine" "1.1.2" + ethereumjs-util "5.2.0" + penpal "3.0.7" + pocket-js-core "0.0.3" + "@resolver-engine/core@^0.3.3": version "0.3.3" resolved "https://registry.yarnpkg.com/@resolver-engine/core/-/core-0.3.3.tgz#590f77d85d45bc7ecc4e06c654f41345db6ca967" @@ -677,6 +925,70 @@ dependencies: defer-to-connect "^1.0.1" +"@toruslabs/eccrypto@^1.1.5": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@toruslabs/eccrypto/-/eccrypto-1.1.5.tgz#c4b9319e02e913fecd90f3f2b98ae2699e7d498e" + integrity sha512-7sSAQ9M6b9wzxpIE98yi8zPh3wgdYiVBxvMvCOCb4c65UDOT6lpZyH30qP2fX30PaI+I2Ra+FwjfCCUuJegxfQ== + dependencies: + acorn "^7.4.0" + elliptic "^6.5.3" + es6-promise "^4.2.8" + nan "^2.14.1" + optionalDependencies: + secp256k1 "^3.8.0" + +"@toruslabs/fetch-node-details@^2.3.4": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@toruslabs/fetch-node-details/-/fetch-node-details-2.4.0.tgz#4aebc3a4655d60608b2c32393ac570165873bd7e" + integrity sha512-aPk3dYdvEe9MuHiqPAdr3QYP3cR2+SB2pU2VFx3F7fjNBfxplfhNYTw+aAkzX54Uwrrr4zSsBjFcst8p9P8vAg== + dependencies: + web3-eth-contract "^1.3.4" + web3-utils "^1.3.4" + +"@toruslabs/http-helpers@^1.3.5": + version "1.3.6" + resolved "https://registry.yarnpkg.com/@toruslabs/http-helpers/-/http-helpers-1.3.6.tgz#2ec09aaac3e2707077fe19e5fdc1877fde43a222" + integrity sha512-Xw5NkDsqZ3pQsAkm7C/2Za/Lf+uhbpL4r3+IoHrLRNS8+l5O3wUrXgGbNGjbQOtm3NocukVWaaipKy4YZIAegw== + dependencies: + deepmerge "^4.2.2" + +"@toruslabs/torus-embed@^1.9.2": + version "1.9.9" + resolved "https://registry.yarnpkg.com/@toruslabs/torus-embed/-/torus-embed-1.9.9.tgz#849b50b4c75bf1ae5cda2416dd37d4484f39df63" + integrity sha512-DUVmqRzmigh3SYOSeBeoezXhfviRFaBT6QfoeGpyim/TlSebjlhElE7GQHBHvNBGxefxTUN3VUFn9mPg07bw2g== + dependencies: + "@chaitanyapotti/random-id" "^1.0.3" + "@toruslabs/fetch-node-details" "^2.3.4" + "@toruslabs/http-helpers" "^1.3.5" + "@toruslabs/torus.js" "^2.2.13" + create-hash "^1.2.0" + deepmerge "^4.2.2" + eth-rpc-errors "^4.0.2" + fast-deep-equal "^3.1.3" + is-stream "^2.0.0" + json-rpc-engine "^6.1.0" + json-rpc-middleware-stream "^3.0.0" + loglevel "^1.7.1" + obj-multiplex "^1.0.0" + obs-store "^4.0.3" + post-message-stream "^3.0.0" + pump "^3.0.0" + safe-event-emitter "^1.0.1" + +"@toruslabs/torus.js@^2.2.13": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@toruslabs/torus.js/-/torus.js-2.3.0.tgz#ddad85d1806abe2b30b8103b60e1ecc6e47485d0" + integrity sha512-ar/14QE2MST53Cpdtto13L6AlN53IOM0LRS7uuFk7a8TFeI+RbeQquY68lgn3ESEhDPzAxOuLJ3s6M3nBA1arg== + dependencies: + "@toruslabs/eccrypto" "^1.1.5" + "@toruslabs/http-helpers" "^1.3.5" + bn.js "^5.1.3" + elliptic "^6.5.4" + json-stable-stringify "^1.0.1" + loglevel "^1.7.1" + memory-cache "^0.2.0" + web3-utils "^1.3.3" + "@truffle/error@^0.0.11": version "0.0.11" resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.0.11.tgz#2789c0042d7e796dcbb840c7a9b5d2bcd8e0e2d8" @@ -849,6 +1161,102 @@ resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== +"@walletconnect/client@^1.3.6": + version "1.3.6" + resolved "https://registry.yarnpkg.com/@walletconnect/client/-/client-1.3.6.tgz#537b7af6bf87a906fcf171fd5bc4e56a2a3d1908" + integrity sha512-HmzUpF/cPqPf8huaVg45SXk2hKQ6yxisy/qJ+51SoRGmtZDokJGxpq6+RFOnE8jFtUhTZRaK9UZ/jvsJAxIhEw== + dependencies: + "@walletconnect/core" "^1.3.6" + "@walletconnect/iso-crypto" "^1.3.6" + "@walletconnect/types" "^1.3.6" + "@walletconnect/utils" "^1.3.6" + +"@walletconnect/core@^1.3.6": + version "1.3.6" + resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-1.3.6.tgz#1690081bc4666b6644ed6a1bed128509a5259e50" + integrity sha512-1HHP2xZI6b88WQgszs3gP5xkkCwwlWgDJz+J6ADGzVXhQP21p1mZhKezUtx27rOtQimMIrPDfgPyAHwQBZkkSw== + dependencies: + "@walletconnect/socket-transport" "^1.3.6" + "@walletconnect/types" "^1.3.6" + "@walletconnect/utils" "^1.3.6" + +"@walletconnect/http-connection@^1.3.6": + version "1.3.6" + resolved "https://registry.yarnpkg.com/@walletconnect/http-connection/-/http-connection-1.3.6.tgz#98be28c312cfcca86b962b5a3a2813ac7b3f4866" + integrity sha512-uK9Z8JP7dxo59t9gIQqcAfiuhlpl4fQFh6gRvP8V7sjrEfxqN/GkJaTVzbE6VaYivrSaVeut65wcBOJS47R8Aw== + dependencies: + "@walletconnect/types" "^1.3.6" + "@walletconnect/utils" "^1.3.6" + eventemitter3 "4.0.7" + xhr2-cookies "1.1.0" + +"@walletconnect/iso-crypto@^1.3.6": + version "1.3.6" + resolved "https://registry.yarnpkg.com/@walletconnect/iso-crypto/-/iso-crypto-1.3.6.tgz#e6003d46fbc12b979e96269d94eebd8e801c0305" + integrity sha512-HypXNSmMAuEvNhllXWsCHtCVK4JfFFcZqPijurcXmOtWanjZV+8NuiYnKG11qAllSbYRwqKchb7GTDp33n0g0Q== + dependencies: + "@pedrouid/iso-crypto" "^1.0.0" + "@walletconnect/types" "^1.3.6" + "@walletconnect/utils" "^1.3.6" + +"@walletconnect/mobile-registry@^1.3.6": + version "1.3.6" + resolved "https://registry.yarnpkg.com/@walletconnect/mobile-registry/-/mobile-registry-1.3.6.tgz#891d08b62c8e5c61f96203aad588c2c463c5d7f3" + integrity sha512-OhOCFJhUWKVbRzU9XcAcYIW9cC6gNb+kFttIAtjbaocRGgN+n5NDoUZsrrd6iurjvS6ToCWkalvlYbXDU5/xtw== + +"@walletconnect/qrcode-modal@^1.3.6": + version "1.3.6" + resolved "https://registry.yarnpkg.com/@walletconnect/qrcode-modal/-/qrcode-modal-1.3.6.tgz#4ab9562e19069d453e04a3376f485aadf5f91de3" + integrity sha512-fQ7DQViX913EUc36rsglr6Jd76DbOiATUVroFZ8VeVcgbBuH9dTqBeCRuBCQ0MBe8v33IpRBjZDTsIdSOxFiaA== + dependencies: + "@walletconnect/mobile-registry" "^1.3.6" + "@walletconnect/types" "^1.3.6" + "@walletconnect/utils" "^1.3.6" + preact "10.4.1" + qrcode "1.4.4" + +"@walletconnect/socket-transport@^1.3.6": + version "1.3.6" + resolved "https://registry.yarnpkg.com/@walletconnect/socket-transport/-/socket-transport-1.3.6.tgz#702951831ff17db8f4c337dcdcb107cce377dae4" + integrity sha512-dvO8mRECU4I6FpoQX9GMh9BNzR2/g6vcj9LEIjgApW6Rfx0mCKUgoVBSi2W7NHC94zfdYiJdaH950oismj5gNw== + dependencies: + "@walletconnect/types" "^1.3.6" + "@walletconnect/utils" "^1.3.6" + ws "7.3.0" + +"@walletconnect/types@^1.3.6": + version "1.3.6" + resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-1.3.6.tgz#892da6fb4570d9bc5450dc1a5810d7b4d345dd08" + integrity sha512-fNir3Pi1ZpuVlgNr8qtP2LOSsV9rNgJGHmBnHHqKNmpuRpPxG1mhmKFdDHNGyVIP5bM5CWIXmlULDTax63UJbg== + +"@walletconnect/utils@^1.3.6": + version "1.3.6" + resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-1.3.6.tgz#e55cb5510eb41b4ae6be8e88c1de42abf309bdd3" + integrity sha512-nzTO5A3Ltjrsu6u8SR/KqdHTH03848KIj5MQlOCUjwxW1fXOvuri8+kwFKqlMn0bk1Qvlt6rrOptbt14PW8kSA== + dependencies: + "@json-rpc-tools/utils" "1.6.1" + "@walletconnect/types" "^1.3.6" + bn.js "4.11.8" + detect-browser "5.1.0" + enc-utils "3.0.0" + js-sha3 "0.8.0" + query-string "6.13.5" + safe-json-utils "1.0.0" + window-getters "1.0.0" + window-metadata "1.0.0" + +"@walletconnect/web3-provider@^1.3.1": + version "1.3.6" + resolved "https://registry.yarnpkg.com/@walletconnect/web3-provider/-/web3-provider-1.3.6.tgz#a09f0c08115475918ed4fe8d0503d28e29ac1877" + integrity sha512-49B7P4DjpK3LziW/IQTORc6+K2LmmK/qPFfjq/RWi5NIl/09D1D73UhCEIjZPJwNiAdd2V3wVKtSr/noj3PLgw== + dependencies: + "@walletconnect/client" "^1.3.6" + "@walletconnect/http-connection" "^1.3.6" + "@walletconnect/qrcode-modal" "^1.3.6" + "@walletconnect/types" "^1.3.6" + "@walletconnect/utils" "^1.3.6" + web3-provider-engine "16.0.1" + "@yarnpkg/lockfile@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" @@ -937,7 +1345,7 @@ aes-js@3.0.0: resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" integrity sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0= -aes-js@^3.1.1: +aes-js@^3.1.1, aes-js@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.1.2.tgz#db9aabde85d5caabbfc0d4f2a4446960f627146a" integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== @@ -1070,6 +1478,16 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= +array-filter@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" + integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" + integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= + array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -1116,6 +1534,11 @@ array.prototype.map@^1.0.3: es-array-method-boxes-properly "^1.0.0" is-string "^1.0.5" +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + asap@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" @@ -1180,6 +1603,13 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== +async-mutex@^0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.2.6.tgz#0d7a3deb978bc2b984d5908a2038e1ae2e54ff40" + integrity sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw== + dependencies: + tslib "^2.0.0" + async@1.x, async@^1.4.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" @@ -1192,6 +1622,11 @@ async@2.6.2: dependencies: lodash "^4.17.11" +async@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720" + integrity sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw== + async@^2.0.1, async@^2.1.2, async@^2.4.0, async@^2.5.0, async@^2.6.1: version "2.6.3" resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" @@ -1214,6 +1649,33 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== +authereum@^0.1.12: + version "0.1.14" + resolved "https://registry.yarnpkg.com/authereum/-/authereum-0.1.14.tgz#5655e543b296d899136e350d09f9cfe4c12fbc38" + integrity sha512-o1lsXXGg+oYDAEutZ8Ak1Qn2Dnk+qSyQ2ZokyLHRSYGJj6HpEHaSlQA6W3VTHD5r68Q+W0JD/BN9hDSF2xyshQ== + dependencies: + async "3.2.0" + bn.js "5.1.2" + ethereum-private-key-to-address "0.0.3" + ethers "4.0.47" + eventemitter3 "4.0.0" + is-buffer "2.0.4" + penpal "4.1.1" + pify "4.0.1" + querystring "0.2.0" + store "2.0.12" + to-hex "0.0.11" + uuidv4 "6.0.6" + web3-provider-engine "15.0.4" + web3-utils "1.2.1" + +available-typed-arrays@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5" + integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ== + dependencies: + array-filter "^1.0.0" + aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" @@ -1224,6 +1686,14 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== +axios@^0.18.0: + version "0.18.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.1.tgz#ff3f0de2e7b5d180e757ad98000f1081b87bcea3" + integrity sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g== + dependencies: + follow-redirects "1.5.10" + is-buffer "^2.0.2" + axios@^0.21.1: version "0.21.1" resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" @@ -1809,7 +2279,12 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -bindings@^1.5.0: +bind-decorator@^1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/bind-decorator/-/bind-decorator-1.0.11.tgz#e41bc06a1f65dd9cec476c91c5daf3978488252f" + integrity sha1-5BvAah9l3ZzsR2yRxdrzl4SIJS8= + +bindings@^1.2.1, bindings@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== @@ -1834,6 +2309,11 @@ bip66@^1.1.5: dependencies: safe-buffer "^5.0.1" +bitwise@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/bitwise/-/bitwise-2.0.4.tgz#3b6f95c43d614b83b980331d3b41d78b9c902039" + integrity sha512-ZOByl1Sc8SH2/owfRfR1apaC1ELNqHqAAtfqs1Ixqk/9Bod6VxWz10MiMYXkNiL95RdFAqOGQxm1TCGPf1iFyw== + blakejs@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.1.0.tgz#69df92ef953aa88ca51a32df6ab1c54a155fc7a5" @@ -1854,16 +2334,54 @@ bn.js@4.11.8: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== +bn.js@5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.2.tgz#c9686902d3c9a27729f43ab10f9d79c2004da7b0" + integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA== + bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.10.0, bn.js@^4.11.0, bn.js@^4.11.1, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9, bn.js@^4.4.0, bn.js@^4.8.0: version "4.11.9" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== -bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2: +bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.1.3: version "5.1.3" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ== +bnc-onboard@^1.19.2: + version "1.19.2" + resolved "https://registry.yarnpkg.com/bnc-onboard/-/bnc-onboard-1.19.2.tgz#bc293dfebfeadc834c4219b3eae7ff827f9ff9f9" + integrity sha512-+vsc70ViYz2mJbhTXhIuVMHIqlmvGVKZVWTkI8+5xnUVoFh65GubdxuN55l/J+kgEodUHejPecswgYWUTElz8A== + dependencies: + "@ledgerhq/hw-app-eth" "^5.21.0" + "@ledgerhq/hw-transport-u2f" "^5.21.0" + "@portis/web3" "^2.0.0-beta.57" + "@toruslabs/torus-embed" "^1.9.2" + "@walletconnect/web3-provider" "^1.3.1" + authereum "^0.1.12" + bignumber.js "^9.0.0" + bnc-sdk "^3.1.0" + bowser "^2.10.0" + eth-lattice-keyring "^0.2.7" + ethereumjs-tx "^2.1.2" + ethereumjs-util "^7.0.3" + fortmatic "^2.2.1" + hdkey "^2.0.1" + regenerator-runtime "^0.13.7" + trezor-connect "^8.1.9" + walletlink "^2.0.2" + web3-provider-engine "^15.0.4" + +bnc-sdk@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/bnc-sdk/-/bnc-sdk-3.1.1.tgz#60f4a56ee4d7a7a0a6ccb7ae132b7f3a63297eb3" + integrity sha512-bfQmWf8GlLBnZH0JwioImdU1PqDCjkpddwALBavOYDuKx/NMtJFwUzZP8525xxRrdGX0Lmn0BkJDAvdzJPVklg== + dependencies: + crypto-es "^1.2.2" + rxjs "^6.6.3" + sturdy-websocket "^0.1.12" + body-parser@1.19.0, body-parser@^1.16.0: version "1.19.0" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" @@ -1880,6 +2398,11 @@ body-parser@1.19.0, body-parser@^1.16.0: raw-body "2.4.0" type-is "~1.6.17" +bowser@^2.10.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" + integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -1911,7 +2434,7 @@ braces@^3.0.1, braces@~3.0.2: dependencies: fill-range "^7.0.1" -brorand@^1.0.1: +brorand@^1.0.1, brorand@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= @@ -1983,7 +2506,7 @@ browserslist@^3.2.6: caniuse-lite "^1.0.30000844" electron-to-chromium "^1.3.47" -bs58@^4.0.0: +bs58@^4.0.0, bs58@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" integrity sha1-vhYedsNU9veIrkBx9j806MTwpCo= @@ -1999,7 +2522,30 @@ bs58check@^2.1.2: create-hash "^1.1.0" safe-buffer "^5.1.2" -buffer-from@^1.0.0: +btoa@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" + integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== + +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= + +buffer-from@^1.0.0, buffer-from@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== @@ -2021,7 +2567,7 @@ buffer-xor@^2.0.1: dependencies: safe-buffer "^5.1.1" -buffer@^5.0.5, buffer@^5.2.1, buffer@^5.5.0, buffer@^5.6.0: +buffer@^5.0.5, buffer@^5.2.1, buffer@^5.4.2, buffer@^5.4.3, buffer@^5.5.0, buffer@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -2124,11 +2670,25 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +camelcase-keys@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" + integrity sha1-oqpfsa9oh1glnDLBQUJteJI7m3c= + dependencies: + camelcase "^4.1.0" + map-obj "^2.0.0" + quick-lru "^1.0.0" + camelcase@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= + camelcase@^5.0.0: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" @@ -2365,11 +2925,16 @@ clone-response@^1.0.2: dependencies: mimic-response "^1.0.0" -clone@2.1.2, clone@^2.0.0: +clone@2.1.2, clone@^2.0.0, clone@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= +clsx@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" + integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA== + code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" @@ -2434,7 +2999,7 @@ commander@3.0.2: resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== -component-emitter@^1.2.1: +component-emitter@^1.2.0, component-emitter@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== @@ -2507,7 +3072,7 @@ cookie@^0.4.1: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== -cookiejar@^2.1.1: +cookiejar@^2.1.0, cookiejar@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.2.tgz#dd8a235530752f988f9a0844f3fc589e3111125c" integrity sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA== @@ -2550,6 +3115,14 @@ cosmiconfig@^5.0.7: js-yaml "^3.13.1" parse-json "^4.0.0" +crc-32@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.0.tgz#cb2db6e29b88508e32d9dd0ec1693e7b41a18208" + integrity sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA== + dependencies: + exit-on-epipe "~1.0.1" + printj "~1.1.0" + create-ecdh@^4.0.0: version "4.0.4" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" @@ -2631,6 +3204,18 @@ crypto-browserify@3.12.0: randombytes "^2.0.0" randomfill "^1.0.3" +crypto-es@^1.2.2: + version "1.2.7" + resolved "https://registry.yarnpkg.com/crypto-es/-/crypto-es-1.2.7.tgz#754a6d52319a94fb4eb1f119297f17196b360f88" + integrity sha512-UUqiVJ2gUuZFmbFsKmud3uuLcNP2+Opt+5ysmljycFCyhA0+T16XJmo1ev/t5kMChMqWh7IEvURNCqsg+SjZGQ== + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" + integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= + dependencies: + array-find-index "^1.0.1" + d@1, d@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" @@ -2679,6 +3264,13 @@ debug@4.2.0: dependencies: ms "2.1.2" +debug@=3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + debug@^3.1.0: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" @@ -2686,7 +3278,15 @@ debug@^3.1.0: dependencies: ms "^2.1.1" -decamelize@^1.1.1, decamelize@^1.2.0: +decamelize-keys@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" + integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= + dependencies: + decamelize "^1.1.0" + map-obj "^1.0.0" + +decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -2732,6 +3332,11 @@ deep-is@^0.1.3, deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= +deepmerge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + defer-to-connect@^1.0.1: version "1.1.3" resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" @@ -2809,6 +3414,11 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= +detect-browser@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.1.0.tgz#0c51c66b747ad8f98a6832bf3026a5a23a7850ff" + integrity sha512-WKa9p+/MNwmTiS+V2AS6eGxic+807qvnV3hC+4z2GTY+F42h1n8AynVTMMc4EJBC32qMs6yjOTpeDEQQt/AVqQ== + detect-indent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" @@ -2843,6 +3453,11 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" +dijkstrajs@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.1.tgz#d3cd81221e3ea40742cfcde556d4e99e98ddc71b" + integrity sha1-082BIh4+pAdCz83lVtTpnpjdxxs= + dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -2919,6 +3534,19 @@ electron-to-chromium@^1.3.47: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.642.tgz#8b884f50296c2ae2a9997f024d0e3e57facc2b94" integrity sha512-cev+jOrz/Zm1i+Yh334Hed6lQVOkkemk2wRozfMF4MtTR7pxf3r3L5Rbd7uX1zMcEqVJ7alJBnJL7+JffkC6FQ== +elliptic@6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" + integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== + 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" + elliptic@6.5.3, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3: version "6.5.3" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" @@ -2932,6 +3560,19 @@ elliptic@6.5.3, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" +elliptic@^6.5.4: + version "6.5.4" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + 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" + emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -2947,6 +3588,14 @@ emoji-regex@^9.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.0.tgz#a26da8e832b16a9753309f25e35e3c0efb9a066a" integrity sha512-DNc3KFPK18bPdElMJnf/Pkv5TXhxFU3YFDEuGLDRtPmV4rkmCjBkCSEp22u6rBHdSN9Vlp/GK7k98prmE1Jgug== +enc-utils@3.0.0, enc-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/enc-utils/-/enc-utils-3.0.0.tgz#65935d2d6a867fa0ae995f05f3a2f055ce764dcf" + integrity sha512-e57t/Z2HzWOLwOp7DZcV0VMEY8t7ptWwsxyp6kM2b2zrk6JqIpXxzkruHAMiBsy5wg9jp/183GdiRXCvBtzsYg== + dependencies: + is-typedarray "1.0.0" + typedarray-to-buffer "3.1.5" + encode-utf8@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/encode-utf8/-/encode-utf8-1.0.3.tgz#f30fdd31da07fb596f281beb2f6b027851994cda" @@ -2975,7 +3624,7 @@ encoding@^0.1.11: dependencies: iconv-lite "^0.6.2" -end-of-stream@^1.1.0: +end-of-stream@^1.1.0, end-of-stream@^1.4.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -3074,6 +3723,11 @@ es6-iterator@~2.0.3: es5-ext "^0.10.35" es6-symbol "^3.1.1" +es6-promise@^4.2.8: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + es6-symbol@^3.1.1, es6-symbol@~3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" @@ -3366,6 +4020,18 @@ eth-block-tracker@^3.0.0: pify "^2.3.0" tape "^4.6.3" +eth-block-tracker@^4.2.0, eth-block-tracker@^4.4.2: + version "4.4.3" + resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-4.4.3.tgz#766a0a0eb4a52c867a28328e9ae21353812cf626" + integrity sha512-A8tG4Z4iNg4mw5tP1Vung9N9IjgMNqpiMoJ/FouSFwNCGHv2X0mmOYwtQOJzki6XN7r7Tyo01S29p7b224I4jw== + 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" + eth-ens-namehash@2.0.8, eth-ens-namehash@^2.0.8: version "2.0.8" resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf" @@ -3395,9 +4061,35 @@ eth-gas-reporter@^0.2.20: sha1 "^1.1.1" sync-request "^6.0.0" -eth-json-rpc-infura@^3.1.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/eth-json-rpc-infura/-/eth-json-rpc-infura-3.2.1.tgz#26702a821067862b72d979c016fd611502c6057f" +eth-json-rpc-errors@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/eth-json-rpc-errors/-/eth-json-rpc-errors-1.1.1.tgz#148377ef55155585981c21ff574a8937f9d6991f" + integrity sha512-WT5shJ5KfNqHi9jOZD+ID8I1kuYWNrigtZat7GOQkvwo99f8SzAVaEcWhJUv656WiZOAg3P1RiJQANtUmDmbIg== + dependencies: + fast-safe-stringify "^2.0.6" + +eth-json-rpc-errors@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/eth-json-rpc-errors/-/eth-json-rpc-errors-2.0.2.tgz#c1965de0301fe941c058e928bebaba2e1285e3c4" + integrity sha512-uBCRM2w2ewusRHGxN8JhcuOb2RN3ueAOYH/0BhqdFmQkZx5lj5+fLKTz0mIVOzd4FG5/kUksCzCD7eTEim6gaA== + dependencies: + fast-safe-stringify "^2.0.6" + +eth-json-rpc-filters@^4.0.2, eth-json-rpc-filters@^4.1.1, eth-json-rpc-filters@^4.2.1: + version "4.2.2" + resolved "https://registry.yarnpkg.com/eth-json-rpc-filters/-/eth-json-rpc-filters-4.2.2.tgz#eb35e1dfe9357ace8a8908e7daee80b2cd60a10d" + integrity sha512-DGtqpLU7bBg63wPMWg1sCpkKCf57dJ+hj/k3zF26anXMzkmtSBDExL8IhUu7LUd34f0Zsce3PYNO2vV2GaTzaw== + dependencies: + "@metamask/safe-event-emitter" "^2.0.0" + async-mutex "^0.2.6" + eth-json-rpc-middleware "^6.0.0" + eth-query "^2.1.2" + json-rpc-engine "^6.1.0" + pify "^5.0.0" + +eth-json-rpc-infura@^3.1.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/eth-json-rpc-infura/-/eth-json-rpc-infura-3.2.1.tgz#26702a821067862b72d979c016fd611502c6057f" integrity sha512-W7zR4DZvyTn23Bxc0EWsq4XGDdD63+XPUCEhV2zQvQGavDVC4ZpFDK4k99qN7bd7/fjj37+rxmuBOBeIqCA5Mw== dependencies: cross-fetch "^2.1.1" @@ -3405,6 +4097,26 @@ eth-json-rpc-infura@^3.1.0: json-rpc-engine "^3.4.0" json-rpc-error "^2.0.0" +eth-json-rpc-infura@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/eth-json-rpc-infura/-/eth-json-rpc-infura-4.1.0.tgz#623478375ba65e4304dea529ed69e8bd7938270d" + integrity sha512-DFYitKovzVlCdUulEccdm4g6k/vnvyByuw7rd5OoWDBSIiaeinI8Z/SntLjSIs2c+YvE20DGwk/GLwZGCWDN1Q== + dependencies: + eth-json-rpc-middleware "^4.4.0" + eth-rpc-errors "^3.0.0" + json-rpc-engine "^5.1.3" + node-fetch "^2.6.0" + +eth-json-rpc-infura@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/eth-json-rpc-infura/-/eth-json-rpc-infura-5.1.0.tgz#e6da7dc47402ce64c54e7018170d89433c4e8fb6" + integrity sha512-THzLye3PHUSGn1EXMhg6WTLW9uim7LQZKeKaeYsS9+wOBcamRiCQVGHa6D2/4P0oS0vSaxsBnU/J6qvn0MPdow== + dependencies: + eth-json-rpc-middleware "^6.0.0" + eth-rpc-errors "^3.0.0" + json-rpc-engine "^5.3.0" + node-fetch "^2.6.0" + eth-json-rpc-middleware@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/eth-json-rpc-middleware/-/eth-json-rpc-middleware-1.6.0.tgz#5c9d4c28f745ccb01630f0300ba945f4bef9593f" @@ -3424,6 +4136,70 @@ eth-json-rpc-middleware@^1.5.0: promise-to-callback "^1.0.0" tape "^4.6.3" +eth-json-rpc-middleware@^4.1.5, eth-json-rpc-middleware@^4.4.0: + version "4.4.1" + resolved "https://registry.yarnpkg.com/eth-json-rpc-middleware/-/eth-json-rpc-middleware-4.4.1.tgz#07d3dd0724c24a8d31e4a172ee96271da71b4228" + integrity sha512-yoSuRgEYYGFdVeZg3poWOwAlRI+MoBIltmOB86MtpoZjvLbou9EB/qWMOWSmH2ryCWLW97VYY6NWsmWm3OAA7A== + dependencies: + btoa "^1.2.1" + clone "^2.1.1" + eth-json-rpc-errors "^1.0.1" + eth-query "^2.1.2" + eth-sig-util "^1.4.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" + +eth-json-rpc-middleware@^5.0.2: + version "5.1.0" + resolved "https://registry.yarnpkg.com/eth-json-rpc-middleware/-/eth-json-rpc-middleware-5.1.0.tgz#affc63ddb31205e4b2f2c451571902031dad70fc" + integrity sha512-0uq8nWgHWLKA0sMhVqViue3vSEBVuQXyk2yzjhe8GSo/dGpJUtmYN1DvDF1LQtEhHI4N/G6MKPbiR/aWSRkPmg== + dependencies: + btoa "^1.2.1" + clone "^2.1.1" + eth-query "^2.1.2" + eth-rpc-errors "^3.0.0" + eth-sig-util "^1.4.2" + ethereumjs-block "^1.6.0" + ethereumjs-tx "^1.3.7" + ethereumjs-util "^5.1.2" + ethereumjs-vm "^2.6.0" + json-rpc-engine "^5.3.0" + json-stable-stringify "^1.0.1" + node-fetch "^2.6.1" + pify "^3.0.0" + safe-event-emitter "^1.0.1" + +eth-json-rpc-middleware@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/eth-json-rpc-middleware/-/eth-json-rpc-middleware-6.0.0.tgz#4fe16928b34231a2537856f08a5ebbc3d0c31175" + integrity sha512-qqBfLU2Uq1Ou15Wox1s+NX05S9OcAEL4JZ04VZox2NS0U+RtCMjSxzXhLFWekdShUPZ+P8ax3zCO2xcPrp6XJQ== + dependencies: + btoa "^1.2.1" + clone "^2.1.1" + eth-query "^2.1.2" + eth-rpc-errors "^3.0.0" + eth-sig-util "^1.4.2" + ethereumjs-util "^5.1.2" + json-rpc-engine "^5.3.0" + json-stable-stringify "^1.0.1" + node-fetch "^2.6.1" + pify "^3.0.0" + safe-event-emitter "^1.0.1" + +eth-lattice-keyring@^0.2.7: + version "0.2.9" + resolved "https://registry.yarnpkg.com/eth-lattice-keyring/-/eth-lattice-keyring-0.2.9.tgz#79849fd8358542031739874b1e3a8be7ade065bc" + integrity sha512-3B2/UiQrChaAL/zOqr/g0ALYTupiGqKEqB09OaB4iLW2Yfog4EBzcK3rBdZg0MkYlesTrsN4X9zKFkvLCv3QmQ== + dependencies: + gridplus-sdk "^0.7.2" + eth-lib@0.2.7: version "0.2.7" resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.7.tgz#2f93f17b1e23aec3759cd4a3fe20c1286a3fc1ca" @@ -3462,6 +4238,32 @@ eth-query@^2.0.2, eth-query@^2.1.0, eth-query@^2.1.2: json-rpc-random-id "^1.0.0" xtend "^4.0.1" +eth-rpc-errors@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-3.0.0.tgz#d7b22653c70dbf9defd4ef490fd08fe70608ca10" + integrity sha512-iPPNHPrLwUlR9xCSYm7HHQjWBasor3+KZfRvwEWxMz3ca0yqnlBeJrnyphkGIXZ4J7AMAaOLmwy4AWhnxOiLxg== + dependencies: + fast-safe-stringify "^2.0.6" + +eth-rpc-errors@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-4.0.2.tgz#11bc164e25237a679061ac05b7da7537b673d3b7" + integrity sha512-n+Re6Gu8XGyfFy1it0AwbD1x0MUzspQs0D5UiPs1fFPCr6WAwZM+vbIhXheBFrpgosqN9bs5PqlB4Q61U/QytQ== + dependencies: + fast-safe-stringify "^2.0.6" + +eth-sig-util@2.5.3, eth-sig-util@^2.5.2: + version "2.5.3" + resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-2.5.3.tgz#6938308b38226e0b3085435474900b03036abcbe" + integrity sha512-KpXbCKmmBUNUTGh9MRKmNkIPietfhzBqqYqysDavLseIiMUGl95k6UcPEkALAZlj41e9E6yioYXc1PC333RKqw== + dependencies: + buffer "^5.2.1" + elliptic "^6.4.0" + ethereumjs-abi "0.6.5" + ethereumjs-util "^5.1.1" + tweetnacl "^1.0.0" + tweetnacl-util "^0.15.0" + eth-sig-util@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-3.0.0.tgz#75133b3d7c20a5731af0690c385e184ab942b97e" @@ -3482,18 +4284,6 @@ eth-sig-util@^1.4.2: ethereumjs-abi "git+https://github.com/ethereumjs/ethereumjs-abi.git" ethereumjs-util "^5.1.1" -eth-sig-util@^2.5.2: - version "2.5.3" - resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-2.5.3.tgz#6938308b38226e0b3085435474900b03036abcbe" - integrity sha512-KpXbCKmmBUNUTGh9MRKmNkIPietfhzBqqYqysDavLseIiMUGl95k6UcPEkALAZlj41e9E6yioYXc1PC333RKqw== - dependencies: - buffer "^5.2.1" - elliptic "^6.4.0" - ethereumjs-abi "0.6.5" - ethereumjs-util "^5.1.1" - tweetnacl "^1.0.0" - tweetnacl-util "^0.15.0" - eth-tx-summary@^3.1.2: version "3.2.4" resolved "https://registry.yarnpkg.com/eth-tx-summary/-/eth-tx-summary-3.2.4.tgz#e10eb95eb57cdfe549bf29f97f1e4f1db679035c" @@ -3527,6 +4317,14 @@ ethereum-bloom-filters@^1.0.6: dependencies: js-sha3 "^0.8.0" +ethereum-checksum-address@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/ethereum-checksum-address/-/ethereum-checksum-address-0.0.2.tgz#46fcb2d962dacd1ed49d7b464408ec26fd183209" + integrity sha512-GAb7mPvGgcfi1j+Bsnwm9af9Z7dLUKp+5cFm88+kMrKACfh9gLatGLVVK5pSGEG2pOGfrmqCRcuh3RtMjIg8GQ== + dependencies: + keccak256 "^1.0.0" + meow "^5.0.0" + ethereum-common@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.2.0.tgz#13bf966131cce1eeade62a1b434249bb4cb120ca" @@ -3558,6 +4356,33 @@ ethereum-cryptography@^0.1.2, ethereum-cryptography@^0.1.3: secp256k1 "^4.0.1" setimmediate "^1.0.5" +ethereum-private-key-to-address@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/ethereum-private-key-to-address/-/ethereum-private-key-to-address-0.0.3.tgz#1f1dccaefd1198c2dcde55501f331a846bd0aad0" + integrity sha512-P+z9eFlgOezxogEpY1sQR155U4xFmQUWVxKzIJa5BL05Gs7zL0sYuyQuSAme8LBYGQ6p6AwconiMDauf4LbqyA== + dependencies: + ethereum-private-key-to-public-key "0.0.2" + ethereum-public-key-to-address "0.0.1" + meow "^5.0.0" + +ethereum-private-key-to-public-key@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/ethereum-private-key-to-public-key/-/ethereum-private-key-to-public-key-0.0.2.tgz#bb5803aad43df2692e0d7b4c9eaa224eec2a39cb" + integrity sha512-WKwFspLS5IdpV1rBUmWSG2xtIDV7YMpAG/uSjtV9kDzBU6hpSzoqg6R/e1iEfHkOr/eae+NtDTpwzXRtSMDvhw== + dependencies: + meow "^5.0.0" + secp256k1 "^3.7.1" + +ethereum-public-key-to-address@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/ethereum-public-key-to-address/-/ethereum-public-key-to-address-0.0.1.tgz#3f0237687d9c2217234dc5683f3eb580abf3f6ce" + integrity sha512-X78x/VBluHUdrYpZunoXJ48luXTaUiUK4ImPjTjI+XiS24+jUR5WFCpm9wCNbLYP6/ZCJ+lwuYormXSjt8rrbw== + dependencies: + ethereum-checksum-address "0.0.2" + keccak256 "^1.0.0" + meow "^5.0.0" + secp256k1 "^3.7.1" + ethereum-waffle@3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ethereum-waffle/-/ethereum-waffle-3.2.1.tgz#9d6d6b93484c5e1b77dfdeb646c050ed877e836e" @@ -3666,7 +4491,7 @@ ethereumjs-tx@2.1.2, ethereumjs-tx@^2.1.1, ethereumjs-tx@^2.1.2: ethereumjs-common "^1.5.0" ethereumjs-util "^6.0.0" -ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2, ethereumjs-tx@^1.3.3: +ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2, ethereumjs-tx@^1.3.3, ethereumjs-tx@^1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz#88323a2d875b10549b8347e09f4862b546f3d89a" integrity sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA== @@ -3674,6 +4499,19 @@ ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2, ethereumjs-tx@ ethereum-common "^0.0.18" ethereumjs-util "^5.0.0" +ethereumjs-util@5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz#3e0c0d1741471acf1036052d048623dee54ad642" + integrity sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA== + dependencies: + bn.js "^4.11.0" + create-hash "^1.1.2" + ethjs-util "^0.1.3" + keccak "^1.0.2" + rlp "^2.0.0" + safe-buffer "^5.1.1" + secp256k1 "^3.0.1" + ethereumjs-util@6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.0.tgz#23ec79b2488a7d041242f01e25f24e5ad0357960" @@ -3736,6 +4574,18 @@ ethereumjs-util@^7.0.2: ethjs-util "0.1.6" rlp "^2.2.4" +ethereumjs-util@^7.0.3: + version "7.0.8" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.0.8.tgz#5258762b7b17e3d828e41834948363ff0a703ffd" + integrity sha512-JJt7tDpCAmDPw/sGoFYeq0guOVqT3pTE9xlEbBmc/nlCij3JRCoS2c96SQ6kXVHOT3xWUNLDm5QCJLQaUnVAtQ== + dependencies: + "@types/bn.js" "^4.11.3" + bn.js "^5.1.2" + create-hash "^1.1.2" + ethereum-cryptography "^0.1.3" + ethjs-util "0.1.6" + rlp "^2.2.4" + ethereumjs-vm@4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-4.2.0.tgz#e885e861424e373dbc556278f7259ff3fca5edab" @@ -3789,6 +4639,21 @@ ethereumjs-wallet@0.6.5: utf8 "^3.0.0" uuid "^3.3.2" +ethers@4.0.47: + version "4.0.47" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.47.tgz#91b9cd80473b1136dd547095ff9171bd1fc68c85" + integrity sha512-hssRYhngV4hiDNeZmVU/k5/E8xmLG8UpcNUzg6mb7lqhgpFPH/t7nuv20RjRrEf0gblzvi2XwR5Te+V3ZFc9pQ== + dependencies: + aes-js "3.0.0" + bn.js "^4.4.0" + elliptic "6.5.2" + 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" + ethers@5.0.26, ethers@^5.0.0, ethers@^5.0.1, ethers@^5.0.9: version "5.0.26" resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.0.26.tgz#ef43c6b6aad71f10c1a184003f69b142d7d03bae" @@ -3866,17 +4731,22 @@ eventemitter3@3.1.2: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== +eventemitter3@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb" + integrity sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg== + eventemitter3@4.0.4: version "4.0.4" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== -eventemitter3@^4.0.0: +eventemitter3@4.0.7, eventemitter3@^4.0.0: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^3.0.0: +events@^3.0.0, events@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== @@ -3902,6 +4772,11 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +exit-on-epipe@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz#0bdd92e87d5285d267daa8171d0eb06159689692" + integrity sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw== + expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -3973,7 +4848,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@~3.0.2: +extend@^3.0.0, extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== @@ -4018,7 +4893,7 @@ fake-merkle-patricia-tree@^1.0.1: dependencies: checkpoint-store "^1.1.0" -fast-deep-equal@^3.1.1: +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== @@ -4050,6 +4925,11 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= +fast-safe-stringify@^2.0.6: + version "2.0.7" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743" + integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA== + fastq@^1.6.0: version "1.10.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.10.0.tgz#74dbefccade964932cdf500473ef302719c652bb" @@ -4209,6 +5089,13 @@ fmix@^0.1.0: dependencies: imul "^1.0.0" +follow-redirects@1.5.10: + version "1.5.10" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== + dependencies: + debug "=3.1.0" + follow-redirects@^1.10.0, follow-redirects@^1.12.1: version "1.13.1" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.1.tgz#5f69b813376cee4fd0474a3aba835df04ab763b7" @@ -4226,12 +5113,17 @@ for-in@^1.0.2: resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= -form-data@^2.2.0: +form-data@^2.2.0, form-data@^2.3.1: version "2.5.1" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== @@ -4258,6 +5150,16 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" +formidable@^1.2.0: + version "1.2.2" + resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.2.2.tgz#bf69aea2972982675f00865342b982986f6b8dd9" + integrity sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q== + +fortmatic@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/fortmatic/-/fortmatic-2.2.1.tgz#91ce9159c1fe539bd87e483125fca5c27a410a86" + integrity sha512-PEfPoErJSErU2A8iYD2Mab2c8eJK5dCdCr1jR/8yc49aEAlyQ4UXnZXyeO6MU5zBGkDAZmg9brnRSPzc+8MKPQ== + forwarded@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" @@ -4632,6 +5534,25 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== +gridplus-sdk@^0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/gridplus-sdk/-/gridplus-sdk-0.7.2.tgz#ea46c565ea7f8e029b7a61283f25e9f175ddfa47" + integrity sha512-fCo9QGvpwTVbqobKmkkKQxRA/zgSy5KOfQrRv9jhnmlP4uHvURKuuqnJ07mRZr+0EbGifRJp9VRmZkKjKffp+Q== + dependencies: + aes-js "^3.1.1" + bignumber.js "^9.0.1" + bitwise "^2.0.4" + bs58 "^4.0.1" + bs58check "^2.1.2" + buffer "^5.6.0" + crc-32 "^1.2.0" + elliptic "6.5.3" + js-sha3 "^0.8.0" + lodash "^4.17.19" + rlp-browser "^1.0.1" + secp256k1 "4.0.2" + superagent "^3.8.3" + growl@1.10.5: version "1.10.5" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" @@ -4856,6 +5777,15 @@ hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: inherits "^2.0.3" minimalistic-assert "^1.0.1" +hdkey@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/hdkey/-/hdkey-2.0.1.tgz#0a211d0c510bfc44fa3ec9d44b13b634641cad74" + integrity sha512-c+tl9PHG9/XkGgG0tD7CJpRVaE0jfZizDNmnErUAKQ4EjQSOcOUcV3EN9ZEZS8pZ4usaeiiK0H7stzuzna8feA== + dependencies: + bs58check "^2.1.2" + safe-buffer "^5.1.1" + secp256k1 "^4.0.0" + he@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" @@ -4866,7 +5796,7 @@ heap@0.2.6: resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.6.tgz#087e1f10b046932fc8594dd9e6d378afc9d1e5ac" integrity sha1-CH4fELBGky/IWU3Z5tN4r8nR5aw= -hmac-drbg@^1.0.0: +hmac-drbg@^1.0.0, hmac-drbg@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= @@ -5031,6 +5961,11 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= +indent-string@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" + integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -5078,7 +6013,7 @@ interpret@^1.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== -invariant@^2.2.2: +invariant@2, invariant@^2.2.2: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== @@ -5140,12 +6075,17 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" +is-buffer@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" + integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== + is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-buffer@~2.0.3: +is-buffer@^2.0.2, is-buffer@~2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== @@ -5260,6 +6200,11 @@ is-function@^1.0.1: resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== +is-generator-function@^1.0.7: + version "1.0.8" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.8.tgz#dfb5c2b120e02b0a8d9d2c6806cd5621aa922f7b" + integrity sha512-2Omr/twNtufVZFr1GhxjOMFPAj2sjc/dKaIqBhvo4qciXfJmITGH6ZGd8eZYNHza8t1y0e01AuqRhJwfWp26WQ== + is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" @@ -5350,6 +6295,11 @@ is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + is-string@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" @@ -5362,7 +6312,18 @@ is-symbol@^1.0.2: dependencies: has-symbols "^1.0.1" -is-typedarray@^1.0.0, is-typedarray@~1.0.0: +is-typed-array@^1.1.3: + version "1.1.5" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.5.tgz#f32e6e096455e329eb7b423862456aa213f0eb4e" + integrity sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug== + dependencies: + available-typed-arrays "^1.0.2" + call-bind "^1.0.2" + es-abstract "^1.18.0-next.2" + foreach "^2.0.5" + has-symbols "^1.0.1" + +is-typedarray@1.0.0, is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= @@ -5392,7 +6353,7 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= -isarray@^2.0.5: +isarray@^2.0.1, isarray@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== @@ -5521,6 +6482,22 @@ json-rpc-engine@^3.4.0, json-rpc-engine@^3.6.0: promise-to-callback "^1.0.0" safe-event-emitter "^1.0.1" +json-rpc-engine@^5.1.3, json-rpc-engine@^5.3.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-5.4.0.tgz#75758609d849e1dba1e09021ae473f3ab63161e5" + integrity sha512-rAffKbPoNDjuRnXkecTjnsE3xLLrb00rEkdgalINhaYVYIxDwWtvYBr9UFbhTvPB1B2qUOLoFd/cV6f4Q7mh7g== + dependencies: + eth-rpc-errors "^3.0.0" + safe-event-emitter "^1.0.1" + +json-rpc-engine@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-6.1.0.tgz#bf5ff7d029e1c1bf20cb6c0e9f348dcd8be5a393" + integrity sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ== + dependencies: + "@metamask/safe-event-emitter" "^2.0.0" + eth-rpc-errors "^4.0.2" + json-rpc-error@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/json-rpc-error/-/json-rpc-error-2.0.0.tgz#a7af9c202838b5e905c7250e547f1aff77258a02" @@ -5528,7 +6505,15 @@ json-rpc-error@^2.0.0: dependencies: inherits "^2.0.1" -json-rpc-random-id@^1.0.0: +json-rpc-middleware-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-rpc-middleware-stream/-/json-rpc-middleware-stream-3.0.0.tgz#8540331d884f36b9e0ad31054cc68ac6b5a89b52" + integrity sha512-JmZmlehE0xF3swwORpLHny/GvW3MZxCsb2uFNBrn8TOqMqivzCfz232NSDLLOtIQlrPlgyEjiYpyzyOPFOzClw== + dependencies: + "@metamask/safe-event-emitter" "^2.0.0" + readable-stream "^2.3.3" + +json-rpc-random-id@^1.0.0, json-rpc-random-id@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz#ba49d96aded1444dbb8da3d203748acbbcdec8c8" integrity sha1-uknZat7RRE27jaPSA3SKy7zeyMg= @@ -5620,7 +6605,15 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -keccak@3.0.1, keccak@^3.0.0: +keccak256@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/keccak256/-/keccak256-1.0.2.tgz#ee0d38c2d5fb817f39d37c3fef842cab0164a067" + integrity sha512-f2EncSgmHmmQOkgxZ+/f2VaWTNkFL6f39VIrpoX+p8cEXJVyyCs/3h9GNz/ViHgwchxvv7oG5mjT2Tk4ZqInag== + dependencies: + bn.js "^4.11.8" + keccak "^3.0.1" + +keccak@3.0.1, keccak@^3.0.0, keccak@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.1.tgz#ae30a0e94dbe43414f741375cff6d64c8bea0bff" integrity sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA== @@ -5628,6 +6621,16 @@ keccak@3.0.1, keccak@^3.0.0: node-addon-api "^2.0.0" node-gyp-build "^4.2.0" +keccak@^1.0.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-1.4.0.tgz#572f8a6dbee8e7b3aa421550f9e6408ca2186f80" + integrity sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw== + dependencies: + bindings "^1.2.1" + inherits "^2.0.3" + nan "^2.2.1" + safe-buffer "^5.1.0" + keccak@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/keccak/-/keccak-2.1.0.tgz#734ea53f2edcfd0f42cdb8d5f4c358fef052752b" @@ -5645,6 +6648,11 @@ keyv@^3.0.0: dependencies: json-buffer "3.0.0" +keyvaluestorage-interface@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz#13ebdf71f5284ad54be94bd1ad9ed79adad515ff" + integrity sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g== + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -5874,6 +6882,16 @@ load-json-file@^2.0.0: pify "^2.0.0" strip-bom "^3.0.0" +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -5902,6 +6920,11 @@ lodash.assign@^4.0.3, lodash.assign@^4.0.6: resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc= +lodash.defaults@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" + integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= + lodash.toarray@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" @@ -5926,6 +6949,11 @@ log-symbols@4.0.0: dependencies: chalk "^4.0.0" +loglevel@^1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" + integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== + looper@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/looper/-/looper-2.0.0.tgz#66cd0c774af3d4fedac53794f742db56da8f09ec" @@ -5943,6 +6971,14 @@ loose-envify@^1.0.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" + integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" @@ -6001,6 +7037,16 @@ map-cache@^0.2.2: resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= +map-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" + integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= + +map-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" + integrity sha1-plzSkIepJZi4eRJXpSPgISIqwfk= + map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" @@ -6065,11 +7111,31 @@ memdown@~3.0.0: ltgt "~2.2.0" safe-buffer "~5.1.1" +memory-cache@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/memory-cache/-/memory-cache-0.2.0.tgz#7890b01d52c00c8ebc9d533e1f8eb17e3034871a" + integrity sha1-eJCwHVLADI68nVM+H46xfjA0hxo= + memorystream@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= +meow@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-5.0.0.tgz#dfc73d63a9afc714a5e371760eb5c88b91078aa4" + integrity sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig== + dependencies: + camelcase-keys "^4.0.0" + decamelize-keys "^1.0.0" + loud-rejection "^1.0.0" + minimist-options "^3.0.1" + normalize-package-data "^2.3.4" + read-pkg-up "^3.0.0" + redent "^2.0.0" + trim-newlines "^2.0.0" + yargs-parser "^10.0.0" + merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" @@ -6107,7 +7173,7 @@ merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2.3.2: rlp "^2.0.0" semaphore ">=1.0.1" -methods@~1.1.2: +methods@^1.1.1, methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= @@ -6159,7 +7225,7 @@ mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.19, mime-types@~2.1.24: dependencies: mime-db "1.45.0" -mime@1.6.0: +mime@1.6.0, mime@^1.4.1: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== @@ -6203,6 +7269,14 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: dependencies: brace-expansion "^1.1.7" +minimist-options@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954" + integrity sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ== + dependencies: + arrify "^1.0.1" + is-plain-obj "^1.1.0" + minimist@^1.2.0, minimist@^1.2.5, minimist@~1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" @@ -6390,7 +7464,7 @@ mute-stream@0.0.7: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= -nan@^2.0.8, nan@^2.14.0: +nan@^2.0.8, nan@^2.14.0, nan@^2.14.1, nan@^2.2.1: version "2.14.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== @@ -6472,7 +7546,7 @@ node-fetch@2.1.2: resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.1.2.tgz#ab884e8e7e57e38a944753cec706f788d1768bb5" integrity sha1-q4hOjn5X44qUR1POxwb3iNF2i7U= -node-fetch@^2.6.0: +node-fetch@^2.6.0, node-fetch@^2.6.1: version "2.6.1" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== @@ -6502,7 +7576,14 @@ nopt@3.x: dependencies: abbrev "1" -normalize-package-data@^2.3.2: +normalize-hex@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/normalize-hex/-/normalize-hex-0.0.2.tgz#5491c43759db2f06b7168d8419f4925c271ab27e" + integrity sha512-E2dx7XJQnjsm6SkS4G6GGvIXRHaLeWAZE2D2N3aia+OpIif2UT8y4S0KCjrX3WmFDSeFnlNOp0FSHFjLeJ4SJw== + dependencies: + bn.js "^4.11.8" + +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -6547,6 +7628,15 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== +obj-multiplex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/obj-multiplex/-/obj-multiplex-1.0.0.tgz#2f2ae6bfd4ae11befe742ea9ea5b36636eabffc1" + integrity sha1-Lyrmv9SuEb7+dC6p6ls2Y26r/8E= + dependencies: + end-of-stream "^1.4.0" + once "^1.4.0" + readable-stream "^2.3.3" + object-assign@^4, object-assign@^4.0.0, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -6659,6 +7749,23 @@ oboe@2.1.4: dependencies: http-https "^1.0.0" +oboe@2.1.5: + version "2.1.5" + resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.5.tgz#5554284c543a2266d7a38f17e073821fbde393cd" + integrity sha1-VVQoTFQ6ImbXo48X4HOCH73jk80= + dependencies: + http-https "^1.0.0" + +obs-store@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/obs-store/-/obs-store-4.0.3.tgz#b632ec7814baa604fae084a4c97e87c0b7a6d14c" + integrity sha512-+mm13kCRDv6IcvUDKTw0LIy5+dQhIktYaR/RwwZUFzOTi/fjMaNBnk42Adb94qZqJ00qWkjhQSZH7MXlKnTi8A== + dependencies: + readable-stream "^2.2.2" + safe-event-emitter "^1.0.1" + through2 "^2.0.3" + xtend "^4.0.1" + on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -6953,6 +8060,13 @@ path-type@^2.0.0: dependencies: pify "^2.0.0" +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" @@ -6974,6 +8088,16 @@ pbkdf2@^3.0.17, pbkdf2@^3.0.3, pbkdf2@^3.0.9: safe-buffer "^5.0.1" sha.js "^2.4.8" +penpal@3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/penpal/-/penpal-3.0.7.tgz#d252711ed93b30f1d867eb82342785b3a95f5f75" + integrity sha512-WSXiq5HnEvzvY05SHhaXcsviUmCvh4Ze8AiIZzvmdzaaYAAx4rx8c6Xq6+MaVDG/Nfve3VmGD8HyRP3CkPvPbQ== + +penpal@4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/penpal/-/penpal-4.1.1.tgz#c96ccfdac441682acf617f6dcbc177a614e8302b" + integrity sha512-6d1f8khVLyBz3DnhLztbfjJ7+ANxdXRM2l6awpnCdEtbrmse4AGTsELOvGuNY0SU7xZw7heGbP6IikVvaVTOWw== + performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" @@ -6984,15 +8108,25 @@ picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== +pify@4.0.1, pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" + integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== pinkie-promise@^2.0.0: version "2.0.1" @@ -7013,16 +8147,45 @@ pkg-dir@^2.0.0: dependencies: find-up "^2.1.0" +pngjs@^3.3.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" + integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== + +pocket-js-core@0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/pocket-js-core/-/pocket-js-core-0.0.3.tgz#1ab278b9a6a5775e2bdc3c2c2e218057774061e4" + integrity sha512-OUTEvEVutdjLT6YyldvAlSebpBueUUWg2XKxGNt5u3QqrmLpBOOBmdDnGMNJ+lEwXtko+JqgwFq+HTi4g1QDVg== + dependencies: + axios "^0.18.0" + posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= +post-message-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/post-message-stream/-/post-message-stream-3.0.0.tgz#90d9f54bd209e6b6f5d74795b87588205b547048" + integrity sha1-kNn1S9IJ5rb110eVuHWIIFtUcEg= + dependencies: + readable-stream "^2.1.4" + postinstall-postinstall@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz#4f7f77441ef539d1512c40bd04c71b06a4704ca3" integrity sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ== +preact@10.4.1: + version "10.4.1" + resolved "https://registry.yarnpkg.com/preact/-/preact-10.4.1.tgz#9b3ba020547673a231c6cf16f0fbaef0e8863431" + integrity sha512-WKrRpCSwL2t3tpOOGhf2WfTpcmbpxaWtDbdJdKdjd0aEiTkvOmS4NBkG6kzlaAHI9AkQ3iVqbFWM3Ei7mZ4o1Q== + +preact@^10.5.9: + version "10.5.12" + resolved "https://registry.yarnpkg.com/preact/-/preact-10.5.12.tgz#6a8ee8bf40a695c505df9abebacd924e4dd37704" + integrity sha512-r6siDkuD36oszwlCkcqDJCAKBQxGoeEGytw2DGMD5A/GGdu5Tymw+N2OBXwvOLxg6d1FeY8MgMV3cc5aVQo4Cg== + precond@0.2: version "0.2.3" resolved "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz#aa9591bcaa24923f1e0f4849d240f47efc1075ac" @@ -7072,6 +8235,11 @@ prettier@^1.14.3: resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== +printj@~1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222" + integrity sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ== + private@^0.1.6, private@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" @@ -7225,12 +8393,25 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +qrcode@1.4.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.4.4.tgz#f0c43568a7e7510a55efc3b88d9602f71963ea83" + integrity sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q== + dependencies: + buffer "^5.4.3" + buffer-alloc "^1.2.0" + buffer-from "^1.1.1" + dijkstrajs "^1.0.1" + isarray "^2.0.1" + pngjs "^3.3.0" + yargs "^13.2.4" + qs@6.7.0: version "6.7.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== -qs@^6.4.0, qs@^6.7.0, qs@^6.9.4: +qs@^6.4.0, qs@^6.5.1, qs@^6.7.0, qs@^6.9.4: version "6.9.6" resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee" integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ== @@ -7240,6 +8421,15 @@ qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== +query-string@6.13.5: + version "6.13.5" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.13.5.tgz#99e95e2fb7021db90a6f373f990c0c814b3812d8" + integrity sha512-svk3xg9qHR39P3JlHuD7g3nRnyay5mHbrPctEBDUxUkHRifPHXJDhBUycdCC0NBjXoDf44Gb+IsOZL1Uwn8M/Q== + dependencies: + decode-uri-component "^0.2.0" + split-on-first "^1.0.0" + strict-uri-encode "^2.0.0" + query-string@^5.0.1: version "5.1.1" resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" @@ -7254,6 +8444,11 @@ querystring@0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= +quick-lru@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" + integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= + ramda@^0.27.1: version "0.27.1" resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9" @@ -7274,6 +8469,11 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" +randomhex@0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/randomhex/-/randomhex-0.1.5.tgz#baceef982329091400f2a2912c6cd02f1094f585" + integrity sha1-us7vmCMpCRQA8qKRLGzQLxCU9YU= + range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -7315,6 +8515,14 @@ read-pkg-up@^2.0.0: find-up "^2.0.0" read-pkg "^2.0.0" +read-pkg-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" + integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= + dependencies: + find-up "^2.0.0" + read-pkg "^3.0.0" + read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" @@ -7333,6 +8541,15 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + readable-stream@^1.0.33: version "1.1.14" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" @@ -7343,7 +8560,7 @@ readable-stream@^1.0.33: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.2.2, readable-stream@^2.2.8, readable-stream@^2.2.9, readable-stream@^2.3.6, readable-stream@~2.3.6: +readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.1.4, readable-stream@^2.2.2, readable-stream@^2.2.8, readable-stream@^2.2.9, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -7403,6 +8620,14 @@ recursive-readdir@^2.2.2: dependencies: minimatch "3.0.4" +redent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" + integrity sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo= + dependencies: + indent-string "^3.0.0" + strip-indent "^2.0.0" + regenerate@^1.2.1: version "1.4.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" @@ -7413,7 +8638,7 @@ regenerator-runtime@^0.11.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== -regenerator-runtime@^0.13.5: +regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.5, regenerator-runtime@^0.13.7: version "0.13.7" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== @@ -7668,7 +8893,14 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -rlp@^2.0.0, rlp@^2.2.1, rlp@^2.2.2, rlp@^2.2.3, rlp@^2.2.4: +rlp-browser@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rlp-browser/-/rlp-browser-1.0.1.tgz#d1ea37f289359200d33dfa006d46008a288761eb" + integrity sha512-JU+9ntlfyKanOOPwtNuMZBmCQ/fWVoryfa7ZSYDTUKAa1zk4v2smvM0WV8BsskJuqn/DdxpO7HO2vEikMvmhOA== + dependencies: + buffer "^5.4.2" + +rlp@^2.0.0, rlp@^2.2.1, rlp@^2.2.2, rlp@^2.2.3, rlp@^2.2.4, rlp@^2.2.6: version "2.2.6" resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.6.tgz#c80ba6266ac7a483ef1e69e8e2f056656de2fb2c" integrity sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg== @@ -7714,6 +8946,11 @@ safe-event-emitter@^1.0.1: dependencies: events "^3.0.0" +safe-json-utils@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-json-utils/-/safe-json-utils-1.0.0.tgz#8b1d68b13cff2ac6a5b68e6c9651cf7f8bb56d9b" + integrity sha512-n0hJm6BgX8wk3G+AS8MOQnfcA8dfE6ZMUfwkHUNx69YxPlU3HDaZTHXWto35Z+C4mOjK1odlT95WutkGC+0Idw== + safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -7770,7 +9007,16 @@ scryptsy@^1.2.1: dependencies: pbkdf2 "^3.0.3" -secp256k1@^3.0.1: +secp256k1@4.0.2, secp256k1@^4.0.0, secp256k1@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.2.tgz#15dd57d0f0b9fdb54ac1fa1694f40e5e9a54f4a1" + integrity sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg== + dependencies: + elliptic "^6.5.2" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + +secp256k1@^3.0.1, secp256k1@^3.7.1, secp256k1@^3.8.0: version "3.8.0" resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.8.0.tgz#28f59f4b01dbee9575f56a47034b7d2e3b3b352d" integrity sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw== @@ -7784,15 +9030,6 @@ secp256k1@^3.0.1: nan "^2.14.0" safe-buffer "^5.1.2" -secp256k1@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.2.tgz#15dd57d0f0b9fdb54ac1fa1694f40e5e9a54f4a1" - integrity sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg== - dependencies: - elliptic "^6.5.2" - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - seedrandom@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.1.tgz#eb3dde015bcf55df05a233514e5df44ef9dce083" @@ -8227,6 +9464,11 @@ spdx-license-ids@^3.0.0: resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65" integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== +split-on-first@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" + integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== + split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" @@ -8279,6 +9521,11 @@ stealthy-require@^1.1.1: resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= +store@2.0.12: + version "2.0.12" + resolved "https://registry.yarnpkg.com/store/-/store-2.0.12.tgz#8c534e2a0b831f72b75fc5f1119857c44ef5d593" + integrity sha1-jFNOKguDH3K3X8XxEZhXxE711ZM= + stream-to-pull-stream@^1.7.1: version "1.7.3" resolved "https://registry.yarnpkg.com/stream-to-pull-stream/-/stream-to-pull-stream-1.7.3.tgz#4161aa2d2eb9964de60bfa1af7feaf917e874ece" @@ -8292,6 +9539,11 @@ strict-uri-encode@^1.0.0: resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= +strict-uri-encode@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" + integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY= + string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -8423,6 +9675,11 @@ strip-hex-prefix@1.0.0: dependencies: is-hex-prefixed "1.0.0" +strip-indent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" + integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= + strip-json-comments@2.0.1, strip-json-comments@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" @@ -8433,6 +9690,29 @@ strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1. resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +sturdy-websocket@^0.1.12: + version "0.1.12" + resolved "https://registry.yarnpkg.com/sturdy-websocket/-/sturdy-websocket-0.1.12.tgz#84bb779f948b585a695f76961dc7d1c4a5e87629" + integrity sha512-PA7h8LdjaMoIlC5HAwLVzae4raGWgyroscV4oUpEiTtEFINcNa47/CKYT3e98o+FfsJgrclI2pYpaJrz0aaoew== + dependencies: + lodash.defaults "^4.2.0" + +superagent@^3.8.3: + version "3.8.3" + resolved "https://registry.yarnpkg.com/superagent/-/superagent-3.8.3.tgz#460ea0dbdb7d5b11bc4f78deba565f86a178e128" + integrity sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA== + dependencies: + component-emitter "^1.2.0" + cookiejar "^2.1.0" + debug "^3.1.0" + extend "^3.0.0" + form-data "^2.3.1" + formidable "^1.2.0" + methods "^1.1.1" + mime "^1.4.1" + qs "^6.5.1" + readable-stream "^2.3.5" + supports-color@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" @@ -8617,6 +9897,18 @@ to-fast-properties@^1.0.3: resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-hex@0.0.11: + version "0.0.11" + resolved "https://registry.yarnpkg.com/to-hex/-/to-hex-0.0.11.tgz#22355e09e5b56f5ae2b32502c493320f021171ac" + integrity sha512-3FSU8sfjrVc9fWowwP9xrdhxbp5Wco8uVZLhMhfsNuCFo9Fu8ecD2MgJV/2iAw+755W3AcGSQYVZGOpBmJtNcA== + dependencies: + normalize-hex "0.0.2" + to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -8667,6 +9959,20 @@ tough-cookie@^2.3.3, tough-cookie@~2.5.0: psl "^1.1.28" punycode "^2.1.1" +trezor-connect@^8.1.9: + version "8.1.22" + resolved "https://registry.yarnpkg.com/trezor-connect/-/trezor-connect-8.1.22.tgz#a6b713c621fb9a108827a2b51253dd6baf05a7a1" + integrity sha512-majbYoNlUqNG6AncdXiOdyF02SS73rWkel1of4qHK1T1bNp92cIq8yZMoWXxil3p2b45qs5PA8pK1TBexZCQ9g== + dependencies: + "@babel/runtime" "^7.12.5" + events "^3.2.0" + whatwg-fetch "^3.5.0" + +trim-newlines@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" + integrity sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA= + trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" @@ -8692,6 +9998,11 @@ tslib@^1.9.0, tslib@^1.9.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" + integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== + tsort@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/tsort/-/tsort-0.0.1.tgz#e2280f5e817f8bf4275657fd0f9aebd44f5a2786" @@ -8771,7 +10082,7 @@ type@^2.0.0: resolved "https://registry.yarnpkg.com/type/-/type-2.1.0.tgz#9bdc22c648cf8cf86dd23d32336a41cfb6475e3f" integrity sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA== -typedarray-to-buffer@^3.1.5: +typedarray-to-buffer@3.1.5, typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== @@ -8800,6 +10111,11 @@ typewiselite@~1.0.0: resolved "https://registry.yarnpkg.com/typewiselite/-/typewiselite-1.0.0.tgz#c8882fa1bb1092c06005a97f34ef5c8508e3664e" integrity sha1-yIgvobsQksBgBal/NO9chQjjZk4= +u2f-api@0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/u2f-api/-/u2f-api-0.2.7.tgz#17bf196b242f6bf72353d9858e6a7566cc192720" + integrity sha512-fqLNg8vpvLOD5J/z4B6wpPg4Lvowz1nJ9xdHcCzdUPKcFE/qNCceV2gNZxSJd5vhAZemHr/K/hbzVA0zxB5mkg== + uglify-js@^3.1.4: version "3.12.5" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.12.5.tgz#83241496087c640efe9dfc934832e71725aba008" @@ -8930,6 +10246,18 @@ util.promisify@^1.0.0: has-symbols "^1.0.1" object.getownpropertydescriptors "^2.1.1" +util@^0.12.0: + version "0.12.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.12.3.tgz#971bb0292d2cc0c892dab7c6a5d37c2bec707888" + integrity sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog== + 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" + utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" @@ -8945,11 +10273,23 @@ uuid@3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== +uuid@7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.2.tgz#7ff5c203467e91f5e0d85cfcbaaf7d2ebbca9be6" + integrity sha512-vy9V/+pKG+5ZTYKf+VcphF5Oc6EFiu3W8Nv3P3zIh0EqVI80ZxOzuPfe9EHjkFNvf8+xuTHVeei4Drydlx4zjw== + uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== +uuidv4@6.0.6: + version "6.0.6" + resolved "https://registry.yarnpkg.com/uuidv4/-/uuidv4-6.0.6.tgz#6966e8dd15760528a0f954843d24fdfdfda5a329" + integrity sha512-10YcruyGJtsG5SJnPG+8atr8toJa7xAOrcO7B7plYYiwpH1mQ8UZHjNSa2MrwGi6KWuyVrXGHr+Rce22F9UAiw== + dependencies: + uuid "7.0.2" + v8-compile-cache@^2.0.3: version "2.2.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" @@ -8982,6 +10322,17 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" +walletlink@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/walletlink/-/walletlink-2.0.3.tgz#8905deed6ba9a07d5dd49d709db359df571b0cc4" + integrity sha512-fl8LmelFpgVITdGxGkoGhCn9coIcV/8ubg2kT96DaqGi2N4BNvUjlmgOsXMuHvVUMg4kGVZeq2XKaChXBC9ySA== + dependencies: + bind-decorator "^1.0.11" + bn.js "^5.1.1" + clsx "^1.1.0" + preact "^10.5.9" + rxjs "^6.6.3" + web3-bzz@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.11.tgz#41bc19a77444bd5365744596d778b811880f707f" @@ -9020,6 +10371,15 @@ web3-core-helpers@1.2.9: web3-eth-iban "1.2.9" web3-utils "1.2.9" +web3-core-helpers@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.3.4.tgz#b8549740bf24d5c71688d89c3cdd802d8d36b4e4" + integrity sha512-n7BqDalcTa1stncHMmrnFtyTgDhX5Fy+avNaHCf6qcOP2lwTQC8+mdHVBONWRJ6Yddvln+c8oY/TAaB6PzWK0A== + dependencies: + underscore "1.9.1" + web3-eth-iban "1.3.4" + web3-utils "1.3.4" + web3-core-method@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.11.tgz#f880137d1507a0124912bf052534f168b8d8fbb6" @@ -9044,6 +10404,18 @@ web3-core-method@1.2.9: web3-core-subscriptions "1.2.9" web3-utils "1.2.9" +web3-core-method@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.3.4.tgz#6c2812d96dd6c811b9e6c8a5d25050d2c22b9527" + integrity sha512-JxmQrujsAWYRRN77P/RY7XuZDCzxSiiQJrgX/60Lfyf7FF1Y0le4L/UMCi7vUJnuYkbU1Kfl9E0udnqwyPqlvQ== + dependencies: + "@ethersproject/transactions" "^5.0.0-beta.135" + underscore "1.9.1" + web3-core-helpers "1.3.4" + web3-core-promievent "1.3.4" + web3-core-subscriptions "1.3.4" + web3-utils "1.3.4" + web3-core-promievent@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.11.tgz#51fe97ca0ddec2f99bf8c3306a7a8e4b094ea3cf" @@ -9058,6 +10430,13 @@ web3-core-promievent@1.2.9: dependencies: eventemitter3 "3.1.2" +web3-core-promievent@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.3.4.tgz#d166239012d91496cdcbe91d5d54071ea818bc73" + integrity sha512-V61dZIeBwogg6hhZZUt0qL9hTp1WDhnsdjP++9fhTDr4vy/Gz8T5vibqT2LLg6lQC8i+Py33yOpMeMNjztaUaw== + dependencies: + eventemitter3 "4.0.4" + web3-core-requestmanager@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.11.tgz#fe6eb603fbaee18530293a91f8cf26d8ae28c45a" @@ -9080,6 +10459,18 @@ web3-core-requestmanager@1.2.9: web3-providers-ipc "1.2.9" web3-providers-ws "1.2.9" +web3-core-requestmanager@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.3.4.tgz#e105ced735c2b5fcedd5771e0ecf9879ae9c373f" + integrity sha512-xriouCrhVnVDYQ04TZXdEREZm0OOJzkSEsoN5bu4JYsA6e/HzROeU+RjDpMUxFMzN4wxmFZ+HWbpPndS3QwMag== + dependencies: + underscore "1.9.1" + util "^0.12.0" + web3-core-helpers "1.3.4" + web3-providers-http "1.3.4" + web3-providers-ipc "1.3.4" + web3-providers-ws "1.3.4" + web3-core-subscriptions@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.11.tgz#beca908fbfcb050c16f45f3f0f4c205e8505accd" @@ -9098,6 +10489,15 @@ web3-core-subscriptions@1.2.9: underscore "1.9.1" web3-core-helpers "1.2.9" +web3-core-subscriptions@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.3.4.tgz#7b00e92bde21f792620cd02e6e508fcf4f4c31d3" + integrity sha512-drVHVDxh54hv7xmjIm44g4IXjfGj022fGw4/meB5R2D8UATFI40F73CdiBlyqk3DysP9njDOLTJFSQvEkLFUOg== + dependencies: + eventemitter3 "4.0.4" + underscore "1.9.1" + web3-core-helpers "1.3.4" + web3-core@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.11.tgz#1043cacc1becb80638453cc5b2a14be9050288a7" @@ -9124,6 +10524,19 @@ web3-core@1.2.9: web3-core-requestmanager "1.2.9" web3-utils "1.2.9" +web3-core@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.3.4.tgz#2cc7ba7f35cc167f7a0a46fd5855f86e51d34ce8" + integrity sha512-7OJu46RpCEfTerl+gPvHXANR2RkLqAfW7l2DAvQ7wN0pnCzl9nEfdgW6tMhr31k3TR2fWucwKzCyyxMGzMHeSA== + dependencies: + "@types/bn.js" "^4.11.5" + "@types/node" "^12.12.6" + bignumber.js "^9.0.0" + web3-core-helpers "1.3.4" + web3-core-method "1.3.4" + web3-core-requestmanager "1.3.4" + web3-utils "1.3.4" + web3-eth-abi@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.11.tgz#a887494e5d447c2926d557a3834edd66e17af9b0" @@ -9142,6 +10555,15 @@ web3-eth-abi@1.2.9: underscore "1.9.1" web3-utils "1.2.9" +web3-eth-abi@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.3.4.tgz#10f5d8b6080dbb6cbaa1bcef7e0c70573da6566f" + integrity sha512-PVSLXJ2dzdXsC+R24llIIEOS6S1KhG5qwNznJjJvXZFe3sqgdSe47eNvwUamZtCBjcrdR/HQr+L/FTxqJSf80Q== + dependencies: + "@ethersproject/abi" "5.0.7" + underscore "1.9.1" + web3-utils "1.3.4" + web3-eth-accounts@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.11.tgz#a9e3044da442d31903a7ce035a86d8fa33f90520" @@ -9206,6 +10628,21 @@ web3-eth-contract@1.2.9: web3-eth-abi "1.2.9" web3-utils "1.2.9" +web3-eth-contract@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.3.4.tgz#1ea2dd71be0c4a9cf4772d4f75dbb2fa99751472" + integrity sha512-Fvy8ZxUksQY2ePt+XynFfOiSqxgQtMn4m2NJs6VXRl2Inl17qyRi/nIJJVKTcENLocm+GmZ/mxq2eOE5u02nPg== + dependencies: + "@types/bn.js" "^4.11.5" + underscore "1.9.1" + web3-core "1.3.4" + web3-core-helpers "1.3.4" + web3-core-method "1.3.4" + web3-core-promievent "1.3.4" + web3-core-subscriptions "1.3.4" + web3-eth-abi "1.3.4" + web3-utils "1.3.4" + web3-eth-ens@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.11.tgz#26d4d7f16d6cbcfff918e39832b939edc3162532" @@ -9252,6 +10689,14 @@ web3-eth-iban@1.2.9: bn.js "4.11.8" web3-utils "1.2.9" +web3-eth-iban@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.3.4.tgz#5eb7a564e0dcf68730d68f48f95dd207cd173d81" + integrity sha512-Y7/hLjVvIN/OhaAyZ8L/hxbTqVX6AFTl2RwUXR6EEU9oaLydPcMjAx/Fr8mghUvQS3QJSr+UGubP3W4SkyNiYw== + dependencies: + bn.js "^4.11.9" + web3-utils "1.3.4" + web3-eth-personal@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.11.tgz#a38b3942a1d87a62070ce0622a941553c3d5aa70" @@ -9358,6 +10803,90 @@ web3-provider-engine@14.2.1: xhr "^2.2.0" xtend "^4.0.1" +web3-provider-engine@15.0.4: + version "15.0.4" + resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-15.0.4.tgz#5c336bcad2274dff5218bc8db003fa4e9e464c24" + integrity sha512-Ob9oK0TUZfVC7NXkB7CQSWAiCdCD/Xnlh2zTnV8NdJR8LCrMAy2i6JedU70JHaxw59y7mM4GnsYOTTGkquFnNQ== + dependencies: + 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 "^1.0.1" + eth-json-rpc-filters "^4.1.1" + eth-json-rpc-infura "^4.0.1" + eth-json-rpc-middleware "^4.1.5" + eth-sig-util "^1.4.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" + +web3-provider-engine@16.0.1: + version "16.0.1" + resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-16.0.1.tgz#2600a39ede364cdc0a1fc773bf40a94f2177e605" + integrity sha512-/Eglt2aocXMBiDj7Se/lyZnNDaHBaoJlaUfbP5HkLJQC/HlGbR+3/W+dINirlJDhh7b54DzgykqY7ksaU5QgTg== + dependencies: + 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-filters "^4.2.1" + eth-json-rpc-infura "^5.1.0" + eth-json-rpc-middleware "^6.0.0" + eth-rpc-errors "^3.0.0" + eth-sig-util "^1.4.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" + +web3-provider-engine@^15.0.4: + version "15.0.12" + resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-15.0.12.tgz#24d7f2f6fb6de856824c7306291018c4fc543ac3" + integrity sha512-/OfhQalKPND1iB5ggvGuYF0+SIb2Qj5OFTrT2VrZWP79UhMTdP7T+L2FtblmRdCeOetoAzZHdBaIwLOZsmIX+w== + dependencies: + 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" + eth-json-rpc-filters "^4.1.1" + eth-json-rpc-infura "^4.0.1" + eth-json-rpc-middleware "^4.1.5" + eth-sig-util "^1.4.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" + web3-providers-http@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.11.tgz#1cd03442c61670572d40e4dcdf1faff8bd91e7c6" @@ -9374,6 +10903,14 @@ web3-providers-http@1.2.9: web3-core-helpers "1.2.9" xhr2-cookies "1.1.0" +web3-providers-http@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.3.4.tgz#89389e18e27148faa2fef58842740ffadbdda8cc" + integrity sha512-aIg/xHXvxpqpFU70sqfp+JC3sGkLfAimRKTUhG4oJZ7U+tTcYTHoxBJj+4A3Id4JAoKiiv0k1/qeyQ8f3rMC3g== + dependencies: + web3-core-helpers "1.3.4" + xhr2-cookies "1.1.0" + web3-providers-ipc@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.11.tgz#d16d6c9be1be6e0b4f4536c4acc16b0f4f27ef21" @@ -9392,6 +10929,15 @@ web3-providers-ipc@1.2.9: underscore "1.9.1" web3-core-helpers "1.2.9" +web3-providers-ipc@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.3.4.tgz#b963518989b1b7847063cdd461ff73b83855834a" + integrity sha512-E0CvXEJElr/TIlG1YfJeO3Le5NI/4JZM+1SsEdiPIfBUAJN18oOoum138EBGKv5+YaLKZUtUuJSXWjIIOR/0Ig== + dependencies: + oboe "2.1.5" + underscore "1.9.1" + web3-core-helpers "1.3.4" + web3-providers-ws@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.11.tgz#a1dfd6d9778d840561d9ec13dd453046451a96bb" @@ -9412,6 +10958,16 @@ web3-providers-ws@1.2.9: web3-core-helpers "1.2.9" websocket "^1.0.31" +web3-providers-ws@1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.3.4.tgz#b94c2e0ec51a0c472abdec53a472b5bf8176bec1" + integrity sha512-WBd9hk2fUAdrbA3kUyUk94ZeILtE6txLeoVVvIKAw2bPegx+RjkLyxC1Du0oceKgQ/qQWod8CCzl1E/GgTP+MQ== + dependencies: + eventemitter3 "4.0.4" + underscore "1.9.1" + web3-core-helpers "1.3.4" + websocket "^1.0.32" + web3-shh@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.11.tgz#f5d086f9621c9a47e98d438010385b5f059fd88f" @@ -9432,6 +10988,19 @@ web3-shh@1.2.9: web3-core-subscriptions "1.2.9" web3-net "1.2.9" +web3-utils@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.1.tgz#21466e38291551de0ab34558de21512ac4274534" + integrity sha512-Mrcn3l58L+yCKz3zBryM6JZpNruWuT0OCbag8w+reeNROSGVlXzUQkU+gtAwc9JCZ7tKUyg67+2YUGqUjVcyBA== + dependencies: + bn.js "4.11.8" + eth-lib "0.2.7" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randomhex "0.1.5" + underscore "1.9.1" + utf8 "3.0.0" + web3-utils@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.11.tgz#af1942aead3fb166ae851a985bed8ef2c2d95a82" @@ -9460,6 +11029,20 @@ web3-utils@1.2.9: underscore "1.9.1" utf8 "3.0.0" +web3-utils@1.3.4, web3-utils@^1.3.3, web3-utils@^1.3.4: + version "1.3.4" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.3.4.tgz#9b1aa30d7549f860b573e7bb7e690999e7192198" + integrity sha512-/vC2v0MaZNpWooJfpRw63u0Y3ag2gNjAWiLtMSL6QQLmCqCy4SQIndMt/vRyx0uMoeGt1YTwSXEcHjUzOhLg0A== + 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" + underscore "1.9.1" + utf8 "3.0.0" + web3-utils@^1.0.0-beta.31, web3-utils@^1.3.0: version "1.3.2" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.3.2.tgz#3f6ac95704ba41f60062fd283e629015f5d359a9" @@ -9512,7 +11095,7 @@ websocket@1.0.32: utf-8-validate "^5.0.2" yaeti "^0.0.6" -websocket@^1.0.31: +websocket@^1.0.31, websocket@^1.0.32: version "1.0.33" resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.33.tgz#407f763fc58e74a3fa41ca3ae5d78d3f5e3b82a5" integrity sha512-XwNqM2rN5eh3G2CUQE3OHZj+0xfdH42+OFK6LdC2yqiC0YU8e5UK0nYre220T0IyyN031V/XOvtHvXozvJYFWA== @@ -9529,6 +11112,11 @@ whatwg-fetch@2.0.4: resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== +whatwg-fetch@^3.5.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.1.tgz#93bc4005af6c2cc30ba3e42ec3125947c8f54ed3" + integrity sha512-IEmN/ZfmMw6G1hgZpVd0LuZXOQDisrMOZrzYd5x3RAK4bMPlJohKUZWZ9t/QsTvH0dV9TbPDcc2OSuIDcihnHA== + which-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" @@ -9539,6 +11127,19 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= +which-typed-array@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.4.tgz#8fcb7d3ee5adf2d771066fba7cf37e32fe8711ff" + integrity sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA== + dependencies: + available-typed-arrays "^1.0.2" + call-bind "^1.0.0" + es-abstract "^1.18.0-next.1" + foreach "^2.0.5" + function-bind "^1.1.1" + has-symbols "^1.0.1" + is-typed-array "^1.1.3" + which@1.3.1, which@^1.1.1, which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -9560,6 +11161,23 @@ wide-align@1.1.3: dependencies: string-width "^1.0.2 || 2" +window-getters@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/window-getters/-/window-getters-1.0.0.tgz#b5b264538c4c79cead027f9997850222bf6d0852" + integrity sha512-xyvEFq3x+7dCA7NFhqOmTMk0fPmmAzCUYL2svkw2LGBaXXQLRP0lFnfXHzysri9WZNMkzp/FD1u0w2Qc7Co+JA== + +window-getters@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/window-getters/-/window-getters-1.0.1.tgz#a564c258413b4808789633d8bfb7ed741d798aa0" + integrity sha512-cojBfDeV58XEurDgj+rre15c7dvu27bWCPlOIpwQgreOsw6qQk0UGDR1hi7ZHKw5+L0AENUNNWGG2h4yr2Y3hQ== + +window-metadata@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/window-metadata/-/window-metadata-1.0.0.tgz#fece0446db2f50be0612a211f25fc693917e823b" + integrity sha512-eYoXsZ9X4J+6xZgbHhNAatSR5bCtT409q8B+2Ol9ySx7qsdtgVZcNfox4qszFmKlGsFtT2b1Tcmcy69bRMObcg== + dependencies: + window-getters "^1.0.0" + window-size@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" @@ -9614,6 +11232,11 @@ ws@7.2.3: resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.3.tgz#a5411e1fb04d5ed0efee76d26d5c46d830c39b46" integrity sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ== +ws@7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.0.tgz#4b2f7f219b3d3737bc1a2fbf145d825b94d38ffd" + integrity sha512-iFtXzngZVXPGgpTlP1rBqsUK82p9tKqsWRPg5L56egiljujJT3vGAYnHANvFxBieXrTFavhzhxW52jnaWV+w2w== + ws@^3.0.0: version "3.3.3" resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" @@ -9722,6 +11345,13 @@ yargs-parser@13.1.2, yargs-parser@^13.1.0, yargs-parser@^13.1.2: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" + integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== + dependencies: + camelcase "^4.1.0" + yargs-parser@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" @@ -9766,7 +11396,7 @@ yargs@13.2.4: y18n "^4.0.0" yargs-parser "^13.1.0" -yargs@13.3.2, yargs@^13.3.0: +yargs@13.3.2, yargs@^13.2.4, yargs@^13.3.0: version "13.3.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== From 3a3ada44eaf744e59a0fc3146c494c55eab3b52e Mon Sep 17 00:00:00 2001 From: alleycatdev Date: Fri, 19 Feb 2021 08:38:22 -0500 Subject: [PATCH 063/118] lock --- src/core/ElasticDAO.sol | 8 +- yarn.lock | 1758 ++------------------------------------- 2 files changed, 68 insertions(+), 1698 deletions(-) diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index 2411359..093634c 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -13,10 +13,10 @@ import '../services/Configurator.sol'; import '../services/ReentryProtection.sol'; /** -* @dev The ElasticDAO contract, -* Serves as a blueprint for all the parameters and permissions -* required by an ElasticDAO -*/ + * @dev The ElasticDAO contract, + * Serves as a blueprint for all the parameters and permissions + * required by an ElasticDAO + */ contract ElasticDAO is ReentryProtection { address public deployer; address public ecosystemModelAddress; diff --git a/yarn.lock b/yarn.lock index b61dbda..3f8ef34 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,19 +9,7 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/helper-module-imports@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz#ec67e4404f41750463e455cc3203f6a32e93fcb0" - integrity sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-plugin-utils@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.12.13.tgz#174254d0f2424d8aefb4dd48057511247b0a9eeb" - integrity sha512-C+10MXCXJLiR6IeG9+Wiejt9jmtFpxUc3MQqCmPY8hfCjyUGl9kT+B2okzEZrtykiwrc4dbCPdDoz0A/HQbDaA== - -"@babel/helper-validator-identifier@^7.10.4", "@babel/helper-validator-identifier@^7.12.11": +"@babel/helper-validator-identifier@^7.10.4": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== @@ -35,36 +23,6 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/plugin-transform-runtime@^7.5.5": - version "7.12.17" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.17.tgz#329cb61d293b7e60a7685b91dda7c300668cee18" - integrity sha512-s+kIJxnaTj+E9Q3XxQZ5jOo+xcogSe3V78/iFQ5RmoT0jROdpcdxhfGdq/VLqW1hFSzw6VjqN8aQqTaAMixWsw== - dependencies: - "@babel/helper-module-imports" "^7.12.13" - "@babel/helper-plugin-utils" "^7.12.13" - semver "^5.5.1" - -"@babel/runtime@^7.12.5", "@babel/runtime@^7.5.5": - version "7.12.18" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.18.tgz#af137bd7e7d9705a412b3caaf991fe6aaa97831b" - integrity sha512-BogPQ7ciE6SYAUPtlm9tWbgI9+2AgqSam6QivMgXgAT+fKbgppaj4ZX15MHeLC1PVF5sNk70huBu20XxWOs8Cg== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/types@^7.12.13": - version "7.12.17" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.17.tgz#9d711eb807e0934c90b8b1ca0eb1f7230d150963" - integrity sha512-tNMDjcv/4DIcHxErTgwB9q2ZcYyN0sUfgGKUK/mm1FJK7Wz+KstoEekxrl/tBiNDgLK1HGi+sppj1An/1DR4fQ== - dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - lodash "^4.17.19" - to-fast-properties "^2.0.0" - -"@chaitanyapotti/random-id@^1.0.3": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@chaitanyapotti/random-id/-/random-id-1.0.3.tgz#f52f647cfe9f79fc7723ea2b01b0ad3889204002" - integrity sha512-xiVWA2vTL3jQeuZ+yebXAtwIeEbh/13RAFxvRq0YxeUc02RBOGyC9eyDKXjwlN0uxPtnEwWxsELkSwnaH5kxjg== - "@elastic-dao/sdk@0.9.0-beta9": version "0.9.0-beta9" resolved "https://registry.yarnpkg.com/@elastic-dao/sdk/-/sdk-0.9.0-beta9.tgz#99c0975cf2efe9cf40b84de51a5f231ea78bdf74" @@ -187,21 +145,6 @@ "@ethersproject/properties" "^5.0.7" "@ethersproject/strings" "^5.0.8" -"@ethersproject/abi@5.0.7": - version "5.0.7" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.0.7.tgz#79e52452bd3ca2956d0e1c964207a58ad1a0ee7b" - 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" - "@ethersproject/abstract-provider@5.0.8", "@ethersproject/abstract-provider@^5.0.8": version "5.0.8" resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.0.8.tgz#880793c29bfed33dff4c2b2be7ecb9ba966d52c0" @@ -237,17 +180,6 @@ "@ethersproject/logger" "^5.0.8" "@ethersproject/rlp" "^5.0.7" -"@ethersproject/address@^5.0.4": - version "5.0.10" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.0.10.tgz#2bc69fdff4408e0570471cd19dee577ab06a10d0" - integrity sha512-70vqESmW5Srua1kMDIN6uVfdneZMaMyRYH4qPvkAXGkbicrCOsA9m01vIloA4wYiiF+HLEfL1ENKdn5jb9xiAw== - dependencies: - "@ethersproject/bignumber" "^5.0.13" - "@ethersproject/bytes" "^5.0.9" - "@ethersproject/keccak256" "^5.0.7" - "@ethersproject/logger" "^5.0.8" - "@ethersproject/rlp" "^5.0.7" - "@ethersproject/base64@5.0.7", "@ethersproject/base64@^5.0.7": version "5.0.7" resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.0.7.tgz#d5da73699b4a33dc92bd8e5056ad1880b262057d" @@ -272,15 +204,6 @@ "@ethersproject/logger" "^5.0.8" bn.js "^4.4.0" -"@ethersproject/bignumber@^5.0.7": - version "5.0.14" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.0.14.tgz#605bc61dcbd4a8c6df8b5a7a77c0210273f3de8a" - integrity sha512-Q4TjMq9Gg3Xzj0aeJWqJgI3tdEiPiET7Y5OtNtjTAODZ2kp4y9jMNg97zVcvPedFvGROdpGDyCI77JDFodUzOw== - dependencies: - "@ethersproject/bytes" "^5.0.9" - "@ethersproject/logger" "^5.0.8" - bn.js "^4.4.0" - "@ethersproject/bytes@5.0.9", "@ethersproject/bytes@>=5.0.0-beta.129", "@ethersproject/bytes@^5.0.2", "@ethersproject/bytes@^5.0.9": version "5.0.9" resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.0.9.tgz#2748247402ad20df69f3a3e935dc7b58c0d75c08" @@ -288,13 +211,6 @@ dependencies: "@ethersproject/logger" "^5.0.8" -"@ethersproject/bytes@^5.0.4": - version "5.0.10" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.0.10.tgz#aa49afe7491ba24ff76fa33d98677351263f9ba4" - integrity sha512-vpu0v1LZ1j1s9kERQIMnVU69MyHEzUff7nqK9XuCU4vx+AM8n9lU2gj7jtJIvGSt9HzatK/6I6bWusI5nyuaTA== - dependencies: - "@ethersproject/logger" "^5.0.8" - "@ethersproject/constants@5.0.8", "@ethersproject/constants@>=5.0.0-beta.128", "@ethersproject/constants@^5.0.8": version "5.0.8" resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.0.8.tgz#50f2e23f48c0d1d0de3759ea79b68ec3e06435a1" @@ -302,13 +218,6 @@ dependencies: "@ethersproject/bignumber" "^5.0.13" -"@ethersproject/constants@^5.0.4": - version "5.0.9" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.0.9.tgz#81ac44c3bf612de63eb1c490b314ea1b932cda9f" - integrity sha512-2uAKH89UcaJP/Sc+54u92BtJtZ4cPgcS1p0YbB1L3tlkavwNvth+kNCUplIB1Becqs7BOZr0B/3dMNjhJDy4Dg== - dependencies: - "@ethersproject/bignumber" "^5.0.13" - "@ethersproject/contracts@5.0.9", "@ethersproject/contracts@^5.0.2": version "5.0.9" resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.0.9.tgz#6c67c0ebe20ee1af903f7f43568401023334a181" @@ -338,20 +247,6 @@ "@ethersproject/properties" "^5.0.7" "@ethersproject/strings" "^5.0.8" -"@ethersproject/hash@^5.0.4": - version "5.0.11" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.0.11.tgz#da89517438bbbf8a39df56fff09f0a71669ae7a7" - integrity sha512-H3KJ9fk33XWJ2djAW03IL7fg3DsDMYjO1XijiUb1hJ85vYfhvxu0OmsU7d3tg2Uv1H1kFSo8ghr3WFQ8c+NL3g== - dependencies: - "@ethersproject/abstract-signer" "^5.0.10" - "@ethersproject/address" "^5.0.9" - "@ethersproject/bignumber" "^5.0.13" - "@ethersproject/bytes" "^5.0.9" - "@ethersproject/keccak256" "^5.0.7" - "@ethersproject/logger" "^5.0.8" - "@ethersproject/properties" "^5.0.7" - "@ethersproject/strings" "^5.0.8" - "@ethersproject/hdnode@5.0.8", "@ethersproject/hdnode@^5.0.8": version "5.0.8" resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.0.8.tgz#2b52ede921cfbce8de49da774ec5a74025fc2bb1" @@ -397,24 +292,11 @@ "@ethersproject/bytes" "^5.0.9" js-sha3 "0.5.7" -"@ethersproject/keccak256@^5.0.3": - version "5.0.8" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.0.8.tgz#13aaf69e1c8bd15fc59a2ebd055c0878f2a059c8" - integrity sha512-zoGbwXcWWs9MX4NOAZ7N0hhgIRl4Q/IO/u9c/RHRY4WqDy3Ywm0OLamEV53QDwhjwn3YiiVwU1Ve5j7yJ0a/KQ== - dependencies: - "@ethersproject/bytes" "^5.0.9" - js-sha3 "0.5.7" - "@ethersproject/logger@5.0.8", "@ethersproject/logger@>=5.0.0-beta.129", "@ethersproject/logger@^5.0.8": version "5.0.8" resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.0.8.tgz#135c1903d35c878265f3cbf2b287042c4c20d5d4" integrity sha512-SkJCTaVTnaZ3/ieLF5pVftxGEFX56pTH+f2Slrpv7cU0TNpUZNib84QQdukd++sWUp/S7j5t5NW+WegbXd4U/A== -"@ethersproject/logger@^5.0.5": - version "5.0.9" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.0.9.tgz#0e6a0b3ecc938713016954daf4ac7967467aa763" - integrity sha512-kV3Uamv3XOH99Xf3kpIG3ZkS7mBNYcLDM00JSDtNgNB4BihuyxpQzIZPRIDmRi+95Z/R1Bb0X2kUNHa/kJoVrw== - "@ethersproject/networks@5.0.7", "@ethersproject/networks@^5.0.7": version "5.0.7" resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.0.7.tgz#8d06e41197b27c2404d89a29ca21f741a01acbfc" @@ -437,13 +319,6 @@ dependencies: "@ethersproject/logger" "^5.0.8" -"@ethersproject/properties@^5.0.3": - version "5.0.8" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.0.8.tgz#e45d28d25402c73394873dbf058f856c966cae01" - integrity sha512-zEnLMze2Eu2VDPj/05QwCwMKHh506gpT9PP9KPVd4dDB+5d6AcROUYVLoIIQgBYK7X/Gw0UJmG3oVtnxOQafAw== - dependencies: - "@ethersproject/logger" "^5.0.8" - "@ethersproject/providers@5.0.19", "@ethersproject/providers@^5.0.5": version "5.0.19" resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.0.19.tgz#94c8f1a86755ee4187911fc6250e94b1116c089a" @@ -524,15 +399,6 @@ "@ethersproject/constants" "^5.0.8" "@ethersproject/logger" "^5.0.8" -"@ethersproject/strings@^5.0.4": - version "5.0.9" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.0.9.tgz#8e2eb2918b140231e1d1b883d77e43213a8ac280" - integrity sha512-ogxBpcUpdO524CYs841MoJHgHxEPUy0bJFDS4Ezg8My+WYVMfVAOlZSLss0Rurbeeam8CpUVDzM4zUn09SU66Q== - dependencies: - "@ethersproject/bytes" "^5.0.9" - "@ethersproject/constants" "^5.0.8" - "@ethersproject/logger" "^5.0.8" - "@ethersproject/transactions@5.0.9", "@ethersproject/transactions@^5.0.0-beta.135", "@ethersproject/transactions@^5.0.2", "@ethersproject/transactions@^5.0.9": version "5.0.9" resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.0.9.tgz#ccfcc1d395b5e3ce7342545fa28bfe5541182fd6" @@ -600,82 +466,6 @@ "@ethersproject/properties" "^5.0.7" "@ethersproject/strings" "^5.0.8" -"@json-rpc-tools/types@^1.6.1": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@json-rpc-tools/types/-/types-1.6.1.tgz#b892599c31fb1cd62172b86fb38d0bfcbd52fe30" - integrity sha512-Fg8Dke0+K92cZaWm0/vFIZgNdHftEI5GXbgT2rwUmmo/GrjlXJn5cPRghq5ee+QGTeZvWcjYmqdwrdGbTGBCMw== - dependencies: - keyvaluestorage-interface "^1.0.0" - -"@json-rpc-tools/utils@1.6.1": - version "1.6.1" - resolved "https://registry.yarnpkg.com/@json-rpc-tools/utils/-/utils-1.6.1.tgz#26e37d0fc4522721158d0f6057e136daa8813263" - integrity sha512-cNwP4QapAls+xATU8zLLqPYa9qCbgwEyWEK7vE1oH91b3LfbUYwHtiWZ1+rv0X/mh/9cWNTo2Oi2Sah/QX0WwA== - dependencies: - "@json-rpc-tools/types" "^1.6.1" - -"@ledgerhq/cryptoassets@^5.44.1": - version "5.44.1" - resolved "https://registry.yarnpkg.com/@ledgerhq/cryptoassets/-/cryptoassets-5.44.1.tgz#15c4aeae21049e899fe1af711150deb2540f5e55" - integrity sha512-UhAL5kH81VgU2DGXjrz+tX3fXwYtJWSrDkna01lBl56Js8S57n/s47fajpU93K2msYqjJ5hhKaNgSvjNSmeMoA== - dependencies: - invariant "2" - -"@ledgerhq/devices@^5.43.0": - version "5.43.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/devices/-/devices-5.43.0.tgz#9b8ca838a7f8ece74098dc84aa6468eb7651972d" - integrity sha512-/M5ZLUBdBK7Vl2T4yNJbES3Z4w55LbPdxD9rcOBAKH/5V3V0obQv6MUasP9b7DSkwGSSLCOGZLohoT2NxK2D2A== - dependencies: - "@ledgerhq/errors" "^5.43.0" - "@ledgerhq/logs" "^5.43.0" - rxjs "^6.6.3" - semver "^7.3.4" - -"@ledgerhq/errors@^5.34.0", "@ledgerhq/errors@^5.43.0": - version "5.43.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-5.43.0.tgz#6bec77ebc31c4333a7f8d13b1f3f4d739b859b75" - integrity sha512-ZjKlUQbIn/DHXAefW3Y1VyDrlVhVqqGnXzrqbOXuDbZ2OAIfSe/A1mrlCbWt98jP/8EJQBuCzBOtnmpXIL/nYg== - -"@ledgerhq/hw-app-eth@^5.21.0": - version "5.44.1" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-app-eth/-/hw-app-eth-5.44.1.tgz#eb029518a6f92f56800ec8ce3b818a9f0d1d13c8" - integrity sha512-GdrkfDVlDzLfqln79t7J8rZ9IhHcE9DtfS9QBiasu7vKY4hrGHKIQEB3b2ogG1tkZGxzbsS5m8LmxuRhlmiGqQ== - dependencies: - "@ledgerhq/cryptoassets" "^5.44.1" - "@ledgerhq/errors" "^5.43.0" - "@ledgerhq/hw-transport" "^5.43.0" - bignumber.js "^9.0.1" - rlp "^2.2.6" - -"@ledgerhq/hw-transport-u2f@^5.21.0": - version "5.34.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-u2f/-/hw-transport-u2f-5.34.0.tgz#53466e4f07e177ec29b1ea061b6c56a57439a0cd" - integrity sha512-EM6LcbdD6Xo/msedbAWalBZlv89XAZrAZwL5zN9eKlUcWPjjG8c9+t5NedR/jmIaGuzIUVseUCIRxczqd5byOw== - dependencies: - "@ledgerhq/errors" "^5.34.0" - "@ledgerhq/hw-transport" "^5.34.0" - "@ledgerhq/logs" "^5.30.0" - u2f-api "0.2.7" - -"@ledgerhq/hw-transport@^5.34.0", "@ledgerhq/hw-transport@^5.43.0": - version "5.43.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-5.43.0.tgz#dc9863706d31bae96aed66f193b8922a876cbf82" - integrity sha512-0S+TGmiEJOqgM2MWnolZQPVKU3oRtoDj4yUFUZts9Owbgby+hmo4dIKTvv0vs8mwknQbOZByUgh3MQOQiK70MQ== - dependencies: - "@ledgerhq/devices" "^5.43.0" - "@ledgerhq/errors" "^5.43.0" - events "^3.2.0" - -"@ledgerhq/logs@^5.30.0", "@ledgerhq/logs@^5.43.0": - version "5.43.0" - resolved "https://registry.yarnpkg.com/@ledgerhq/logs/-/logs-5.43.0.tgz#031bad4b8a3525c5e14210afde0bc09c79564026" - integrity sha512-QWfQjea3ekh9ZU+JeL2tJC9cTKLZ/JrcS0JGatLejpRYxQajvnHvHfh0dbHOKXEaXfCskEPTZ3f1kzuts742GA== - -"@metamask/safe-event-emitter@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@metamask/safe-event-emitter/-/safe-event-emitter-2.0.0.tgz#af577b477c683fad17c619a78208cede06f9605c" - integrity sha512-/kSXhY692qiV1MXu6EeOZvg5nECLclxNXcKCxJ3cXQgYuRymRHpdx/t7JXfsK+JLjwA1e1c1/SBrlQYpusC29Q== - "@nodelib/fs.scandir@2.1.4": version "2.1.4" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" @@ -760,44 +550,6 @@ promise.allsettled "^1.0.2" regenerator-runtime "^0.13.5" -"@portis/web3-provider-engine@1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@portis/web3-provider-engine/-/web3-provider-engine-1.1.2.tgz#97f383156ea6b70fba69ae93a945fdd94159b1ba" - integrity sha512-NiiF0UPfngf4ulo32ybEDAMaad4i7h44HJaN8ea8HHt/vaFiUcPtINjC2o21jhWaLANerW4ZbOrNs1iCLH4p6A== - dependencies: - async "^2.5.0" - backoff "^2.5.0" - clone "^2.0.0" - cross-fetch "^2.1.0" - eth-block-tracker "^4.2.0" - eth-json-rpc-filters "^4.0.2" - eth-json-rpc-infura "^3.1.0" - eth-json-rpc-middleware "^5.0.2" - eth-sig-util "2.5.3" - ethereumjs-block "^1.2.2" - ethereumjs-tx "^1.2.0" - ethereumjs-util "^5.1.5" - ethereumjs-vm "^2.3.4" - json-rpc-error "^2.0.0" - 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" - -"@portis/web3@^2.0.0-beta.57": - version "2.0.0-beta.59" - resolved "https://registry.yarnpkg.com/@portis/web3/-/web3-2.0.0-beta.59.tgz#2e5292d8e1daf6070aa3b4a8cb33c1a9e0315011" - integrity sha512-QdIdrI3uK+TyT+dxRK5bEYOi2PBlUDJ7vszR2uu0bT49wy7O52B9td6fL/5gsfk0VpCsmrYov3x3gEQYwGUyvQ== - dependencies: - "@portis/web3-provider-engine" "1.1.2" - ethereumjs-util "5.2.0" - penpal "3.0.7" - pocket-js-core "0.0.3" - "@resolver-engine/core@^0.3.3": version "0.3.3" resolved "https://registry.yarnpkg.com/@resolver-engine/core/-/core-0.3.3.tgz#590f77d85d45bc7ecc4e06c654f41345db6ca967" @@ -925,70 +677,6 @@ dependencies: defer-to-connect "^1.0.1" -"@toruslabs/eccrypto@^1.1.5": - version "1.1.5" - resolved "https://registry.yarnpkg.com/@toruslabs/eccrypto/-/eccrypto-1.1.5.tgz#c4b9319e02e913fecd90f3f2b98ae2699e7d498e" - integrity sha512-7sSAQ9M6b9wzxpIE98yi8zPh3wgdYiVBxvMvCOCb4c65UDOT6lpZyH30qP2fX30PaI+I2Ra+FwjfCCUuJegxfQ== - dependencies: - acorn "^7.4.0" - elliptic "^6.5.3" - es6-promise "^4.2.8" - nan "^2.14.1" - optionalDependencies: - secp256k1 "^3.8.0" - -"@toruslabs/fetch-node-details@^2.3.4": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@toruslabs/fetch-node-details/-/fetch-node-details-2.4.0.tgz#4aebc3a4655d60608b2c32393ac570165873bd7e" - integrity sha512-aPk3dYdvEe9MuHiqPAdr3QYP3cR2+SB2pU2VFx3F7fjNBfxplfhNYTw+aAkzX54Uwrrr4zSsBjFcst8p9P8vAg== - dependencies: - web3-eth-contract "^1.3.4" - web3-utils "^1.3.4" - -"@toruslabs/http-helpers@^1.3.5": - version "1.3.6" - resolved "https://registry.yarnpkg.com/@toruslabs/http-helpers/-/http-helpers-1.3.6.tgz#2ec09aaac3e2707077fe19e5fdc1877fde43a222" - integrity sha512-Xw5NkDsqZ3pQsAkm7C/2Za/Lf+uhbpL4r3+IoHrLRNS8+l5O3wUrXgGbNGjbQOtm3NocukVWaaipKy4YZIAegw== - dependencies: - deepmerge "^4.2.2" - -"@toruslabs/torus-embed@^1.9.2": - version "1.9.9" - resolved "https://registry.yarnpkg.com/@toruslabs/torus-embed/-/torus-embed-1.9.9.tgz#849b50b4c75bf1ae5cda2416dd37d4484f39df63" - integrity sha512-DUVmqRzmigh3SYOSeBeoezXhfviRFaBT6QfoeGpyim/TlSebjlhElE7GQHBHvNBGxefxTUN3VUFn9mPg07bw2g== - dependencies: - "@chaitanyapotti/random-id" "^1.0.3" - "@toruslabs/fetch-node-details" "^2.3.4" - "@toruslabs/http-helpers" "^1.3.5" - "@toruslabs/torus.js" "^2.2.13" - create-hash "^1.2.0" - deepmerge "^4.2.2" - eth-rpc-errors "^4.0.2" - fast-deep-equal "^3.1.3" - is-stream "^2.0.0" - json-rpc-engine "^6.1.0" - json-rpc-middleware-stream "^3.0.0" - loglevel "^1.7.1" - obj-multiplex "^1.0.0" - obs-store "^4.0.3" - post-message-stream "^3.0.0" - pump "^3.0.0" - safe-event-emitter "^1.0.1" - -"@toruslabs/torus.js@^2.2.13": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@toruslabs/torus.js/-/torus.js-2.3.0.tgz#ddad85d1806abe2b30b8103b60e1ecc6e47485d0" - integrity sha512-ar/14QE2MST53Cpdtto13L6AlN53IOM0LRS7uuFk7a8TFeI+RbeQquY68lgn3ESEhDPzAxOuLJ3s6M3nBA1arg== - dependencies: - "@toruslabs/eccrypto" "^1.1.5" - "@toruslabs/http-helpers" "^1.3.5" - bn.js "^5.1.3" - elliptic "^6.5.4" - json-stable-stringify "^1.0.1" - loglevel "^1.7.1" - memory-cache "^0.2.0" - web3-utils "^1.3.3" - "@truffle/error@^0.0.11": version "0.0.11" resolved "https://registry.yarnpkg.com/@truffle/error/-/error-0.0.11.tgz#2789c0042d7e796dcbb840c7a9b5d2bcd8e0e2d8" @@ -1161,102 +849,6 @@ resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== -"@walletconnect/client@^1.3.6": - version "1.3.6" - resolved "https://registry.yarnpkg.com/@walletconnect/client/-/client-1.3.6.tgz#537b7af6bf87a906fcf171fd5bc4e56a2a3d1908" - integrity sha512-HmzUpF/cPqPf8huaVg45SXk2hKQ6yxisy/qJ+51SoRGmtZDokJGxpq6+RFOnE8jFtUhTZRaK9UZ/jvsJAxIhEw== - dependencies: - "@walletconnect/core" "^1.3.6" - "@walletconnect/iso-crypto" "^1.3.6" - "@walletconnect/types" "^1.3.6" - "@walletconnect/utils" "^1.3.6" - -"@walletconnect/core@^1.3.6": - version "1.3.6" - resolved "https://registry.yarnpkg.com/@walletconnect/core/-/core-1.3.6.tgz#1690081bc4666b6644ed6a1bed128509a5259e50" - integrity sha512-1HHP2xZI6b88WQgszs3gP5xkkCwwlWgDJz+J6ADGzVXhQP21p1mZhKezUtx27rOtQimMIrPDfgPyAHwQBZkkSw== - dependencies: - "@walletconnect/socket-transport" "^1.3.6" - "@walletconnect/types" "^1.3.6" - "@walletconnect/utils" "^1.3.6" - -"@walletconnect/http-connection@^1.3.6": - version "1.3.6" - resolved "https://registry.yarnpkg.com/@walletconnect/http-connection/-/http-connection-1.3.6.tgz#98be28c312cfcca86b962b5a3a2813ac7b3f4866" - integrity sha512-uK9Z8JP7dxo59t9gIQqcAfiuhlpl4fQFh6gRvP8V7sjrEfxqN/GkJaTVzbE6VaYivrSaVeut65wcBOJS47R8Aw== - dependencies: - "@walletconnect/types" "^1.3.6" - "@walletconnect/utils" "^1.3.6" - eventemitter3 "4.0.7" - xhr2-cookies "1.1.0" - -"@walletconnect/iso-crypto@^1.3.6": - version "1.3.6" - resolved "https://registry.yarnpkg.com/@walletconnect/iso-crypto/-/iso-crypto-1.3.6.tgz#e6003d46fbc12b979e96269d94eebd8e801c0305" - integrity sha512-HypXNSmMAuEvNhllXWsCHtCVK4JfFFcZqPijurcXmOtWanjZV+8NuiYnKG11qAllSbYRwqKchb7GTDp33n0g0Q== - dependencies: - "@pedrouid/iso-crypto" "^1.0.0" - "@walletconnect/types" "^1.3.6" - "@walletconnect/utils" "^1.3.6" - -"@walletconnect/mobile-registry@^1.3.6": - version "1.3.6" - resolved "https://registry.yarnpkg.com/@walletconnect/mobile-registry/-/mobile-registry-1.3.6.tgz#891d08b62c8e5c61f96203aad588c2c463c5d7f3" - integrity sha512-OhOCFJhUWKVbRzU9XcAcYIW9cC6gNb+kFttIAtjbaocRGgN+n5NDoUZsrrd6iurjvS6ToCWkalvlYbXDU5/xtw== - -"@walletconnect/qrcode-modal@^1.3.6": - version "1.3.6" - resolved "https://registry.yarnpkg.com/@walletconnect/qrcode-modal/-/qrcode-modal-1.3.6.tgz#4ab9562e19069d453e04a3376f485aadf5f91de3" - integrity sha512-fQ7DQViX913EUc36rsglr6Jd76DbOiATUVroFZ8VeVcgbBuH9dTqBeCRuBCQ0MBe8v33IpRBjZDTsIdSOxFiaA== - dependencies: - "@walletconnect/mobile-registry" "^1.3.6" - "@walletconnect/types" "^1.3.6" - "@walletconnect/utils" "^1.3.6" - preact "10.4.1" - qrcode "1.4.4" - -"@walletconnect/socket-transport@^1.3.6": - version "1.3.6" - resolved "https://registry.yarnpkg.com/@walletconnect/socket-transport/-/socket-transport-1.3.6.tgz#702951831ff17db8f4c337dcdcb107cce377dae4" - integrity sha512-dvO8mRECU4I6FpoQX9GMh9BNzR2/g6vcj9LEIjgApW6Rfx0mCKUgoVBSi2W7NHC94zfdYiJdaH950oismj5gNw== - dependencies: - "@walletconnect/types" "^1.3.6" - "@walletconnect/utils" "^1.3.6" - ws "7.3.0" - -"@walletconnect/types@^1.3.6": - version "1.3.6" - resolved "https://registry.yarnpkg.com/@walletconnect/types/-/types-1.3.6.tgz#892da6fb4570d9bc5450dc1a5810d7b4d345dd08" - integrity sha512-fNir3Pi1ZpuVlgNr8qtP2LOSsV9rNgJGHmBnHHqKNmpuRpPxG1mhmKFdDHNGyVIP5bM5CWIXmlULDTax63UJbg== - -"@walletconnect/utils@^1.3.6": - version "1.3.6" - resolved "https://registry.yarnpkg.com/@walletconnect/utils/-/utils-1.3.6.tgz#e55cb5510eb41b4ae6be8e88c1de42abf309bdd3" - integrity sha512-nzTO5A3Ltjrsu6u8SR/KqdHTH03848KIj5MQlOCUjwxW1fXOvuri8+kwFKqlMn0bk1Qvlt6rrOptbt14PW8kSA== - dependencies: - "@json-rpc-tools/utils" "1.6.1" - "@walletconnect/types" "^1.3.6" - bn.js "4.11.8" - detect-browser "5.1.0" - enc-utils "3.0.0" - js-sha3 "0.8.0" - query-string "6.13.5" - safe-json-utils "1.0.0" - window-getters "1.0.0" - window-metadata "1.0.0" - -"@walletconnect/web3-provider@^1.3.1": - version "1.3.6" - resolved "https://registry.yarnpkg.com/@walletconnect/web3-provider/-/web3-provider-1.3.6.tgz#a09f0c08115475918ed4fe8d0503d28e29ac1877" - integrity sha512-49B7P4DjpK3LziW/IQTORc6+K2LmmK/qPFfjq/RWi5NIl/09D1D73UhCEIjZPJwNiAdd2V3wVKtSr/noj3PLgw== - dependencies: - "@walletconnect/client" "^1.3.6" - "@walletconnect/http-connection" "^1.3.6" - "@walletconnect/qrcode-modal" "^1.3.6" - "@walletconnect/types" "^1.3.6" - "@walletconnect/utils" "^1.3.6" - web3-provider-engine "16.0.1" - "@yarnpkg/lockfile@^1.1.0": version "1.1.0" resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" @@ -1345,7 +937,7 @@ aes-js@3.0.0: resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" integrity sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0= -aes-js@^3.1.1, aes-js@^3.1.2: +aes-js@^3.1.1: version "3.1.2" resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.1.2.tgz#db9aabde85d5caabbfc0d4f2a4446960f627146a" integrity sha512-e5pEa2kBnBOgR4Y/p20pskXI74UEz7de8ZGVo58asOtvSVG5YAbJeELPZxOmt+Bnz3rX753YKhfIn4X4l1PPRQ== @@ -1478,16 +1070,6 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= -array-filter@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" - integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= - -array-find-index@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= - array-flatten@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" @@ -1534,11 +1116,6 @@ array.prototype.map@^1.0.3: es-array-method-boxes-properly "^1.0.0" is-string "^1.0.5" -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= - asap@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" @@ -1603,13 +1180,6 @@ async-limiter@~1.0.0: resolved "https://registry.yarnpkg.com/async-limiter/-/async-limiter-1.0.1.tgz#dd379e94f0db8310b08291f9d64c3209766617fd" integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== -async-mutex@^0.2.6: - version "0.2.6" - resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.2.6.tgz#0d7a3deb978bc2b984d5908a2038e1ae2e54ff40" - integrity sha512-Hs4R+4SPgamu6rSGW8C7cV9gaWUKEHykfzCCvIRuaVv636Ju10ZdeUbvb4TBEW0INuq2DHZqXbK4Nd3yG4RaRw== - dependencies: - tslib "^2.0.0" - async@1.x, async@^1.4.2: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" @@ -1622,11 +1192,6 @@ async@2.6.2: dependencies: lodash "^4.17.11" -async@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720" - integrity sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw== - async@^2.0.1, async@^2.1.2, async@^2.4.0, async@^2.5.0, async@^2.6.1: version "2.6.3" resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" @@ -1649,33 +1214,6 @@ atob@^2.1.2: resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== -authereum@^0.1.12: - version "0.1.14" - resolved "https://registry.yarnpkg.com/authereum/-/authereum-0.1.14.tgz#5655e543b296d899136e350d09f9cfe4c12fbc38" - integrity sha512-o1lsXXGg+oYDAEutZ8Ak1Qn2Dnk+qSyQ2ZokyLHRSYGJj6HpEHaSlQA6W3VTHD5r68Q+W0JD/BN9hDSF2xyshQ== - dependencies: - async "3.2.0" - bn.js "5.1.2" - ethereum-private-key-to-address "0.0.3" - ethers "4.0.47" - eventemitter3 "4.0.0" - is-buffer "2.0.4" - penpal "4.1.1" - pify "4.0.1" - querystring "0.2.0" - store "2.0.12" - to-hex "0.0.11" - uuidv4 "6.0.6" - web3-provider-engine "15.0.4" - web3-utils "1.2.1" - -available-typed-arrays@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5" - integrity sha512-XWX3OX8Onv97LMk/ftVyBibpGwY5a8SmuxZPzeOxqmuEqUCOM9ZE+uIaD1VNJ5QnvU2UQusvmKbuM1FR8QWGfQ== - dependencies: - array-filter "^1.0.0" - aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" @@ -1686,14 +1224,6 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== -axios@^0.18.0: - version "0.18.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.1.tgz#ff3f0de2e7b5d180e757ad98000f1081b87bcea3" - integrity sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g== - dependencies: - follow-redirects "1.5.10" - is-buffer "^2.0.2" - axios@^0.21.1: version "0.21.1" resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" @@ -2279,12 +1809,7 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -bind-decorator@^1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/bind-decorator/-/bind-decorator-1.0.11.tgz#e41bc06a1f65dd9cec476c91c5daf3978488252f" - integrity sha1-5BvAah9l3ZzsR2yRxdrzl4SIJS8= - -bindings@^1.2.1, bindings@^1.5.0: +bindings@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== @@ -2309,11 +1834,6 @@ bip66@^1.1.5: dependencies: safe-buffer "^5.0.1" -bitwise@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/bitwise/-/bitwise-2.0.4.tgz#3b6f95c43d614b83b980331d3b41d78b9c902039" - integrity sha512-ZOByl1Sc8SH2/owfRfR1apaC1ELNqHqAAtfqs1Ixqk/9Bod6VxWz10MiMYXkNiL95RdFAqOGQxm1TCGPf1iFyw== - blakejs@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.1.0.tgz#69df92ef953aa88ca51a32df6ab1c54a155fc7a5" @@ -2334,54 +1854,16 @@ bn.js@4.11.8: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== -bn.js@5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.2.tgz#c9686902d3c9a27729f43ab10f9d79c2004da7b0" - integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA== - bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.10.0, bn.js@^4.11.0, bn.js@^4.11.1, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9, bn.js@^4.4.0, bn.js@^4.8.0: version "4.11.9" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== -bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2, bn.js@^5.1.3: +bn.js@^5.0.0, bn.js@^5.1.1, bn.js@^5.1.2: version "5.1.3" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ== -bnc-onboard@^1.19.2: - version "1.19.2" - resolved "https://registry.yarnpkg.com/bnc-onboard/-/bnc-onboard-1.19.2.tgz#bc293dfebfeadc834c4219b3eae7ff827f9ff9f9" - integrity sha512-+vsc70ViYz2mJbhTXhIuVMHIqlmvGVKZVWTkI8+5xnUVoFh65GubdxuN55l/J+kgEodUHejPecswgYWUTElz8A== - dependencies: - "@ledgerhq/hw-app-eth" "^5.21.0" - "@ledgerhq/hw-transport-u2f" "^5.21.0" - "@portis/web3" "^2.0.0-beta.57" - "@toruslabs/torus-embed" "^1.9.2" - "@walletconnect/web3-provider" "^1.3.1" - authereum "^0.1.12" - bignumber.js "^9.0.0" - bnc-sdk "^3.1.0" - bowser "^2.10.0" - eth-lattice-keyring "^0.2.7" - ethereumjs-tx "^2.1.2" - ethereumjs-util "^7.0.3" - fortmatic "^2.2.1" - hdkey "^2.0.1" - regenerator-runtime "^0.13.7" - trezor-connect "^8.1.9" - walletlink "^2.0.2" - web3-provider-engine "^15.0.4" - -bnc-sdk@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/bnc-sdk/-/bnc-sdk-3.1.1.tgz#60f4a56ee4d7a7a0a6ccb7ae132b7f3a63297eb3" - integrity sha512-bfQmWf8GlLBnZH0JwioImdU1PqDCjkpddwALBavOYDuKx/NMtJFwUzZP8525xxRrdGX0Lmn0BkJDAvdzJPVklg== - dependencies: - crypto-es "^1.2.2" - rxjs "^6.6.3" - sturdy-websocket "^0.1.12" - body-parser@1.19.0, body-parser@^1.16.0: version "1.19.0" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" @@ -2398,11 +1880,6 @@ body-parser@1.19.0, body-parser@^1.16.0: raw-body "2.4.0" type-is "~1.6.17" -bowser@^2.10.0: - version "2.11.0" - resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" - integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -2434,7 +1911,7 @@ braces@^3.0.1, braces@~3.0.2: dependencies: fill-range "^7.0.1" -brorand@^1.0.1, brorand@^1.1.0: +brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= @@ -2506,7 +1983,7 @@ browserslist@^3.2.6: caniuse-lite "^1.0.30000844" electron-to-chromium "^1.3.47" -bs58@^4.0.0, bs58@^4.0.1: +bs58@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" integrity sha1-vhYedsNU9veIrkBx9j806MTwpCo= @@ -2522,30 +1999,7 @@ bs58check@^2.1.2: create-hash "^1.1.0" safe-buffer "^5.1.2" -btoa@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/btoa/-/btoa-1.2.1.tgz#01a9909f8b2c93f6bf680ba26131eb30f7fa3d73" - integrity sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g== - -buffer-alloc-unsafe@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" - integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== - -buffer-alloc@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" - integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== - dependencies: - buffer-alloc-unsafe "^1.1.0" - buffer-fill "^1.0.0" - -buffer-fill@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" - integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= - -buffer-from@^1.0.0, buffer-from@^1.1.1: +buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== @@ -2567,7 +2021,7 @@ buffer-xor@^2.0.1: dependencies: safe-buffer "^5.1.1" -buffer@^5.0.5, buffer@^5.2.1, buffer@^5.4.2, buffer@^5.4.3, buffer@^5.5.0, buffer@^5.6.0: +buffer@^5.0.5, buffer@^5.2.1, buffer@^5.5.0, buffer@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -2670,25 +2124,11 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -camelcase-keys@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-4.2.0.tgz#a2aa5fb1af688758259c32c141426d78923b9b77" - integrity sha1-oqpfsa9oh1glnDLBQUJteJI7m3c= - dependencies: - camelcase "^4.1.0" - map-obj "^2.0.0" - quick-lru "^1.0.0" - camelcase@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= -camelcase@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" - integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= - camelcase@^5.0.0: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" @@ -2925,16 +2365,11 @@ clone-response@^1.0.2: dependencies: mimic-response "^1.0.0" -clone@2.1.2, clone@^2.0.0, clone@^2.1.1: +clone@2.1.2, clone@^2.0.0: version "2.1.2" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= -clsx@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" - integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA== - code-point-at@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" @@ -2999,7 +2434,7 @@ commander@3.0.2: resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== -component-emitter@^1.2.0, component-emitter@^1.2.1: +component-emitter@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== @@ -3072,7 +2507,7 @@ cookie@^0.4.1: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== -cookiejar@^2.1.0, cookiejar@^2.1.1: +cookiejar@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.2.tgz#dd8a235530752f988f9a0844f3fc589e3111125c" integrity sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA== @@ -3115,14 +2550,6 @@ cosmiconfig@^5.0.7: js-yaml "^3.13.1" parse-json "^4.0.0" -crc-32@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.0.tgz#cb2db6e29b88508e32d9dd0ec1693e7b41a18208" - integrity sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA== - dependencies: - exit-on-epipe "~1.0.1" - printj "~1.1.0" - create-ecdh@^4.0.0: version "4.0.4" resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e" @@ -3204,18 +2631,6 @@ crypto-browserify@3.12.0: randombytes "^2.0.0" randomfill "^1.0.3" -crypto-es@^1.2.2: - version "1.2.7" - resolved "https://registry.yarnpkg.com/crypto-es/-/crypto-es-1.2.7.tgz#754a6d52319a94fb4eb1f119297f17196b360f88" - integrity sha512-UUqiVJ2gUuZFmbFsKmud3uuLcNP2+Opt+5ysmljycFCyhA0+T16XJmo1ev/t5kMChMqWh7IEvURNCqsg+SjZGQ== - -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= - dependencies: - array-find-index "^1.0.1" - d@1, d@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" @@ -3264,13 +2679,6 @@ debug@4.2.0: dependencies: ms "2.1.2" -debug@=3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - debug@^3.1.0: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" @@ -3278,15 +2686,7 @@ debug@^3.1.0: dependencies: ms "^2.1.1" -decamelize-keys@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" - integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= - dependencies: - decamelize "^1.1.0" - map-obj "^1.0.0" - -decamelize@^1.1.0, decamelize@^1.1.1, decamelize@^1.2.0: +decamelize@^1.1.1, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -3332,11 +2732,6 @@ deep-is@^0.1.3, deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= -deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - defer-to-connect@^1.0.1: version "1.1.3" resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" @@ -3414,11 +2809,6 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= -detect-browser@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/detect-browser/-/detect-browser-5.1.0.tgz#0c51c66b747ad8f98a6832bf3026a5a23a7850ff" - integrity sha512-WKa9p+/MNwmTiS+V2AS6eGxic+807qvnV3hC+4z2GTY+F42h1n8AynVTMMc4EJBC32qMs6yjOTpeDEQQt/AVqQ== - detect-indent@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" @@ -3453,11 +2843,6 @@ diffie-hellman@^5.0.0: miller-rabin "^4.0.0" randombytes "^2.0.0" -dijkstrajs@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.1.tgz#d3cd81221e3ea40742cfcde556d4e99e98ddc71b" - integrity sha1-082BIh4+pAdCz83lVtTpnpjdxxs= - dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -3534,19 +2919,6 @@ electron-to-chromium@^1.3.47: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.642.tgz#8b884f50296c2ae2a9997f024d0e3e57facc2b94" integrity sha512-cev+jOrz/Zm1i+Yh334Hed6lQVOkkemk2wRozfMF4MtTR7pxf3r3L5Rbd7uX1zMcEqVJ7alJBnJL7+JffkC6FQ== -elliptic@6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" - integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== - 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" - elliptic@6.5.3, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3: version "6.5.3" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" @@ -3560,19 +2932,6 @@ elliptic@6.5.3, elliptic@^6.4.0, elliptic@^6.5.2, elliptic@^6.5.3: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" -elliptic@^6.5.4: - version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" - 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" - emoji-regex@^7.0.1: version "7.0.3" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" @@ -3588,14 +2947,6 @@ emoji-regex@^9.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.0.tgz#a26da8e832b16a9753309f25e35e3c0efb9a066a" integrity sha512-DNc3KFPK18bPdElMJnf/Pkv5TXhxFU3YFDEuGLDRtPmV4rkmCjBkCSEp22u6rBHdSN9Vlp/GK7k98prmE1Jgug== -enc-utils@3.0.0, enc-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/enc-utils/-/enc-utils-3.0.0.tgz#65935d2d6a867fa0ae995f05f3a2f055ce764dcf" - integrity sha512-e57t/Z2HzWOLwOp7DZcV0VMEY8t7ptWwsxyp6kM2b2zrk6JqIpXxzkruHAMiBsy5wg9jp/183GdiRXCvBtzsYg== - dependencies: - is-typedarray "1.0.0" - typedarray-to-buffer "3.1.5" - encode-utf8@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/encode-utf8/-/encode-utf8-1.0.3.tgz#f30fdd31da07fb596f281beb2f6b027851994cda" @@ -3624,7 +2975,7 @@ encoding@^0.1.11: dependencies: iconv-lite "^0.6.2" -end-of-stream@^1.1.0, end-of-stream@^1.4.0: +end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -3723,11 +3074,6 @@ es6-iterator@~2.0.3: es5-ext "^0.10.35" es6-symbol "^3.1.1" -es6-promise@^4.2.8: - version "4.2.8" - resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" - integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== - es6-symbol@^3.1.1, es6-symbol@~3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" @@ -4020,18 +3366,6 @@ eth-block-tracker@^3.0.0: pify "^2.3.0" tape "^4.6.3" -eth-block-tracker@^4.2.0, eth-block-tracker@^4.4.2: - version "4.4.3" - resolved "https://registry.yarnpkg.com/eth-block-tracker/-/eth-block-tracker-4.4.3.tgz#766a0a0eb4a52c867a28328e9ae21353812cf626" - integrity sha512-A8tG4Z4iNg4mw5tP1Vung9N9IjgMNqpiMoJ/FouSFwNCGHv2X0mmOYwtQOJzki6XN7r7Tyo01S29p7b224I4jw== - 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" - eth-ens-namehash@2.0.8, eth-ens-namehash@^2.0.8: version "2.0.8" resolved "https://registry.yarnpkg.com/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz#229ac46eca86d52e0c991e7cb2aef83ff0f68bcf" @@ -4061,32 +3395,6 @@ eth-gas-reporter@^0.2.20: sha1 "^1.1.1" sync-request "^6.0.0" -eth-json-rpc-errors@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/eth-json-rpc-errors/-/eth-json-rpc-errors-1.1.1.tgz#148377ef55155585981c21ff574a8937f9d6991f" - integrity sha512-WT5shJ5KfNqHi9jOZD+ID8I1kuYWNrigtZat7GOQkvwo99f8SzAVaEcWhJUv656WiZOAg3P1RiJQANtUmDmbIg== - dependencies: - fast-safe-stringify "^2.0.6" - -eth-json-rpc-errors@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/eth-json-rpc-errors/-/eth-json-rpc-errors-2.0.2.tgz#c1965de0301fe941c058e928bebaba2e1285e3c4" - integrity sha512-uBCRM2w2ewusRHGxN8JhcuOb2RN3ueAOYH/0BhqdFmQkZx5lj5+fLKTz0mIVOzd4FG5/kUksCzCD7eTEim6gaA== - dependencies: - fast-safe-stringify "^2.0.6" - -eth-json-rpc-filters@^4.0.2, eth-json-rpc-filters@^4.1.1, eth-json-rpc-filters@^4.2.1: - version "4.2.2" - resolved "https://registry.yarnpkg.com/eth-json-rpc-filters/-/eth-json-rpc-filters-4.2.2.tgz#eb35e1dfe9357ace8a8908e7daee80b2cd60a10d" - integrity sha512-DGtqpLU7bBg63wPMWg1sCpkKCf57dJ+hj/k3zF26anXMzkmtSBDExL8IhUu7LUd34f0Zsce3PYNO2vV2GaTzaw== - dependencies: - "@metamask/safe-event-emitter" "^2.0.0" - async-mutex "^0.2.6" - eth-json-rpc-middleware "^6.0.0" - eth-query "^2.1.2" - json-rpc-engine "^6.1.0" - pify "^5.0.0" - eth-json-rpc-infura@^3.1.0: version "3.2.1" resolved "https://registry.yarnpkg.com/eth-json-rpc-infura/-/eth-json-rpc-infura-3.2.1.tgz#26702a821067862b72d979c016fd611502c6057f" @@ -4097,26 +3405,6 @@ eth-json-rpc-infura@^3.1.0: json-rpc-engine "^3.4.0" json-rpc-error "^2.0.0" -eth-json-rpc-infura@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/eth-json-rpc-infura/-/eth-json-rpc-infura-4.1.0.tgz#623478375ba65e4304dea529ed69e8bd7938270d" - integrity sha512-DFYitKovzVlCdUulEccdm4g6k/vnvyByuw7rd5OoWDBSIiaeinI8Z/SntLjSIs2c+YvE20DGwk/GLwZGCWDN1Q== - dependencies: - eth-json-rpc-middleware "^4.4.0" - eth-rpc-errors "^3.0.0" - json-rpc-engine "^5.1.3" - node-fetch "^2.6.0" - -eth-json-rpc-infura@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/eth-json-rpc-infura/-/eth-json-rpc-infura-5.1.0.tgz#e6da7dc47402ce64c54e7018170d89433c4e8fb6" - integrity sha512-THzLye3PHUSGn1EXMhg6WTLW9uim7LQZKeKaeYsS9+wOBcamRiCQVGHa6D2/4P0oS0vSaxsBnU/J6qvn0MPdow== - dependencies: - eth-json-rpc-middleware "^6.0.0" - eth-rpc-errors "^3.0.0" - json-rpc-engine "^5.3.0" - node-fetch "^2.6.0" - eth-json-rpc-middleware@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/eth-json-rpc-middleware/-/eth-json-rpc-middleware-1.6.0.tgz#5c9d4c28f745ccb01630f0300ba945f4bef9593f" @@ -4136,70 +3424,6 @@ eth-json-rpc-middleware@^1.5.0: promise-to-callback "^1.0.0" tape "^4.6.3" -eth-json-rpc-middleware@^4.1.5, eth-json-rpc-middleware@^4.4.0: - version "4.4.1" - resolved "https://registry.yarnpkg.com/eth-json-rpc-middleware/-/eth-json-rpc-middleware-4.4.1.tgz#07d3dd0724c24a8d31e4a172ee96271da71b4228" - integrity sha512-yoSuRgEYYGFdVeZg3poWOwAlRI+MoBIltmOB86MtpoZjvLbou9EB/qWMOWSmH2ryCWLW97VYY6NWsmWm3OAA7A== - dependencies: - btoa "^1.2.1" - clone "^2.1.1" - eth-json-rpc-errors "^1.0.1" - eth-query "^2.1.2" - eth-sig-util "^1.4.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" - -eth-json-rpc-middleware@^5.0.2: - version "5.1.0" - resolved "https://registry.yarnpkg.com/eth-json-rpc-middleware/-/eth-json-rpc-middleware-5.1.0.tgz#affc63ddb31205e4b2f2c451571902031dad70fc" - integrity sha512-0uq8nWgHWLKA0sMhVqViue3vSEBVuQXyk2yzjhe8GSo/dGpJUtmYN1DvDF1LQtEhHI4N/G6MKPbiR/aWSRkPmg== - dependencies: - btoa "^1.2.1" - clone "^2.1.1" - eth-query "^2.1.2" - eth-rpc-errors "^3.0.0" - eth-sig-util "^1.4.2" - ethereumjs-block "^1.6.0" - ethereumjs-tx "^1.3.7" - ethereumjs-util "^5.1.2" - ethereumjs-vm "^2.6.0" - json-rpc-engine "^5.3.0" - json-stable-stringify "^1.0.1" - node-fetch "^2.6.1" - pify "^3.0.0" - safe-event-emitter "^1.0.1" - -eth-json-rpc-middleware@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/eth-json-rpc-middleware/-/eth-json-rpc-middleware-6.0.0.tgz#4fe16928b34231a2537856f08a5ebbc3d0c31175" - integrity sha512-qqBfLU2Uq1Ou15Wox1s+NX05S9OcAEL4JZ04VZox2NS0U+RtCMjSxzXhLFWekdShUPZ+P8ax3zCO2xcPrp6XJQ== - dependencies: - btoa "^1.2.1" - clone "^2.1.1" - eth-query "^2.1.2" - eth-rpc-errors "^3.0.0" - eth-sig-util "^1.4.2" - ethereumjs-util "^5.1.2" - json-rpc-engine "^5.3.0" - json-stable-stringify "^1.0.1" - node-fetch "^2.6.1" - pify "^3.0.0" - safe-event-emitter "^1.0.1" - -eth-lattice-keyring@^0.2.7: - version "0.2.9" - resolved "https://registry.yarnpkg.com/eth-lattice-keyring/-/eth-lattice-keyring-0.2.9.tgz#79849fd8358542031739874b1e3a8be7ade065bc" - integrity sha512-3B2/UiQrChaAL/zOqr/g0ALYTupiGqKEqB09OaB4iLW2Yfog4EBzcK3rBdZg0MkYlesTrsN4X9zKFkvLCv3QmQ== - dependencies: - gridplus-sdk "^0.7.2" - eth-lib@0.2.7: version "0.2.7" resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.7.tgz#2f93f17b1e23aec3759cd4a3fe20c1286a3fc1ca" @@ -4238,32 +3462,6 @@ eth-query@^2.0.2, eth-query@^2.1.0, eth-query@^2.1.2: json-rpc-random-id "^1.0.0" xtend "^4.0.1" -eth-rpc-errors@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-3.0.0.tgz#d7b22653c70dbf9defd4ef490fd08fe70608ca10" - integrity sha512-iPPNHPrLwUlR9xCSYm7HHQjWBasor3+KZfRvwEWxMz3ca0yqnlBeJrnyphkGIXZ4J7AMAaOLmwy4AWhnxOiLxg== - dependencies: - fast-safe-stringify "^2.0.6" - -eth-rpc-errors@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/eth-rpc-errors/-/eth-rpc-errors-4.0.2.tgz#11bc164e25237a679061ac05b7da7537b673d3b7" - integrity sha512-n+Re6Gu8XGyfFy1it0AwbD1x0MUzspQs0D5UiPs1fFPCr6WAwZM+vbIhXheBFrpgosqN9bs5PqlB4Q61U/QytQ== - dependencies: - fast-safe-stringify "^2.0.6" - -eth-sig-util@2.5.3, eth-sig-util@^2.5.2: - version "2.5.3" - resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-2.5.3.tgz#6938308b38226e0b3085435474900b03036abcbe" - integrity sha512-KpXbCKmmBUNUTGh9MRKmNkIPietfhzBqqYqysDavLseIiMUGl95k6UcPEkALAZlj41e9E6yioYXc1PC333RKqw== - dependencies: - buffer "^5.2.1" - elliptic "^6.4.0" - ethereumjs-abi "0.6.5" - ethereumjs-util "^5.1.1" - tweetnacl "^1.0.0" - tweetnacl-util "^0.15.0" - eth-sig-util@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-3.0.0.tgz#75133b3d7c20a5731af0690c385e184ab942b97e" @@ -4284,6 +3482,18 @@ eth-sig-util@^1.4.2: ethereumjs-abi "git+https://github.com/ethereumjs/ethereumjs-abi.git" ethereumjs-util "^5.1.1" +eth-sig-util@^2.5.2: + version "2.5.3" + resolved "https://registry.yarnpkg.com/eth-sig-util/-/eth-sig-util-2.5.3.tgz#6938308b38226e0b3085435474900b03036abcbe" + integrity sha512-KpXbCKmmBUNUTGh9MRKmNkIPietfhzBqqYqysDavLseIiMUGl95k6UcPEkALAZlj41e9E6yioYXc1PC333RKqw== + dependencies: + buffer "^5.2.1" + elliptic "^6.4.0" + ethereumjs-abi "0.6.5" + ethereumjs-util "^5.1.1" + tweetnacl "^1.0.0" + tweetnacl-util "^0.15.0" + eth-tx-summary@^3.1.2: version "3.2.4" resolved "https://registry.yarnpkg.com/eth-tx-summary/-/eth-tx-summary-3.2.4.tgz#e10eb95eb57cdfe549bf29f97f1e4f1db679035c" @@ -4317,14 +3527,6 @@ ethereum-bloom-filters@^1.0.6: dependencies: js-sha3 "^0.8.0" -ethereum-checksum-address@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/ethereum-checksum-address/-/ethereum-checksum-address-0.0.2.tgz#46fcb2d962dacd1ed49d7b464408ec26fd183209" - integrity sha512-GAb7mPvGgcfi1j+Bsnwm9af9Z7dLUKp+5cFm88+kMrKACfh9gLatGLVVK5pSGEG2pOGfrmqCRcuh3RtMjIg8GQ== - dependencies: - keccak256 "^1.0.0" - meow "^5.0.0" - ethereum-common@0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/ethereum-common/-/ethereum-common-0.2.0.tgz#13bf966131cce1eeade62a1b434249bb4cb120ca" @@ -4356,33 +3558,6 @@ ethereum-cryptography@^0.1.2, ethereum-cryptography@^0.1.3: secp256k1 "^4.0.1" setimmediate "^1.0.5" -ethereum-private-key-to-address@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/ethereum-private-key-to-address/-/ethereum-private-key-to-address-0.0.3.tgz#1f1dccaefd1198c2dcde55501f331a846bd0aad0" - integrity sha512-P+z9eFlgOezxogEpY1sQR155U4xFmQUWVxKzIJa5BL05Gs7zL0sYuyQuSAme8LBYGQ6p6AwconiMDauf4LbqyA== - dependencies: - ethereum-private-key-to-public-key "0.0.2" - ethereum-public-key-to-address "0.0.1" - meow "^5.0.0" - -ethereum-private-key-to-public-key@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/ethereum-private-key-to-public-key/-/ethereum-private-key-to-public-key-0.0.2.tgz#bb5803aad43df2692e0d7b4c9eaa224eec2a39cb" - integrity sha512-WKwFspLS5IdpV1rBUmWSG2xtIDV7YMpAG/uSjtV9kDzBU6hpSzoqg6R/e1iEfHkOr/eae+NtDTpwzXRtSMDvhw== - dependencies: - meow "^5.0.0" - secp256k1 "^3.7.1" - -ethereum-public-key-to-address@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/ethereum-public-key-to-address/-/ethereum-public-key-to-address-0.0.1.tgz#3f0237687d9c2217234dc5683f3eb580abf3f6ce" - integrity sha512-X78x/VBluHUdrYpZunoXJ48luXTaUiUK4ImPjTjI+XiS24+jUR5WFCpm9wCNbLYP6/ZCJ+lwuYormXSjt8rrbw== - dependencies: - ethereum-checksum-address "0.0.2" - keccak256 "^1.0.0" - meow "^5.0.0" - secp256k1 "^3.7.1" - ethereum-waffle@3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ethereum-waffle/-/ethereum-waffle-3.2.1.tgz#9d6d6b93484c5e1b77dfdeb646c050ed877e836e" @@ -4491,7 +3666,7 @@ ethereumjs-tx@2.1.2, ethereumjs-tx@^2.1.1, ethereumjs-tx@^2.1.2: ethereumjs-common "^1.5.0" ethereumjs-util "^6.0.0" -ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2, ethereumjs-tx@^1.3.3, ethereumjs-tx@^1.3.7: +ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2, ethereumjs-tx@^1.3.3: version "1.3.7" resolved "https://registry.yarnpkg.com/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz#88323a2d875b10549b8347e09f4862b546f3d89a" integrity sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA== @@ -4499,19 +3674,6 @@ ethereumjs-tx@^1.1.1, ethereumjs-tx@^1.2.0, ethereumjs-tx@^1.2.2, ethereumjs-tx@ ethereum-common "^0.0.18" ethereumjs-util "^5.0.0" -ethereumjs-util@5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz#3e0c0d1741471acf1036052d048623dee54ad642" - integrity sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA== - dependencies: - bn.js "^4.11.0" - create-hash "^1.1.2" - ethjs-util "^0.1.3" - keccak "^1.0.2" - rlp "^2.0.0" - safe-buffer "^5.1.1" - secp256k1 "^3.0.1" - ethereumjs-util@6.2.0: version "6.2.0" resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.0.tgz#23ec79b2488a7d041242f01e25f24e5ad0357960" @@ -4574,18 +3736,6 @@ ethereumjs-util@^7.0.2: ethjs-util "0.1.6" rlp "^2.2.4" -ethereumjs-util@^7.0.3: - version "7.0.8" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.0.8.tgz#5258762b7b17e3d828e41834948363ff0a703ffd" - integrity sha512-JJt7tDpCAmDPw/sGoFYeq0guOVqT3pTE9xlEbBmc/nlCij3JRCoS2c96SQ6kXVHOT3xWUNLDm5QCJLQaUnVAtQ== - dependencies: - "@types/bn.js" "^4.11.3" - bn.js "^5.1.2" - create-hash "^1.1.2" - ethereum-cryptography "^0.1.3" - ethjs-util "0.1.6" - rlp "^2.2.4" - ethereumjs-vm@4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/ethereumjs-vm/-/ethereumjs-vm-4.2.0.tgz#e885e861424e373dbc556278f7259ff3fca5edab" @@ -4639,21 +3789,6 @@ ethereumjs-wallet@0.6.5: utf8 "^3.0.0" uuid "^3.3.2" -ethers@4.0.47: - version "4.0.47" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-4.0.47.tgz#91b9cd80473b1136dd547095ff9171bd1fc68c85" - integrity sha512-hssRYhngV4hiDNeZmVU/k5/E8xmLG8UpcNUzg6mb7lqhgpFPH/t7nuv20RjRrEf0gblzvi2XwR5Te+V3ZFc9pQ== - dependencies: - aes-js "3.0.0" - bn.js "^4.4.0" - elliptic "6.5.2" - 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" - ethers@5.0.26, ethers@^5.0.0, ethers@^5.0.1, ethers@^5.0.9: version "5.0.26" resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.0.26.tgz#ef43c6b6aad71f10c1a184003f69b142d7d03bae" @@ -4731,22 +3866,17 @@ eventemitter3@3.1.2: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q== -eventemitter3@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.0.tgz#d65176163887ee59f386d64c82610b696a4a74eb" - integrity sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg== - eventemitter3@4.0.4: version "4.0.4" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== -eventemitter3@4.0.7, eventemitter3@^4.0.0: +eventemitter3@^4.0.0: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -events@^3.0.0, events@^3.2.0: +events@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== @@ -4772,11 +3902,6 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -exit-on-epipe@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz#0bdd92e87d5285d267daa8171d0eb06159689692" - integrity sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw== - expand-brackets@^2.1.4: version "2.1.4" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" @@ -4848,7 +3973,7 @@ extend-shallow@^3.0.0, extend-shallow@^3.0.2: assign-symbols "^1.0.0" is-extendable "^1.0.1" -extend@^3.0.0, extend@~3.0.2: +extend@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== @@ -4893,7 +4018,7 @@ fake-merkle-patricia-tree@^1.0.1: dependencies: checkpoint-store "^1.1.0" -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: +fast-deep-equal@^3.1.1: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== @@ -4925,11 +4050,6 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= -fast-safe-stringify@^2.0.6: - version "2.0.7" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743" - integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA== - fastq@^1.6.0: version "1.10.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.10.0.tgz#74dbefccade964932cdf500473ef302719c652bb" @@ -5089,13 +4209,6 @@ fmix@^0.1.0: dependencies: imul "^1.0.0" -follow-redirects@1.5.10: - version "1.5.10" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" - integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== - dependencies: - debug "=3.1.0" - follow-redirects@^1.10.0, follow-redirects@^1.12.1: version "1.13.1" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.1.tgz#5f69b813376cee4fd0474a3aba835df04ab763b7" @@ -5113,17 +4226,12 @@ for-in@^1.0.2: resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= -foreach@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" - integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= - forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= -form-data@^2.2.0, form-data@^2.3.1: +form-data@^2.2.0: version "2.5.1" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" integrity sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA== @@ -5150,16 +4258,6 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" -formidable@^1.2.0: - version "1.2.2" - resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.2.2.tgz#bf69aea2972982675f00865342b982986f6b8dd9" - integrity sha512-V8gLm+41I/8kguQ4/o1D3RIHRmhYFG4pnNyonvua+40rqcEmT4+V71yaZ3B457xbbgCsCfjSPi65u/W6vK1U5Q== - -fortmatic@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/fortmatic/-/fortmatic-2.2.1.tgz#91ce9159c1fe539bd87e483125fca5c27a410a86" - integrity sha512-PEfPoErJSErU2A8iYD2Mab2c8eJK5dCdCr1jR/8yc49aEAlyQ4UXnZXyeO6MU5zBGkDAZmg9brnRSPzc+8MKPQ== - forwarded@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" @@ -5534,25 +4632,6 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== -gridplus-sdk@^0.7.2: - version "0.7.2" - resolved "https://registry.yarnpkg.com/gridplus-sdk/-/gridplus-sdk-0.7.2.tgz#ea46c565ea7f8e029b7a61283f25e9f175ddfa47" - integrity sha512-fCo9QGvpwTVbqobKmkkKQxRA/zgSy5KOfQrRv9jhnmlP4uHvURKuuqnJ07mRZr+0EbGifRJp9VRmZkKjKffp+Q== - dependencies: - aes-js "^3.1.1" - bignumber.js "^9.0.1" - bitwise "^2.0.4" - bs58 "^4.0.1" - bs58check "^2.1.2" - buffer "^5.6.0" - crc-32 "^1.2.0" - elliptic "6.5.3" - js-sha3 "^0.8.0" - lodash "^4.17.19" - rlp-browser "^1.0.1" - secp256k1 "4.0.2" - superagent "^3.8.3" - growl@1.10.5: version "1.10.5" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" @@ -5777,15 +4856,6 @@ hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: inherits "^2.0.3" minimalistic-assert "^1.0.1" -hdkey@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/hdkey/-/hdkey-2.0.1.tgz#0a211d0c510bfc44fa3ec9d44b13b634641cad74" - integrity sha512-c+tl9PHG9/XkGgG0tD7CJpRVaE0jfZizDNmnErUAKQ4EjQSOcOUcV3EN9ZEZS8pZ4usaeiiK0H7stzuzna8feA== - dependencies: - bs58check "^2.1.2" - safe-buffer "^5.1.1" - secp256k1 "^4.0.0" - he@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" @@ -5796,7 +4866,7 @@ heap@0.2.6: resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.6.tgz#087e1f10b046932fc8594dd9e6d378afc9d1e5ac" integrity sha1-CH4fELBGky/IWU3Z5tN4r8nR5aw= -hmac-drbg@^1.0.0, hmac-drbg@^1.0.1: +hmac-drbg@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= @@ -5961,11 +5031,6 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= -indent-string@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" - integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= - inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -6013,7 +5078,7 @@ interpret@^1.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== -invariant@2, invariant@^2.2.2: +invariant@^2.2.2: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== @@ -6075,17 +5140,12 @@ is-binary-path@~2.1.0: dependencies: binary-extensions "^2.0.0" -is-buffer@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.4.tgz#3e572f23c8411a5cfd9557c849e3665e0b290623" - integrity sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A== - is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-buffer@^2.0.2, is-buffer@~2.0.3: +is-buffer@~2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== @@ -6200,11 +5260,6 @@ is-function@^1.0.1: resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== -is-generator-function@^1.0.7: - version "1.0.8" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.8.tgz#dfb5c2b120e02b0a8d9d2c6806cd5621aa922f7b" - integrity sha512-2Omr/twNtufVZFr1GhxjOMFPAj2sjc/dKaIqBhvo4qciXfJmITGH6ZGd8eZYNHza8t1y0e01AuqRhJwfWp26WQ== - is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" @@ -6295,11 +5350,6 @@ is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= -is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== - is-string@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" @@ -6312,18 +5362,7 @@ is-symbol@^1.0.2: dependencies: has-symbols "^1.0.1" -is-typed-array@^1.1.3: - version "1.1.5" - resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.5.tgz#f32e6e096455e329eb7b423862456aa213f0eb4e" - integrity sha512-S+GRDgJlR3PyEbsX/Fobd9cqpZBuvUS+8asRqYDMLCb2qMzt1oz5m5oxQCxOgUDxiWsOVNi4yaF+/uvdlHlYug== - dependencies: - available-typed-arrays "^1.0.2" - call-bind "^1.0.2" - es-abstract "^1.18.0-next.2" - foreach "^2.0.5" - has-symbols "^1.0.1" - -is-typedarray@1.0.0, is-typedarray@^1.0.0, is-typedarray@~1.0.0: +is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= @@ -6353,7 +5392,7 @@ isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= -isarray@^2.0.1, isarray@^2.0.5: +isarray@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== @@ -6482,22 +5521,6 @@ json-rpc-engine@^3.4.0, json-rpc-engine@^3.6.0: promise-to-callback "^1.0.0" safe-event-emitter "^1.0.1" -json-rpc-engine@^5.1.3, json-rpc-engine@^5.3.0: - version "5.4.0" - resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-5.4.0.tgz#75758609d849e1dba1e09021ae473f3ab63161e5" - integrity sha512-rAffKbPoNDjuRnXkecTjnsE3xLLrb00rEkdgalINhaYVYIxDwWtvYBr9UFbhTvPB1B2qUOLoFd/cV6f4Q7mh7g== - dependencies: - eth-rpc-errors "^3.0.0" - safe-event-emitter "^1.0.1" - -json-rpc-engine@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/json-rpc-engine/-/json-rpc-engine-6.1.0.tgz#bf5ff7d029e1c1bf20cb6c0e9f348dcd8be5a393" - integrity sha512-NEdLrtrq1jUZyfjkr9OCz9EzCNhnRyWtt1PAnvnhwy6e8XETS0Dtc+ZNCO2gvuAoKsIn2+vCSowXTYE4CkgnAQ== - dependencies: - "@metamask/safe-event-emitter" "^2.0.0" - eth-rpc-errors "^4.0.2" - json-rpc-error@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/json-rpc-error/-/json-rpc-error-2.0.0.tgz#a7af9c202838b5e905c7250e547f1aff77258a02" @@ -6505,15 +5528,7 @@ json-rpc-error@^2.0.0: dependencies: inherits "^2.0.1" -json-rpc-middleware-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/json-rpc-middleware-stream/-/json-rpc-middleware-stream-3.0.0.tgz#8540331d884f36b9e0ad31054cc68ac6b5a89b52" - integrity sha512-JmZmlehE0xF3swwORpLHny/GvW3MZxCsb2uFNBrn8TOqMqivzCfz232NSDLLOtIQlrPlgyEjiYpyzyOPFOzClw== - dependencies: - "@metamask/safe-event-emitter" "^2.0.0" - readable-stream "^2.3.3" - -json-rpc-random-id@^1.0.0, json-rpc-random-id@^1.0.1: +json-rpc-random-id@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/json-rpc-random-id/-/json-rpc-random-id-1.0.1.tgz#ba49d96aded1444dbb8da3d203748acbbcdec8c8" integrity sha1-uknZat7RRE27jaPSA3SKy7zeyMg= @@ -6605,15 +5620,7 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -keccak256@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/keccak256/-/keccak256-1.0.2.tgz#ee0d38c2d5fb817f39d37c3fef842cab0164a067" - integrity sha512-f2EncSgmHmmQOkgxZ+/f2VaWTNkFL6f39VIrpoX+p8cEXJVyyCs/3h9GNz/ViHgwchxvv7oG5mjT2Tk4ZqInag== - dependencies: - bn.js "^4.11.8" - keccak "^3.0.1" - -keccak@3.0.1, keccak@^3.0.0, keccak@^3.0.1: +keccak@3.0.1, keccak@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.1.tgz#ae30a0e94dbe43414f741375cff6d64c8bea0bff" integrity sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA== @@ -6621,16 +5628,6 @@ keccak@3.0.1, keccak@^3.0.0, keccak@^3.0.1: node-addon-api "^2.0.0" node-gyp-build "^4.2.0" -keccak@^1.0.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-1.4.0.tgz#572f8a6dbee8e7b3aa421550f9e6408ca2186f80" - integrity sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw== - dependencies: - bindings "^1.2.1" - inherits "^2.0.3" - nan "^2.2.1" - safe-buffer "^5.1.0" - keccak@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/keccak/-/keccak-2.1.0.tgz#734ea53f2edcfd0f42cdb8d5f4c358fef052752b" @@ -6648,11 +5645,6 @@ keyv@^3.0.0: dependencies: json-buffer "3.0.0" -keyvaluestorage-interface@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/keyvaluestorage-interface/-/keyvaluestorage-interface-1.0.0.tgz#13ebdf71f5284ad54be94bd1ad9ed79adad515ff" - integrity sha512-8t6Q3TclQ4uZynJY9IGr2+SsIGwK9JHcO6ootkHCGA0CrQCRy+VkouYNO2xicET6b9al7QKzpebNow+gkpCL8g== - kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -6882,16 +5874,6 @@ load-json-file@^2.0.0: pify "^2.0.0" strip-bom "^3.0.0" -load-json-file@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" - integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= - dependencies: - graceful-fs "^4.1.2" - parse-json "^4.0.0" - pify "^3.0.0" - strip-bom "^3.0.0" - locate-path@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" @@ -6920,11 +5902,6 @@ lodash.assign@^4.0.3, lodash.assign@^4.0.6: resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" integrity sha1-DZnzzNem0mHRm9rrkkUAXShYCOc= -lodash.defaults@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" - integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= - lodash.toarray@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" @@ -6949,11 +5926,6 @@ log-symbols@4.0.0: dependencies: chalk "^4.0.0" -loglevel@^1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.1.tgz#005fde2f5e6e47068f935ff28573e125ef72f197" - integrity sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw== - looper@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/looper/-/looper-2.0.0.tgz#66cd0c774af3d4fedac53794f742db56da8f09ec" @@ -6971,14 +5943,6 @@ loose-envify@^1.0.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" -loud-rejection@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" - integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= - dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.0" - lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" @@ -7037,16 +6001,6 @@ map-cache@^0.2.2: resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= -map-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= - -map-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-2.0.0.tgz#a65cd29087a92598b8791257a523e021222ac1f9" - integrity sha1-plzSkIepJZi4eRJXpSPgISIqwfk= - map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" @@ -7111,31 +6065,11 @@ memdown@~3.0.0: ltgt "~2.2.0" safe-buffer "~5.1.1" -memory-cache@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/memory-cache/-/memory-cache-0.2.0.tgz#7890b01d52c00c8ebc9d533e1f8eb17e3034871a" - integrity sha1-eJCwHVLADI68nVM+H46xfjA0hxo= - memorystream@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" integrity sha1-htcJCzDORV1j+64S3aUaR93K+bI= -meow@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-5.0.0.tgz#dfc73d63a9afc714a5e371760eb5c88b91078aa4" - integrity sha512-CbTqYU17ABaLefO8vCU153ZZlprKYWDljcndKKDCFcYQITzWCXZAVk4QMFZPgvzrnUQ3uItnIE/LoUOwrT15Ig== - dependencies: - camelcase-keys "^4.0.0" - decamelize-keys "^1.0.0" - loud-rejection "^1.0.0" - minimist-options "^3.0.1" - normalize-package-data "^2.3.4" - read-pkg-up "^3.0.0" - redent "^2.0.0" - trim-newlines "^2.0.0" - yargs-parser "^10.0.0" - merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" @@ -7173,7 +6107,7 @@ merkle-patricia-tree@^2.1.2, merkle-patricia-tree@^2.3.2: rlp "^2.0.0" semaphore ">=1.0.1" -methods@^1.1.1, methods@~1.1.2: +methods@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= @@ -7225,7 +6159,7 @@ mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.19, mime-types@~2.1.24: dependencies: mime-db "1.45.0" -mime@1.6.0, mime@^1.4.1: +mime@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== @@ -7269,14 +6203,6 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: dependencies: brace-expansion "^1.1.7" -minimist-options@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-3.0.2.tgz#fba4c8191339e13ecf4d61beb03f070103f3d954" - integrity sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ== - dependencies: - arrify "^1.0.1" - is-plain-obj "^1.1.0" - minimist@^1.2.0, minimist@^1.2.5, minimist@~1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" @@ -7464,7 +6390,7 @@ mute-stream@0.0.7: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= -nan@^2.0.8, nan@^2.14.0, nan@^2.14.1, nan@^2.2.1: +nan@^2.0.8, nan@^2.14.0: version "2.14.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== @@ -7546,7 +6472,7 @@ node-fetch@2.1.2: resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.1.2.tgz#ab884e8e7e57e38a944753cec706f788d1768bb5" integrity sha1-q4hOjn5X44qUR1POxwb3iNF2i7U= -node-fetch@^2.6.0, node-fetch@^2.6.1: +node-fetch@^2.6.0: version "2.6.1" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== @@ -7576,14 +6502,7 @@ nopt@3.x: dependencies: abbrev "1" -normalize-hex@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/normalize-hex/-/normalize-hex-0.0.2.tgz#5491c43759db2f06b7168d8419f4925c271ab27e" - integrity sha512-E2dx7XJQnjsm6SkS4G6GGvIXRHaLeWAZE2D2N3aia+OpIif2UT8y4S0KCjrX3WmFDSeFnlNOp0FSHFjLeJ4SJw== - dependencies: - bn.js "^4.11.8" - -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: +normalize-package-data@^2.3.2: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -7628,15 +6547,6 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -obj-multiplex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/obj-multiplex/-/obj-multiplex-1.0.0.tgz#2f2ae6bfd4ae11befe742ea9ea5b36636eabffc1" - integrity sha1-Lyrmv9SuEb7+dC6p6ls2Y26r/8E= - dependencies: - end-of-stream "^1.4.0" - once "^1.4.0" - readable-stream "^2.3.3" - object-assign@^4, object-assign@^4.0.0, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" @@ -7749,23 +6659,6 @@ oboe@2.1.4: dependencies: http-https "^1.0.0" -oboe@2.1.5: - version "2.1.5" - resolved "https://registry.yarnpkg.com/oboe/-/oboe-2.1.5.tgz#5554284c543a2266d7a38f17e073821fbde393cd" - integrity sha1-VVQoTFQ6ImbXo48X4HOCH73jk80= - dependencies: - http-https "^1.0.0" - -obs-store@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/obs-store/-/obs-store-4.0.3.tgz#b632ec7814baa604fae084a4c97e87c0b7a6d14c" - integrity sha512-+mm13kCRDv6IcvUDKTw0LIy5+dQhIktYaR/RwwZUFzOTi/fjMaNBnk42Adb94qZqJ00qWkjhQSZH7MXlKnTi8A== - dependencies: - readable-stream "^2.2.2" - safe-event-emitter "^1.0.1" - through2 "^2.0.3" - xtend "^4.0.1" - on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -8060,13 +6953,6 @@ path-type@^2.0.0: dependencies: pify "^2.0.0" -path-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" @@ -8088,16 +6974,6 @@ pbkdf2@^3.0.17, pbkdf2@^3.0.3, pbkdf2@^3.0.9: safe-buffer "^5.0.1" sha.js "^2.4.8" -penpal@3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/penpal/-/penpal-3.0.7.tgz#d252711ed93b30f1d867eb82342785b3a95f5f75" - integrity sha512-WSXiq5HnEvzvY05SHhaXcsviUmCvh4Ze8AiIZzvmdzaaYAAx4rx8c6Xq6+MaVDG/Nfve3VmGD8HyRP3CkPvPbQ== - -penpal@4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/penpal/-/penpal-4.1.1.tgz#c96ccfdac441682acf617f6dcbc177a614e8302b" - integrity sha512-6d1f8khVLyBz3DnhLztbfjJ7+ANxdXRM2l6awpnCdEtbrmse4AGTsELOvGuNY0SU7xZw7heGbP6IikVvaVTOWw== - performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" @@ -8108,25 +6984,15 @@ picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== -pify@4.0.1, pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -pify@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" - integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== pinkie-promise@^2.0.0: version "2.0.1" @@ -8147,45 +7013,16 @@ pkg-dir@^2.0.0: dependencies: find-up "^2.1.0" -pngjs@^3.3.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" - integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== - -pocket-js-core@0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/pocket-js-core/-/pocket-js-core-0.0.3.tgz#1ab278b9a6a5775e2bdc3c2c2e218057774061e4" - integrity sha512-OUTEvEVutdjLT6YyldvAlSebpBueUUWg2XKxGNt5u3QqrmLpBOOBmdDnGMNJ+lEwXtko+JqgwFq+HTi4g1QDVg== - dependencies: - axios "^0.18.0" - posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= -post-message-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/post-message-stream/-/post-message-stream-3.0.0.tgz#90d9f54bd209e6b6f5d74795b87588205b547048" - integrity sha1-kNn1S9IJ5rb110eVuHWIIFtUcEg= - dependencies: - readable-stream "^2.1.4" - postinstall-postinstall@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz#4f7f77441ef539d1512c40bd04c71b06a4704ca3" integrity sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ== -preact@10.4.1: - version "10.4.1" - resolved "https://registry.yarnpkg.com/preact/-/preact-10.4.1.tgz#9b3ba020547673a231c6cf16f0fbaef0e8863431" - integrity sha512-WKrRpCSwL2t3tpOOGhf2WfTpcmbpxaWtDbdJdKdjd0aEiTkvOmS4NBkG6kzlaAHI9AkQ3iVqbFWM3Ei7mZ4o1Q== - -preact@^10.5.9: - version "10.5.12" - resolved "https://registry.yarnpkg.com/preact/-/preact-10.5.12.tgz#6a8ee8bf40a695c505df9abebacd924e4dd37704" - integrity sha512-r6siDkuD36oszwlCkcqDJCAKBQxGoeEGytw2DGMD5A/GGdu5Tymw+N2OBXwvOLxg6d1FeY8MgMV3cc5aVQo4Cg== - precond@0.2: version "0.2.3" resolved "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz#aa9591bcaa24923f1e0f4849d240f47efc1075ac" @@ -8235,11 +7072,6 @@ prettier@^1.14.3: resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== -printj@~1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/printj/-/printj-1.1.2.tgz#d90deb2975a8b9f600fb3a1c94e3f4c53c78a222" - integrity sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ== - private@^0.1.6, private@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" @@ -8393,25 +7225,12 @@ punycode@^2.1.0, punycode@^2.1.1: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -qrcode@1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/qrcode/-/qrcode-1.4.4.tgz#f0c43568a7e7510a55efc3b88d9602f71963ea83" - integrity sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q== - dependencies: - buffer "^5.4.3" - buffer-alloc "^1.2.0" - buffer-from "^1.1.1" - dijkstrajs "^1.0.1" - isarray "^2.0.1" - pngjs "^3.3.0" - yargs "^13.2.4" - qs@6.7.0: version "6.7.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== -qs@^6.4.0, qs@^6.5.1, qs@^6.7.0, qs@^6.9.4: +qs@^6.4.0, qs@^6.7.0, qs@^6.9.4: version "6.9.6" resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee" integrity sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ== @@ -8421,15 +7240,6 @@ qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== -query-string@6.13.5: - version "6.13.5" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.13.5.tgz#99e95e2fb7021db90a6f373f990c0c814b3812d8" - integrity sha512-svk3xg9qHR39P3JlHuD7g3nRnyay5mHbrPctEBDUxUkHRifPHXJDhBUycdCC0NBjXoDf44Gb+IsOZL1Uwn8M/Q== - dependencies: - decode-uri-component "^0.2.0" - split-on-first "^1.0.0" - strict-uri-encode "^2.0.0" - query-string@^5.0.1: version "5.1.1" resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" @@ -8444,11 +7254,6 @@ querystring@0.2.0: resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= -quick-lru@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" - integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= - ramda@^0.27.1: version "0.27.1" resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.27.1.tgz#66fc2df3ef873874ffc2da6aa8984658abacf5c9" @@ -8469,11 +7274,6 @@ randomfill@^1.0.3: randombytes "^2.0.5" safe-buffer "^5.1.0" -randomhex@0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/randomhex/-/randomhex-0.1.5.tgz#baceef982329091400f2a2912c6cd02f1094f585" - integrity sha1-us7vmCMpCRQA8qKRLGzQLxCU9YU= - range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" @@ -8515,14 +7315,6 @@ read-pkg-up@^2.0.0: find-up "^2.0.0" read-pkg "^2.0.0" -read-pkg-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" - integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= - dependencies: - find-up "^2.0.0" - read-pkg "^3.0.0" - read-pkg@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" @@ -8541,15 +7333,6 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" -read-pkg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" - integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= - dependencies: - load-json-file "^4.0.0" - normalize-package-data "^2.3.2" - path-type "^3.0.0" - readable-stream@^1.0.33: version "1.1.14" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" @@ -8560,7 +7343,7 @@ readable-stream@^1.0.33: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.1.4, readable-stream@^2.2.2, readable-stream@^2.2.8, readable-stream@^2.2.9, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: +readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.2.2, readable-stream@^2.2.8, readable-stream@^2.2.9, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -8620,14 +7403,6 @@ recursive-readdir@^2.2.2: dependencies: minimatch "3.0.4" -redent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-2.0.0.tgz#c1b2007b42d57eb1389079b3c8333639d5e1ccaa" - integrity sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo= - dependencies: - indent-string "^3.0.0" - strip-indent "^2.0.0" - regenerate@^1.2.1: version "1.4.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" @@ -8638,7 +7413,7 @@ regenerator-runtime@^0.11.0: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== -regenerator-runtime@^0.13.4, regenerator-runtime@^0.13.5, regenerator-runtime@^0.13.7: +regenerator-runtime@^0.13.5: version "0.13.7" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== @@ -8893,14 +7668,7 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: hash-base "^3.0.0" inherits "^2.0.1" -rlp-browser@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/rlp-browser/-/rlp-browser-1.0.1.tgz#d1ea37f289359200d33dfa006d46008a288761eb" - integrity sha512-JU+9ntlfyKanOOPwtNuMZBmCQ/fWVoryfa7ZSYDTUKAa1zk4v2smvM0WV8BsskJuqn/DdxpO7HO2vEikMvmhOA== - dependencies: - buffer "^5.4.2" - -rlp@^2.0.0, rlp@^2.2.1, rlp@^2.2.2, rlp@^2.2.3, rlp@^2.2.4, rlp@^2.2.6: +rlp@^2.0.0, rlp@^2.2.1, rlp@^2.2.2, rlp@^2.2.3, rlp@^2.2.4: version "2.2.6" resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.6.tgz#c80ba6266ac7a483ef1e69e8e2f056656de2fb2c" integrity sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg== @@ -8946,11 +7714,6 @@ safe-event-emitter@^1.0.1: dependencies: events "^3.0.0" -safe-json-utils@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/safe-json-utils/-/safe-json-utils-1.0.0.tgz#8b1d68b13cff2ac6a5b68e6c9651cf7f8bb56d9b" - integrity sha512-n0hJm6BgX8wk3G+AS8MOQnfcA8dfE6ZMUfwkHUNx69YxPlU3HDaZTHXWto35Z+C4mOjK1odlT95WutkGC+0Idw== - safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -9007,16 +7770,7 @@ scryptsy@^1.2.1: dependencies: pbkdf2 "^3.0.3" -secp256k1@4.0.2, secp256k1@^4.0.0, secp256k1@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.2.tgz#15dd57d0f0b9fdb54ac1fa1694f40e5e9a54f4a1" - integrity sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg== - dependencies: - elliptic "^6.5.2" - node-addon-api "^2.0.0" - node-gyp-build "^4.2.0" - -secp256k1@^3.0.1, secp256k1@^3.7.1, secp256k1@^3.8.0: +secp256k1@^3.0.1: version "3.8.0" resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-3.8.0.tgz#28f59f4b01dbee9575f56a47034b7d2e3b3b352d" integrity sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw== @@ -9030,6 +7784,15 @@ secp256k1@^3.0.1, secp256k1@^3.7.1, secp256k1@^3.8.0: nan "^2.14.0" safe-buffer "^5.1.2" +secp256k1@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.2.tgz#15dd57d0f0b9fdb54ac1fa1694f40e5e9a54f4a1" + integrity sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg== + dependencies: + elliptic "^6.5.2" + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + seedrandom@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.1.tgz#eb3dde015bcf55df05a233514e5df44ef9dce083" @@ -9464,11 +8227,6 @@ spdx-license-ids@^3.0.0: resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65" integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== -split-on-first@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" - integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== - split-string@^3.0.1, split-string@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" @@ -9521,11 +8279,6 @@ stealthy-require@^1.1.1: resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= -store@2.0.12: - version "2.0.12" - resolved "https://registry.yarnpkg.com/store/-/store-2.0.12.tgz#8c534e2a0b831f72b75fc5f1119857c44ef5d593" - integrity sha1-jFNOKguDH3K3X8XxEZhXxE711ZM= - stream-to-pull-stream@^1.7.1: version "1.7.3" resolved "https://registry.yarnpkg.com/stream-to-pull-stream/-/stream-to-pull-stream-1.7.3.tgz#4161aa2d2eb9964de60bfa1af7feaf917e874ece" @@ -9539,11 +8292,6 @@ strict-uri-encode@^1.0.0: resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= -strict-uri-encode@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" - integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY= - string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" @@ -9675,11 +8423,6 @@ strip-hex-prefix@1.0.0: dependencies: is-hex-prefixed "1.0.0" -strip-indent@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-2.0.0.tgz#5ef8db295d01e6ed6cbf7aab96998d7822527b68" - integrity sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g= - strip-json-comments@2.0.1, strip-json-comments@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" @@ -9690,29 +8433,6 @@ strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1. resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -sturdy-websocket@^0.1.12: - version "0.1.12" - resolved "https://registry.yarnpkg.com/sturdy-websocket/-/sturdy-websocket-0.1.12.tgz#84bb779f948b585a695f76961dc7d1c4a5e87629" - integrity sha512-PA7h8LdjaMoIlC5HAwLVzae4raGWgyroscV4oUpEiTtEFINcNa47/CKYT3e98o+FfsJgrclI2pYpaJrz0aaoew== - dependencies: - lodash.defaults "^4.2.0" - -superagent@^3.8.3: - version "3.8.3" - resolved "https://registry.yarnpkg.com/superagent/-/superagent-3.8.3.tgz#460ea0dbdb7d5b11bc4f78deba565f86a178e128" - integrity sha512-GLQtLMCoEIK4eDv6OGtkOoSMt3D+oq0y3dsxMuYuDvaNUvuT8eFBuLmfR0iYYzHC1e8hpzC6ZsxbuP6DIalMFA== - dependencies: - component-emitter "^1.2.0" - cookiejar "^2.1.0" - debug "^3.1.0" - extend "^3.0.0" - form-data "^2.3.1" - formidable "^1.2.0" - methods "^1.1.1" - mime "^1.4.1" - qs "^6.5.1" - readable-stream "^2.3.5" - supports-color@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" @@ -9897,18 +8617,6 @@ to-fast-properties@^1.0.3: resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -to-hex@0.0.11: - version "0.0.11" - resolved "https://registry.yarnpkg.com/to-hex/-/to-hex-0.0.11.tgz#22355e09e5b56f5ae2b32502c493320f021171ac" - integrity sha512-3FSU8sfjrVc9fWowwP9xrdhxbp5Wco8uVZLhMhfsNuCFo9Fu8ecD2MgJV/2iAw+755W3AcGSQYVZGOpBmJtNcA== - dependencies: - normalize-hex "0.0.2" - to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -9959,20 +8667,6 @@ tough-cookie@^2.3.3, tough-cookie@~2.5.0: psl "^1.1.28" punycode "^2.1.1" -trezor-connect@^8.1.9: - version "8.1.22" - resolved "https://registry.yarnpkg.com/trezor-connect/-/trezor-connect-8.1.22.tgz#a6b713c621fb9a108827a2b51253dd6baf05a7a1" - integrity sha512-majbYoNlUqNG6AncdXiOdyF02SS73rWkel1of4qHK1T1bNp92cIq8yZMoWXxil3p2b45qs5PA8pK1TBexZCQ9g== - dependencies: - "@babel/runtime" "^7.12.5" - events "^3.2.0" - whatwg-fetch "^3.5.0" - -trim-newlines@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-2.0.0.tgz#b403d0b91be50c331dfc4b82eeceb22c3de16d20" - integrity sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA= - trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" @@ -9998,11 +8692,6 @@ tslib@^1.9.0, tslib@^1.9.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" - integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== - tsort@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/tsort/-/tsort-0.0.1.tgz#e2280f5e817f8bf4275657fd0f9aebd44f5a2786" @@ -10082,7 +8771,7 @@ type@^2.0.0: resolved "https://registry.yarnpkg.com/type/-/type-2.1.0.tgz#9bdc22c648cf8cf86dd23d32336a41cfb6475e3f" integrity sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA== -typedarray-to-buffer@3.1.5, typedarray-to-buffer@^3.1.5: +typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== @@ -10111,11 +8800,6 @@ typewiselite@~1.0.0: resolved "https://registry.yarnpkg.com/typewiselite/-/typewiselite-1.0.0.tgz#c8882fa1bb1092c06005a97f34ef5c8508e3664e" integrity sha1-yIgvobsQksBgBal/NO9chQjjZk4= -u2f-api@0.2.7: - version "0.2.7" - resolved "https://registry.yarnpkg.com/u2f-api/-/u2f-api-0.2.7.tgz#17bf196b242f6bf72353d9858e6a7566cc192720" - integrity sha512-fqLNg8vpvLOD5J/z4B6wpPg4Lvowz1nJ9xdHcCzdUPKcFE/qNCceV2gNZxSJd5vhAZemHr/K/hbzVA0zxB5mkg== - uglify-js@^3.1.4: version "3.12.5" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.12.5.tgz#83241496087c640efe9dfc934832e71725aba008" @@ -10246,18 +8930,6 @@ util.promisify@^1.0.0: has-symbols "^1.0.1" object.getownpropertydescriptors "^2.1.1" -util@^0.12.0: - version "0.12.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.12.3.tgz#971bb0292d2cc0c892dab7c6a5d37c2bec707888" - integrity sha512-I8XkoQwE+fPQEhy9v012V+TSdH2kp9ts29i20TaaDUXsg7x/onePbhFJUExBfv/2ay1ZOp/Vsm3nDlmnFGSAog== - 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" - utils-merge@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" @@ -10273,23 +8945,11 @@ uuid@3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== -uuid@7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.2.tgz#7ff5c203467e91f5e0d85cfcbaaf7d2ebbca9be6" - integrity sha512-vy9V/+pKG+5ZTYKf+VcphF5Oc6EFiu3W8Nv3P3zIh0EqVI80ZxOzuPfe9EHjkFNvf8+xuTHVeei4Drydlx4zjw== - uuid@^3.3.2: version "3.4.0" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -uuidv4@6.0.6: - version "6.0.6" - resolved "https://registry.yarnpkg.com/uuidv4/-/uuidv4-6.0.6.tgz#6966e8dd15760528a0f954843d24fdfdfda5a329" - integrity sha512-10YcruyGJtsG5SJnPG+8atr8toJa7xAOrcO7B7plYYiwpH1mQ8UZHjNSa2MrwGi6KWuyVrXGHr+Rce22F9UAiw== - dependencies: - uuid "7.0.2" - v8-compile-cache@^2.0.3: version "2.2.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" @@ -10322,17 +8982,6 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -walletlink@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/walletlink/-/walletlink-2.0.3.tgz#8905deed6ba9a07d5dd49d709db359df571b0cc4" - integrity sha512-fl8LmelFpgVITdGxGkoGhCn9coIcV/8ubg2kT96DaqGi2N4BNvUjlmgOsXMuHvVUMg4kGVZeq2XKaChXBC9ySA== - dependencies: - bind-decorator "^1.0.11" - bn.js "^5.1.1" - clsx "^1.1.0" - preact "^10.5.9" - rxjs "^6.6.3" - web3-bzz@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.11.tgz#41bc19a77444bd5365744596d778b811880f707f" @@ -10371,15 +9020,6 @@ web3-core-helpers@1.2.9: web3-eth-iban "1.2.9" web3-utils "1.2.9" -web3-core-helpers@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.3.4.tgz#b8549740bf24d5c71688d89c3cdd802d8d36b4e4" - integrity sha512-n7BqDalcTa1stncHMmrnFtyTgDhX5Fy+avNaHCf6qcOP2lwTQC8+mdHVBONWRJ6Yddvln+c8oY/TAaB6PzWK0A== - dependencies: - underscore "1.9.1" - web3-eth-iban "1.3.4" - web3-utils "1.3.4" - web3-core-method@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.11.tgz#f880137d1507a0124912bf052534f168b8d8fbb6" @@ -10404,18 +9044,6 @@ web3-core-method@1.2.9: web3-core-subscriptions "1.2.9" web3-utils "1.2.9" -web3-core-method@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.3.4.tgz#6c2812d96dd6c811b9e6c8a5d25050d2c22b9527" - integrity sha512-JxmQrujsAWYRRN77P/RY7XuZDCzxSiiQJrgX/60Lfyf7FF1Y0le4L/UMCi7vUJnuYkbU1Kfl9E0udnqwyPqlvQ== - dependencies: - "@ethersproject/transactions" "^5.0.0-beta.135" - underscore "1.9.1" - web3-core-helpers "1.3.4" - web3-core-promievent "1.3.4" - web3-core-subscriptions "1.3.4" - web3-utils "1.3.4" - web3-core-promievent@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.11.tgz#51fe97ca0ddec2f99bf8c3306a7a8e4b094ea3cf" @@ -10430,13 +9058,6 @@ web3-core-promievent@1.2.9: dependencies: eventemitter3 "3.1.2" -web3-core-promievent@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.3.4.tgz#d166239012d91496cdcbe91d5d54071ea818bc73" - integrity sha512-V61dZIeBwogg6hhZZUt0qL9hTp1WDhnsdjP++9fhTDr4vy/Gz8T5vibqT2LLg6lQC8i+Py33yOpMeMNjztaUaw== - dependencies: - eventemitter3 "4.0.4" - web3-core-requestmanager@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.11.tgz#fe6eb603fbaee18530293a91f8cf26d8ae28c45a" @@ -10459,18 +9080,6 @@ web3-core-requestmanager@1.2.9: web3-providers-ipc "1.2.9" web3-providers-ws "1.2.9" -web3-core-requestmanager@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.3.4.tgz#e105ced735c2b5fcedd5771e0ecf9879ae9c373f" - integrity sha512-xriouCrhVnVDYQ04TZXdEREZm0OOJzkSEsoN5bu4JYsA6e/HzROeU+RjDpMUxFMzN4wxmFZ+HWbpPndS3QwMag== - dependencies: - underscore "1.9.1" - util "^0.12.0" - web3-core-helpers "1.3.4" - web3-providers-http "1.3.4" - web3-providers-ipc "1.3.4" - web3-providers-ws "1.3.4" - web3-core-subscriptions@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.11.tgz#beca908fbfcb050c16f45f3f0f4c205e8505accd" @@ -10489,15 +9098,6 @@ web3-core-subscriptions@1.2.9: underscore "1.9.1" web3-core-helpers "1.2.9" -web3-core-subscriptions@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.3.4.tgz#7b00e92bde21f792620cd02e6e508fcf4f4c31d3" - integrity sha512-drVHVDxh54hv7xmjIm44g4IXjfGj022fGw4/meB5R2D8UATFI40F73CdiBlyqk3DysP9njDOLTJFSQvEkLFUOg== - dependencies: - eventemitter3 "4.0.4" - underscore "1.9.1" - web3-core-helpers "1.3.4" - web3-core@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.11.tgz#1043cacc1becb80638453cc5b2a14be9050288a7" @@ -10524,19 +9124,6 @@ web3-core@1.2.9: web3-core-requestmanager "1.2.9" web3-utils "1.2.9" -web3-core@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.3.4.tgz#2cc7ba7f35cc167f7a0a46fd5855f86e51d34ce8" - integrity sha512-7OJu46RpCEfTerl+gPvHXANR2RkLqAfW7l2DAvQ7wN0pnCzl9nEfdgW6tMhr31k3TR2fWucwKzCyyxMGzMHeSA== - dependencies: - "@types/bn.js" "^4.11.5" - "@types/node" "^12.12.6" - bignumber.js "^9.0.0" - web3-core-helpers "1.3.4" - web3-core-method "1.3.4" - web3-core-requestmanager "1.3.4" - web3-utils "1.3.4" - web3-eth-abi@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.11.tgz#a887494e5d447c2926d557a3834edd66e17af9b0" @@ -10555,15 +9142,6 @@ web3-eth-abi@1.2.9: underscore "1.9.1" web3-utils "1.2.9" -web3-eth-abi@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.3.4.tgz#10f5d8b6080dbb6cbaa1bcef7e0c70573da6566f" - integrity sha512-PVSLXJ2dzdXsC+R24llIIEOS6S1KhG5qwNznJjJvXZFe3sqgdSe47eNvwUamZtCBjcrdR/HQr+L/FTxqJSf80Q== - dependencies: - "@ethersproject/abi" "5.0.7" - underscore "1.9.1" - web3-utils "1.3.4" - web3-eth-accounts@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.11.tgz#a9e3044da442d31903a7ce035a86d8fa33f90520" @@ -10628,21 +9206,6 @@ web3-eth-contract@1.2.9: web3-eth-abi "1.2.9" web3-utils "1.2.9" -web3-eth-contract@^1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.3.4.tgz#1ea2dd71be0c4a9cf4772d4f75dbb2fa99751472" - integrity sha512-Fvy8ZxUksQY2ePt+XynFfOiSqxgQtMn4m2NJs6VXRl2Inl17qyRi/nIJJVKTcENLocm+GmZ/mxq2eOE5u02nPg== - dependencies: - "@types/bn.js" "^4.11.5" - underscore "1.9.1" - web3-core "1.3.4" - web3-core-helpers "1.3.4" - web3-core-method "1.3.4" - web3-core-promievent "1.3.4" - web3-core-subscriptions "1.3.4" - web3-eth-abi "1.3.4" - web3-utils "1.3.4" - web3-eth-ens@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.11.tgz#26d4d7f16d6cbcfff918e39832b939edc3162532" @@ -10689,14 +9252,6 @@ web3-eth-iban@1.2.9: bn.js "4.11.8" web3-utils "1.2.9" -web3-eth-iban@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.3.4.tgz#5eb7a564e0dcf68730d68f48f95dd207cd173d81" - integrity sha512-Y7/hLjVvIN/OhaAyZ8L/hxbTqVX6AFTl2RwUXR6EEU9oaLydPcMjAx/Fr8mghUvQS3QJSr+UGubP3W4SkyNiYw== - dependencies: - bn.js "^4.11.9" - web3-utils "1.3.4" - web3-eth-personal@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.11.tgz#a38b3942a1d87a62070ce0622a941553c3d5aa70" @@ -10803,90 +9358,6 @@ web3-provider-engine@14.2.1: xhr "^2.2.0" xtend "^4.0.1" -web3-provider-engine@15.0.4: - version "15.0.4" - resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-15.0.4.tgz#5c336bcad2274dff5218bc8db003fa4e9e464c24" - integrity sha512-Ob9oK0TUZfVC7NXkB7CQSWAiCdCD/Xnlh2zTnV8NdJR8LCrMAy2i6JedU70JHaxw59y7mM4GnsYOTTGkquFnNQ== - dependencies: - 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 "^1.0.1" - eth-json-rpc-filters "^4.1.1" - eth-json-rpc-infura "^4.0.1" - eth-json-rpc-middleware "^4.1.5" - eth-sig-util "^1.4.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" - -web3-provider-engine@16.0.1: - version "16.0.1" - resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-16.0.1.tgz#2600a39ede364cdc0a1fc773bf40a94f2177e605" - integrity sha512-/Eglt2aocXMBiDj7Se/lyZnNDaHBaoJlaUfbP5HkLJQC/HlGbR+3/W+dINirlJDhh7b54DzgykqY7ksaU5QgTg== - dependencies: - 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-filters "^4.2.1" - eth-json-rpc-infura "^5.1.0" - eth-json-rpc-middleware "^6.0.0" - eth-rpc-errors "^3.0.0" - eth-sig-util "^1.4.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" - -web3-provider-engine@^15.0.4: - version "15.0.12" - resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-15.0.12.tgz#24d7f2f6fb6de856824c7306291018c4fc543ac3" - integrity sha512-/OfhQalKPND1iB5ggvGuYF0+SIb2Qj5OFTrT2VrZWP79UhMTdP7T+L2FtblmRdCeOetoAzZHdBaIwLOZsmIX+w== - dependencies: - 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" - eth-json-rpc-filters "^4.1.1" - eth-json-rpc-infura "^4.0.1" - eth-json-rpc-middleware "^4.1.5" - eth-sig-util "^1.4.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" - web3-providers-http@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.11.tgz#1cd03442c61670572d40e4dcdf1faff8bd91e7c6" @@ -10903,14 +9374,6 @@ web3-providers-http@1.2.9: web3-core-helpers "1.2.9" xhr2-cookies "1.1.0" -web3-providers-http@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.3.4.tgz#89389e18e27148faa2fef58842740ffadbdda8cc" - integrity sha512-aIg/xHXvxpqpFU70sqfp+JC3sGkLfAimRKTUhG4oJZ7U+tTcYTHoxBJj+4A3Id4JAoKiiv0k1/qeyQ8f3rMC3g== - dependencies: - web3-core-helpers "1.3.4" - xhr2-cookies "1.1.0" - web3-providers-ipc@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.11.tgz#d16d6c9be1be6e0b4f4536c4acc16b0f4f27ef21" @@ -10929,15 +9392,6 @@ web3-providers-ipc@1.2.9: underscore "1.9.1" web3-core-helpers "1.2.9" -web3-providers-ipc@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.3.4.tgz#b963518989b1b7847063cdd461ff73b83855834a" - integrity sha512-E0CvXEJElr/TIlG1YfJeO3Le5NI/4JZM+1SsEdiPIfBUAJN18oOoum138EBGKv5+YaLKZUtUuJSXWjIIOR/0Ig== - dependencies: - oboe "2.1.5" - underscore "1.9.1" - web3-core-helpers "1.3.4" - web3-providers-ws@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.11.tgz#a1dfd6d9778d840561d9ec13dd453046451a96bb" @@ -10958,16 +9412,6 @@ web3-providers-ws@1.2.9: web3-core-helpers "1.2.9" websocket "^1.0.31" -web3-providers-ws@1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.3.4.tgz#b94c2e0ec51a0c472abdec53a472b5bf8176bec1" - integrity sha512-WBd9hk2fUAdrbA3kUyUk94ZeILtE6txLeoVVvIKAw2bPegx+RjkLyxC1Du0oceKgQ/qQWod8CCzl1E/GgTP+MQ== - dependencies: - eventemitter3 "4.0.4" - underscore "1.9.1" - web3-core-helpers "1.3.4" - websocket "^1.0.32" - web3-shh@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.11.tgz#f5d086f9621c9a47e98d438010385b5f059fd88f" @@ -10988,19 +9432,6 @@ web3-shh@1.2.9: web3-core-subscriptions "1.2.9" web3-net "1.2.9" -web3-utils@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.1.tgz#21466e38291551de0ab34558de21512ac4274534" - integrity sha512-Mrcn3l58L+yCKz3zBryM6JZpNruWuT0OCbag8w+reeNROSGVlXzUQkU+gtAwc9JCZ7tKUyg67+2YUGqUjVcyBA== - dependencies: - bn.js "4.11.8" - eth-lib "0.2.7" - ethjs-unit "0.1.6" - number-to-bn "1.7.0" - randomhex "0.1.5" - underscore "1.9.1" - utf8 "3.0.0" - web3-utils@1.2.11: version "1.2.11" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.11.tgz#af1942aead3fb166ae851a985bed8ef2c2d95a82" @@ -11029,20 +9460,6 @@ web3-utils@1.2.9: underscore "1.9.1" utf8 "3.0.0" -web3-utils@1.3.4, web3-utils@^1.3.3, web3-utils@^1.3.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.3.4.tgz#9b1aa30d7549f860b573e7bb7e690999e7192198" - integrity sha512-/vC2v0MaZNpWooJfpRw63u0Y3ag2gNjAWiLtMSL6QQLmCqCy4SQIndMt/vRyx0uMoeGt1YTwSXEcHjUzOhLg0A== - 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" - underscore "1.9.1" - utf8 "3.0.0" - web3-utils@^1.0.0-beta.31, web3-utils@^1.3.0: version "1.3.2" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.3.2.tgz#3f6ac95704ba41f60062fd283e629015f5d359a9" @@ -11095,7 +9512,7 @@ websocket@1.0.32: utf-8-validate "^5.0.2" yaeti "^0.0.6" -websocket@^1.0.31, websocket@^1.0.32: +websocket@^1.0.31: version "1.0.33" resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.33.tgz#407f763fc58e74a3fa41ca3ae5d78d3f5e3b82a5" integrity sha512-XwNqM2rN5eh3G2CUQE3OHZj+0xfdH42+OFK6LdC2yqiC0YU8e5UK0nYre220T0IyyN031V/XOvtHvXozvJYFWA== @@ -11112,11 +9529,6 @@ whatwg-fetch@2.0.4: resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== -whatwg-fetch@^3.5.0: - version "3.6.1" - resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.1.tgz#93bc4005af6c2cc30ba3e42ec3125947c8f54ed3" - integrity sha512-IEmN/ZfmMw6G1hgZpVd0LuZXOQDisrMOZrzYd5x3RAK4bMPlJohKUZWZ9t/QsTvH0dV9TbPDcc2OSuIDcihnHA== - which-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" @@ -11127,19 +9539,6 @@ which-module@^2.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which-typed-array@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.4.tgz#8fcb7d3ee5adf2d771066fba7cf37e32fe8711ff" - integrity sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA== - dependencies: - available-typed-arrays "^1.0.2" - call-bind "^1.0.0" - es-abstract "^1.18.0-next.1" - foreach "^2.0.5" - function-bind "^1.1.1" - has-symbols "^1.0.1" - is-typed-array "^1.1.3" - which@1.3.1, which@^1.1.1, which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -11161,23 +9560,6 @@ wide-align@1.1.3: dependencies: string-width "^1.0.2 || 2" -window-getters@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/window-getters/-/window-getters-1.0.0.tgz#b5b264538c4c79cead027f9997850222bf6d0852" - integrity sha512-xyvEFq3x+7dCA7NFhqOmTMk0fPmmAzCUYL2svkw2LGBaXXQLRP0lFnfXHzysri9WZNMkzp/FD1u0w2Qc7Co+JA== - -window-getters@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/window-getters/-/window-getters-1.0.1.tgz#a564c258413b4808789633d8bfb7ed741d798aa0" - integrity sha512-cojBfDeV58XEurDgj+rre15c7dvu27bWCPlOIpwQgreOsw6qQk0UGDR1hi7ZHKw5+L0AENUNNWGG2h4yr2Y3hQ== - -window-metadata@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/window-metadata/-/window-metadata-1.0.0.tgz#fece0446db2f50be0612a211f25fc693917e823b" - integrity sha512-eYoXsZ9X4J+6xZgbHhNAatSR5bCtT409q8B+2Ol9ySx7qsdtgVZcNfox4qszFmKlGsFtT2b1Tcmcy69bRMObcg== - dependencies: - window-getters "^1.0.0" - window-size@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" @@ -11232,11 +9614,6 @@ ws@7.2.3: resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.3.tgz#a5411e1fb04d5ed0efee76d26d5c46d830c39b46" integrity sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ== -ws@7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.0.tgz#4b2f7f219b3d3737bc1a2fbf145d825b94d38ffd" - integrity sha512-iFtXzngZVXPGgpTlP1rBqsUK82p9tKqsWRPg5L56egiljujJT3vGAYnHANvFxBieXrTFavhzhxW52jnaWV+w2w== - ws@^3.0.0: version "3.3.3" resolved "https://registry.yarnpkg.com/ws/-/ws-3.3.3.tgz#f1cf84fe2d5e901ebce94efaece785f187a228f2" @@ -11345,13 +9722,6 @@ yargs-parser@13.1.2, yargs-parser@^13.1.0, yargs-parser@^13.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^10.0.0: - version "10.1.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-10.1.0.tgz#7202265b89f7e9e9f2e5765e0fe735a905edbaa8" - integrity sha512-VCIyR1wJoEBZUqk5PA+oOBF6ypbwh5aNB3I50guxAL/quggdfs4TtNHQrSazFA3fYZ+tEqfs0zIGlv0c/rgjbQ== - dependencies: - camelcase "^4.1.0" - yargs-parser@^2.4.1: version "2.4.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-2.4.1.tgz#85568de3cf150ff49fa51825f03a8c880ddcc5c4" @@ -11396,7 +9766,7 @@ yargs@13.2.4: y18n "^4.0.0" yargs-parser "^13.1.0" -yargs@13.3.2, yargs@^13.2.4, yargs@^13.3.0: +yargs@13.3.2, yargs@^13.3.0: version "13.3.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== From 219ade1574f7bb4d9bd719b636ac8de3ff2b3ba9 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Fri, 19 Feb 2021 15:59:17 +0200 Subject: [PATCH 064/118] documentation for ElasticMath --- src/libraries/ElasticMath.sol | 111 ++++++++++++++++++++++------------ 1 file changed, 71 insertions(+), 40 deletions(-) diff --git a/src/libraries/ElasticMath.sol b/src/libraries/ElasticMath.sol index a01f5e3..b70d46c 100644 --- a/src/libraries/ElasticMath.sol +++ b/src/libraries/ElasticMath.sol @@ -4,30 +4,50 @@ pragma solidity 0.7.2; import './SafeMath.sol'; /** - * This library does the Elastic math + * @dev Provides functions for performing ElasticDAO specific math. + * + * These functions correspond with functions provided by the JS SDK and should + * always be used instead of doing calculations within other contracts to avoid + * any inconsistencies in the math. + * + * Notes: + * + * - Dash values represent the state after a transaction has completed successfully. + * - Non-dash values represent the current state, before the transaction has completed. + * - Lambda is the math term for shares. We typically expose the value to users as + * shares instead of lambda because it's easier to grok. */ - library ElasticMath { + /** + * @dev calculates the value of capitalDelta; the amount of ETH backing each + * governance token. + * @param totalEthValue amount of ETH in the DAO contract + * @param totalSupplyOfTokens number of tokens in existance + * + * capitalDelta = totalEthValue / totalSupplyOfTokens + * @return uint256 + */ function capitalDelta(uint256 totalEthValue, uint256 totalSupplyOfTokens) internal pure returns (uint256) { - return (wdiv(totalEthValue, totalSupplyOfTokens)); + return wdiv(totalEthValue, totalSupplyOfTokens); } /** - * @dev calculates the value of deltaE + * @dev calculates the value of deltaE; the amount of ETH required to mint deltaLambda * @param deltaLambda = lambdaDash - lambda - * @param capitalDeltaValue is the Eth/Egt ratio - * @param k is a constant, initially set by the DAO - * @param elasticity is the value of elasticity, initially set by the DAO - * @param lambda = Current outstanding shares - * @param m = Current share modifier + * @param capitalDeltaValue the ETH/token ratio; see capitalDelta(uint256, uint256) + * @param k a constant, initially set by the DAO + * @param elasticity the percentage by which capitalDelta should increase + * @param lambda outstanding shares + * @param m share modifier * + * lambdaDash = deltaLambda + lambda * mDash = ( lambdaDash / lambda ) * m - * deltaE = ( capitalDelta * k ( ( lambdaDash * mDash * ( 1 + elasticity ) ) - lambda * m ) - * @return deltaEValue uint256 + * deltaE = capitalDelta * k * ( lambdaDash * mDash * ( 1 + elasticity ) - lambda * m ) + * @return uint256 */ function deltaE( uint256 deltaLambda, @@ -36,7 +56,7 @@ library ElasticMath { uint256 elasticity, uint256 lambda, uint256 m - ) internal pure returns (uint256 deltaEValue) { + ) internal pure returns (uint256) { uint256 lambdaDash = SafeMath.add(deltaLambda, lambda); return @@ -49,78 +69,89 @@ library ElasticMath { ); } + /** + * @dev calculates the lambda value given t, k, & m + * @param tokens t value; number of tokens for which lambda should be calculated + * @param k a constant, initially set by the DAO + * @param m share modifier + * + * lambda = k * m / t + * @return uint256 + */ function lambdaFromT( uint256 tokens, uint256 k, uint256 m - ) internal pure returns (uint256 lambda) { + ) internal pure returns (uint256) { return wdiv(tokens, wmul(k, m)); } /** - * @dev returns the value of mDash - * mDash = New share modifier - * @param m = Current share modifier - * @param lambda = Current outstanding shares - * @param lambdaDash = New outstanding shares + * @dev calculates the future share modifier given the future value of + * lambda (lambdaDash), the current value of lambda, and the current share modifier + * @param m current share modifier + * @param lambda current outstanding shares + * @param lambdaDash future outstanding shares * * mDash = ( lambdaDash / lambda ) * m - * @return mDashValue uint256 + * @return uint256 */ function mDash( uint256 lambdaDash, uint256 lambda, uint256 m - ) internal pure returns (uint256 mDashValue) { + ) internal pure returns (uint256) { return wmul(wdiv(lambdaDash, lambda), m); } /** - * @dev returns the value of revamp - * @param elasticity is the value of elasticity initially set by the DAO - * upto 18 decimal points of precision + * @dev calculates the value of revamp + * @param elasticity the percentage by which capitalDelta should increase * - * Essentially takes in the value of elasticity and - * and returns the value of ( 1 + elasticity ) with 18 decimals of precision - * @return revampValue uint256 + * revamp = 1 + elasticity + * @return uint256 */ - function revamp(uint256 elasticity) internal pure returns (uint256 revampValue) { + function revamp(uint256 elasticity) internal pure returns (uint256) { return SafeMath.add(elasticity, SafeMath.pow(10, 18)); } /** - * @dev returns the value of the total tokens in the DAO - * @param lambda = Current outstanding shares - * @param k is a constant, initially set by the DAO - * @param m = Current share modifier + * @dev calculates the number of tokens represented by lambda given k & m + * @param lambda shares + * @param k a constant, initially set by the DAO + * @param m share modifier * - * t = ( lambda * m * k ) - * @return tokens uint256 + * t = lambda * m * k + * @return uint256 */ function t( uint256 lambda, uint256 k, uint256 m - ) internal pure returns (uint256 tokens) { + ) internal pure returns (uint256) { return wmul(wmul(lambda, k), m); } /** - * @dev multiplies two float values, - * required since soldity does not handle floating point values + * @dev multiplies two float values, required since solidity does not handle + * floating point values + * + * inspiration: https://github.com/dapphub/ds-math/blob/master/src/math.sol + * * @return uint256 */ - // inspiration: https://github.com/dapphub/ds-math/blob/master/src/math.sol function wmul(uint256 a, uint256 b) internal pure returns (uint256) { return SafeMath.add(SafeMath.mul(a, b), 1000000000000000000 / 2) / 1000000000000000000; } /** - * @dev divides two float values, - * required since soldity does not handle floating point values + * @dev divides two float values, required since solidity does not handle + * floating point values. + * + * inspiration: https://github.com/dapphub/ds-math/blob/master/src/math.sol + * * @return uint256 */ - // inspiration: https://github.com/dapphub/ds-math/blob/master/src/math.sol function wdiv(uint256 a, uint256 b) internal pure returns (uint256) { return SafeMath.add(SafeMath.mul(a, 1000000000000000000), b / 2) / b; } From 3469683403b79af9f7bd2350e048e128c9c6a68c Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Fri, 19 Feb 2021 16:25:59 +0200 Subject: [PATCH 065/118] configurator service documentation --- src/services/Configurator.sol | 39 ++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/src/services/Configurator.sol b/src/services/Configurator.sol index 9d761cb..aa36c85 100644 --- a/src/services/Configurator.sol +++ b/src/services/Configurator.sol @@ -10,18 +10,18 @@ import '../tokens/ElasticGovernanceToken.sol'; import 'hardhat-deploy/solc_0.7/proxy/EIP173Proxy.sol'; import '@openzeppelin/contracts/utils/Create2.sol'; -/// @author ElasticDAO - https://ElasticDAO.org -/// @notice This contract is used for configuring ElasticDAOs -/// @dev ElasticDAO network contracts can read/write from this contract +/** + * @notice This contract is used for configuring ElasticDAOs + * @dev The main reason for having this is to decrease the size of ElasticDAO.sol + */ contract Configurator { /** * @dev creates DAO.Instance record - * @param _summoners - an array of the addresses of the summoners - * @param _name - the name of the DAO - * @param _ecosystem - an instance of Ecosystem + * @param _summoners addresses of the summoners + * @param _name name of the DAO + * @param _ecosystem instance of Ecosystem the DAO uses * @return bool true */ - function buildDAO( address[] memory _summoners, string memory _name, @@ -41,8 +41,9 @@ contract Configurator { } /** - * @dev duplicates the ecosystem contract address defaults - * @param defaults - An instance of the Ecosystem + * @dev duplicates the ecosystem contract address defaults so that each + * deployed DAO has it's own ecosystem configuration + * @param defaults instance of Ecosystem * @return ecosystem Ecosystem.Instance */ function buildEcosystem(Ecosystem.Instance memory defaults) @@ -67,16 +68,16 @@ contract Configurator { } /** - * @dev creates a governance token and it's storage - * @param _name - the name of the token - * @param _name - the symbol of the token - * @param _eByL is the initial Eth/Egt ratio before the DAO has been summoned - * @param _elasticity is the value of elasticity, initially set by the DAO - * @param _k is a constant, initially set by the DAO - * @param _maxLambdaPurchase - the maximum amount of lambda(shares) that can be - * purchased by an account - * m - initital share modifier = 1 - * @param _ecosystem - ecosystem instance + * @dev creates a governance token proxy, implementation, and Token instance (storage) + * @param _name name of the token + * @param _symbol symbol of the token + * @param _eByL initial ETH/token ratio + * @param _elasticity the percentage by which capitalDelta should increase + * @param _k a constant, initially set by the DAO + * @param _maxLambdaPurchase maximum amount of lambda (shares) that can be + * minted on each call to the join function in ElasticDAO.sol + * @param _salt unique identifier for use with create2 + * @param _ecosystem the DAO's ecosystem instance * @return token Token.Instance */ function buildToken( From a274f56accd53862b431263b395e5be4293a2acd Mon Sep 17 00:00:00 2001 From: Arpan Dutta Date: Fri, 19 Feb 2021 16:26:41 +0200 Subject: [PATCH 066/118] further refactoring of docs of Factory and ElasticDAO --- src/core/ElasticDAO.sol | 105 ++++++++++++++++++++++++++------- src/core/ElasticDAOFactory.sol | 12 ++++ 2 files changed, 97 insertions(+), 20 deletions(-) diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index 093634c..28a7ef5 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -85,16 +85,19 @@ contract ElasticDAO is ReentryProtection { /** * @notice Initializes and builds the ElasticDAO struct by passing and initializing * all the required parameters into the configurator + * * @param _ecosystemModelAddress - the address of the ecosystem model * @param _controller - the address of the controller * @param _summoners - an array containing the addresses of the summoners * @param _name - the name of the DAO - * @param _maxVotingLambda - the maximum amount of lambda that can be used to vote in the DAO + * @param _maxVotingLambda -the maximum amount of lambda that can be used to vote in the DAO + * * @dev * Requirements: * - The DAO cannot already be initialized * - The ecosystem model address cannot be the zero address - * - The DAO must have atleast one summoner + * - The DAO must have atleast one summoner to summon the DAO + * - The configurator should be able to successfully build the DAO */ function initialize( address _ecosystemModelAddress, @@ -125,8 +128,17 @@ contract ElasticDAO is ReentryProtection { } /** - * @notice this function is used to exit the DAO + * @notice this function is to be used for exiting the DAO + * for the underlying ETH value of _deltaLambda + * + * The eth value of _deltaLambda is calculated using: + * + * eth to be transfered = ( deltaLambda/lambda ) * totalEthInTheDAO + * * @param _deltaLambda - the amount of lambda the address exits with + * + * Requirement: + * - Should be able to successfully exit the DAO * @dev emits ExitDAO event */ function exit(uint256 _deltaLambda) external onlyAfterSummoning preventReentry { @@ -145,16 +157,26 @@ contract ElasticDAO is ReentryProtection { } /** - * @notice initializes the token of the DAO + * @notice initializes the token of the DAO, using the Configurator + * * @param _name - name of the token * @param _symbol - symbol of the token - * @param _eByL - the amount of lambda a summoner gets(per ETH) during the seeding phase of the DAO - * @param _elasticity - the value by which the cost of entering the DAO increases ( on every join ) - * @param _k - is the constant token multiplier - it increases the number of tokens that each member of the DAO has with respect to their lambda + * @param _eByL -the amount of lambda a summoner gets(per ETH) during the seeding phase of the DAO + * @param _elasticity the value by which the cost of entering the DAO increases ( on every join ) + * @param _k - is the constant token multiplier + * it increases the number of tokens that each member of the DAO has with respect to their lambda * @param _maxLambdaPurchase - is the maximum amount of lambda that can be purchased per wallet - * @param _salt - an arbitary value provided by the function caller ( to follow the Create2 pattern of generating opcodes) - * @dev refer https://docs.openzeppelin.com/cli/2.8/deploying-with-create2#create2 for further understanding of Create2 and salt + * @param _salt-an arbitary value provided by the function caller + * (to follow the Create2 pattern of generating opcodes) + * + * @dev refer https://docs.openzeppelin.com/cli/2.8/deploying-with-create2#create2 + * for further understanding of Create2 and salt * @dev emits ElasticGovernanceTokenDeployed event + * @dev + * Requirements: + * - Only the deployer of the DAO can initialize the Token + * - The controller of the DAO should successfully be set as the burner of the tokens of the DAO + * - The controller of the DAO should successfully be set as the minter of the tokens of the DAO */ function initializeToken( string memory _name, @@ -191,9 +213,23 @@ contract ElasticDAO is ReentryProtection { /** * @notice this function is used to join the DAO after it has been summoned + * Joining the DAO is syntactically equal to minting _deltaLambda for the function caller. + * + * Based on the current state of the DAO, capitalDelta, deltaE, mDash are calulated, + * after which _deltaLambda is minted for the address calling the function. + * * @param _deltaLambda - the amount of lambda the address joins with - * @dev documentation and further math regarding capitalDelta, deltaE, mDash can be found at ../libraries/ElasticMath.sol + * + * @dev documentation and further math regarding capitalDelta, deltaE, + * mDash can be found at ../libraries/ElasticMath.sol * @dev emits the JoinDAO event + * + * @dev Requirements: + * The amount of shares being purchased has to be lower than maxLambdaPurchase + * (The value of maxLambdaPurchase is set during the initialzing of the DAO) + * The correct value of ETH, calculated via deltaE, + * must be sent in the transaction by the calling address + * The token contract should be successfully be able to mint _deltaLambda */ function join(uint256 _deltaLambda) external @@ -206,16 +242,14 @@ contract ElasticDAO is ReentryProtection { require( _deltaLambda <= token.maxLambdaPurchase, - 'ElasticDAO: Cannot purchase that many shares at once' + 'ElasticDAO: Cannot purchase those many lambda at once' ); ElasticGovernanceToken tokenContract = ElasticGovernanceToken(token.uuid); uint256 capitalDelta = ElasticMath.capitalDelta( - // at this stage address(this).balance has the eth present in it(before function join), - // along with msg.value - // hence msg.value is subtracted from capitalDelta because capitalDelta is calculated - // with the eth present in the contract prior to receieving msg.value + // the current totalBalance of the DAO is inclusive of msg.value, + // capitalDelta is to be calculated without the msg.value address(this).balance - msg.value, tokenContract.totalSupply() ); @@ -251,8 +285,12 @@ contract ElasticDAO is ReentryProtection { /** * @notice penalizes @param _addresess with @param _amounts respectively + * * @param _addresses - an array of addresses * @param _amounts - an array containing the amounts each address has to be penalized respectively + * + * @dev Requirement: + * - Each address must have a corresponding amount to be penalized with */ function penalize(address[] memory _addresses, uint256[] memory _amounts) external @@ -273,8 +311,12 @@ contract ElasticDAO is ReentryProtection { /** * @notice rewards @param _addresess with @param _amounts respectively + * * @param _addresses - an array of addresses * @param _amounts - an array containing the amounts each address has to be rewarded respectively + * + * @dev Requirement: + * - Each address must have a corresponding amount to be rewarded with */ function reward(address[] memory _addresses, uint256[] memory _amounts) external @@ -294,9 +336,17 @@ contract ElasticDAO is ReentryProtection { } /** - * @notice sets the controller of the DAO - * @param _controller - the address of the controller of the DAO + * @notice sets the controller of the DAO, + * The controller of the DAO handles various responsibilities of the DAO, + * such as burning and minting tokens on behalf of the DAO + * + * @param _controller - the new address of the controller of the DAO + * * @dev emits ControllerChanged event + * @dev Requirements: + * - Each address must have a corresponding amount to be penalized with + * - The controller of the DAO should successfully be set as the burner of the tokens of the DAO + * - The controller of the DAO should successfully be set as the minter of the tokens of the DAO */ function setController(address _controller) external onlyController preventReentry { require(_controller != address(0), 'ElasticDAO: Address Zero'); @@ -323,8 +373,13 @@ contract ElasticDAO is ReentryProtection { } /** - * @notice seeds the DAO - * @dev seeding of the DAO occurs after the DAO has been initialized and before the DAO has been summoned + * @notice seeds the DAO, + * Essentially transferring of ETH by a summoner address, in return for lambda is seeding the DAO, + * The lambda recieved is given by: + * Lambda = Eth / eByL + * + * @dev seeding of the DAO occurs after the DAO has been initialized, + * and before the DAO has been summoned * @dev emits the SeedDAO event */ function seedSummoning() @@ -345,9 +400,19 @@ contract ElasticDAO is ReentryProtection { } /** - * @notice summons the DAO + * @notice summons the DAO, + * Summoning the DAO results in all summoners getting _deltaLambda + * after which people can enter the DAO using the join function + * * @param _deltaLambda - the amount of lambda each summoner address receieves + * * @dev emits SummonedDAO event + * @dev Requirement: + * The DAO must be seeded with ETH during the seeding phase + * (This is to facilitate capitalDelta calculations after the DAO has been summoned). + * + * @dev documentation and further math regarding capitalDelta + * can be found at ../libraries/ElasticMath.sol */ function summon(uint256 _deltaLambda) external onlyBeforeSummoning onlySummoners preventReentry { require(address(this).balance > 0, 'ElasticDAO: Please seed DAO with ETH to set ETH:EGT ratio'); diff --git a/src/core/ElasticDAOFactory.sol b/src/core/ElasticDAOFactory.sol index c9fda5a..ac701d3 100644 --- a/src/core/ElasticDAOFactory.sol +++ b/src/core/ElasticDAOFactory.sol @@ -36,6 +36,7 @@ contract ElasticDAOFactory is ReentryProtection { /** * @notice Initializes the ElasticDAO factory + * * @param _ecosystemModelAddress - the address of the ecosystem model * @dev * Requirements: @@ -55,7 +56,10 @@ contract ElasticDAOFactory is ReentryProtection { /** * @notice collects the fees sent to this contract + * * @dev emits FeesCollected event + * Requirement: + * - The fee collection transaction should be successful */ function collectFees() external preventReentry { uint256 amount = address(this).balance; @@ -67,6 +71,7 @@ contract ElasticDAOFactory is ReentryProtection { /** * @notice deploys DAO and initializes token and stores the address of the deployed DAO + * * @param _summoners - an array containing address of summoners * @param _nameOfDAO - the name of the DAO * @param _nameOfToken - the name of the token @@ -76,6 +81,7 @@ contract ElasticDAOFactory is ReentryProtection { * it increases the number of tokens that each member of the DAO has with respect to their lambda * @param _maxLambdaPurchase - is the maximum amount of lambda that can be purchased per wallet * @param _maxVotingLambda - is the maximum amount of lambda that can be used to vote + * * @dev emits DeployedDAO event * @dev * Requirement: @@ -131,7 +137,9 @@ contract ElasticDAOFactory is ReentryProtection { /** * @notice updates the fee required to deploy a DAQ + * * @param _amount - the new amount of the fees + * * @dev emits FeeUpdated event */ function updateFee(uint256 _amount) external onlyManager preventReentry { @@ -141,7 +149,9 @@ contract ElasticDAOFactory is ReentryProtection { /** * @notice updates the address of the fee reciever + * * @param _feeReceiver - the new address of the fee reciever + * * @dev emits FeeUpdated event * @dev * Requirement: @@ -156,7 +166,9 @@ contract ElasticDAOFactory is ReentryProtection { /** * @notice updates the manager address + * * @param _newManager - the address of the new manager + * * @dev emits ManagerUpdated event */ function updateManager(address _newManager) external onlyManager preventReentry { From 33c4dc0b52bbe34f1a78b9823314c84ce5621717 Mon Sep 17 00:00:00 2001 From: Arpan Dutta Date: Fri, 19 Feb 2021 16:36:32 +0200 Subject: [PATCH 067/118] clears up spelling and contract description --- src/core/ElasticDAO.sol | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index 28a7ef5..19f8a31 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -13,9 +13,10 @@ import '../services/Configurator.sol'; import '../services/ReentryProtection.sol'; /** - * @dev The ElasticDAO contract, - * Serves as a blueprint for all the parameters and permissions - * required by an ElasticDAO + * @dev The ElasticDAO contract outlines and defines all the functionality + * such as initialize, Join, exit, etc for an elasticDAO. + * + * It also serves as the vault for ElasticDAO. */ contract ElasticDAO is ReentryProtection { address public deployer; @@ -375,7 +376,7 @@ contract ElasticDAO is ReentryProtection { /** * @notice seeds the DAO, * Essentially transferring of ETH by a summoner address, in return for lambda is seeding the DAO, - * The lambda recieved is given by: + * The lambda receieved is given by: * Lambda = Eth / eByL * * @dev seeding of the DAO occurs after the DAO has been initialized, From d5e7810b3916f86f693fe4d8de7706c8bba0f5ee Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Fri, 19 Feb 2021 19:30:46 +0200 Subject: [PATCH 068/118] use ElasticDAO proxy instead of implementation, deploy implementation only once --- deploy/elasticDAO.js | 14 ++++++++ deploy/elasticDAOFactory.js | 3 +- src/core/ElasticDAO.sol | 2 +- src/core/ElasticDAOFactory.sol | 59 +++++++++++++++++++++++++--------- test/elasticDAOFactoryTest.js | 39 ++++++++++++++++++++-- 5 files changed, 98 insertions(+), 19 deletions(-) create mode 100644 deploy/elasticDAO.js diff --git a/deploy/elasticDAO.js b/deploy/elasticDAO.js new file mode 100644 index 0000000..692cee9 --- /dev/null +++ b/deploy/elasticDAO.js @@ -0,0 +1,14 @@ +module.exports = async ({ getNamedAccounts, deployments }) => { + const { deploy, log } = deployments; + const { agent } = await getNamedAccounts(); + + const elasticDAO = await deploy('ElasticDAO', { + from: agent, + args: [], + }); + + if (elasticDAO.newlyDeployed) { + log(`##### ElasticDAO: ElasticDAO has been deployed: ${elasticDAO.address}`); + } +}; +module.exports.tags = ['ElasticDAO']; diff --git a/deploy/elasticDAOFactory.js b/deploy/elasticDAOFactory.js index bb7f8ce..83863bd 100644 --- a/deploy/elasticDAOFactory.js +++ b/deploy/elasticDAOFactory.js @@ -6,6 +6,7 @@ module.exports = async ({ getNamedAccounts, deployments }) => { const { agent } = await getNamedAccounts(); const Ecosystem = await deployments.get('Ecosystem'); + const ElasticDAO = await deployments.get('ElasticDAO'); const elasticDAOFactory = await deploy('ElasticDAOFactory', { from: agent, @@ -20,7 +21,7 @@ module.exports = async ({ getNamedAccounts, deployments }) => { elasticDAOFactory.abi, hre.provider.getSigner(agent), ); - await factory.initialize(Ecosystem.address); + await factory.initialize(Ecosystem.address, ElasticDAO.address); if (elasticDAOFactory.newlyDeployed) { log(`##### ElasticDAO: ElasticDAOFactory has been deployed: ${elasticDAOFactory.address}`); diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index 19f8a31..57bd1b6 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -15,7 +15,7 @@ import '../services/ReentryProtection.sol'; /** * @dev The ElasticDAO contract outlines and defines all the functionality * such as initialize, Join, exit, etc for an elasticDAO. - * + * * It also serves as the vault for ElasticDAO. */ contract ElasticDAO is ReentryProtection { diff --git a/src/core/ElasticDAOFactory.sol b/src/core/ElasticDAOFactory.sol index ac701d3..068c6fe 100644 --- a/src/core/ElasticDAOFactory.sol +++ b/src/core/ElasticDAOFactory.sol @@ -16,6 +16,7 @@ import 'hardhat-deploy/solc_0.7/proxy/EIP173ProxyWithReceive.sol'; */ contract ElasticDAOFactory is ReentryProtection { address public ecosystemModelAddress; + address public elasticDAOImplementationAddress; address public manager; address payable feeAddress; address[] public deployedDAOAddresses; @@ -24,8 +25,9 @@ contract ElasticDAOFactory is ReentryProtection { bool public initialized = false; event DeployedDAO(address indexed daoAddress); + event ElasticDAOImplementationAddressUpdated(address indexed elasticDAOImplementationAddress); event FeeAddressUpdated(address indexed feeReceiver); - event FeesCollected(address treasuryAddress, uint256 amount); + event FeesCollected(address indexed feeAddress, uint256 amount); event FeeUpdated(uint256 amount); event ManagerUpdated(address indexed newManager); @@ -43,15 +45,22 @@ contract ElasticDAOFactory is ReentryProtection { * - The factory cannot already be initialized * - The ecosystem model address cannot be the zero address */ - function initialize(address _ecosystemModelAddress) external preventReentry { + function initialize(address _ecosystemModelAddress, address _elasticDAOImplementationAddress) + external + preventReentry + { require(initialized == false, 'ElasticDAO: Factory already initialized'); - require(_ecosystemModelAddress != address(0), 'ElasticDAO: Address Zero'); + require( + _ecosystemModelAddress != address(0) && _elasticDAOImplementationAddress != address(0), + 'ElasticDAO: Address Zero' + ); - initialized = true; - manager = msg.sender; deployedDAOCount = 0; - fee = 250000000000000000; ecosystemModelAddress = _ecosystemModelAddress; + elasticDAOImplementationAddress = _elasticDAOImplementationAddress; + fee = 250000000000000000; + initialized = true; + manager = msg.sender; } /** @@ -101,25 +110,27 @@ contract ElasticDAOFactory is ReentryProtection { require(fee == msg.value, 'ElasticDAO: A fee is required to deploy a DAO'); bytes32 salt = keccak256(abi.encode(msg.sender, deployedDAOCount)); - // compute deployed DAO address - address payable daoAddress = - address(uint160(Create2.computeAddress(salt, keccak256(type(ElasticDAO).creationCode)))); - - // deploy proxy with the computed dao address + // deploy proxy with the elasticDAO implementation address EIP173ProxyWithReceive proxy = - new EIP173ProxyWithReceive(daoAddress, type(ElasticDAO).creationCode, msg.sender); + new EIP173ProxyWithReceive( + elasticDAOImplementationAddress, + type(ElasticDAO).creationCode, + msg.sender + ); + + address payable daoAddress = address(proxy); // deploy DAO with computed address and initialize Create2.deploy(0, salt, type(ElasticDAO).creationCode); ElasticDAO(daoAddress).initialize( ecosystemModelAddress, - proxy.owner(), + msg.sender, _summoners, _nameOfDAO, _maxVotingLambda ); - deployedDAOAddresses.push(address(daoAddress)); + deployedDAOAddresses.push(daoAddress); deployedDAOCount = SafeMath.add(deployedDAOCount, 1); // initialize the token @@ -132,7 +143,25 @@ contract ElasticDAOFactory is ReentryProtection { _maxLambdaPurchase, salt ); - emit DeployedDAO(address(daoAddress)); + emit DeployedDAO(daoAddress); + } + + /** + * @notice updates the address of the elasticDAO implementation + * @param _elasticDAOImplementationAddress - the new address of the fee reciever + * @dev emits ElasticDAOImplementationAddressUpdated event + * @dev Requirement: + * - The elasticDAO implementation address cannot be zero address + */ + function updateElasticDAOImplementationAddress(address _elasticDAOImplementationAddress) + external + onlyManager + preventReentry + { + require(_elasticDAOImplementationAddress != address(0), 'ElasticDAO: Address Zero'); + + elasticDAOImplementationAddress = _elasticDAOImplementationAddress; + emit ElasticDAOImplementationAddressUpdated(_elasticDAOImplementationAddress); } /** diff --git a/test/elasticDAOFactoryTest.js b/test/elasticDAOFactoryTest.js index ee5bfab..5f89b32 100644 --- a/test/elasticDAOFactoryTest.js +++ b/test/elasticDAOFactoryTest.js @@ -1,3 +1,4 @@ +const { deployments } = require('hardhat'); const { ethers } = require('ethers'); const { expect } = require('chai'); @@ -65,6 +66,40 @@ describe('ElasticDAO: Factory', () => { ).to.be.revertedWith('ElasticDAO: A fee is required to deploy a DAO'); }); + it('Should updateElasticDAOImplementationAddress', async () => { + const { agent } = await signers(); + + const elasticDAO = await deployments.deploy('ElasticDAO', { + from: agent.address, + args: [], + }); + + sdk.changeSigner(agent); + + const tx = await sdk.elasticDAOFactory.contract.updateElasticDAOImplementationAddress( + elasticDAO.address, + ); + const logs = await tx.wait(1); + + expect(logs.events[0].event).to.equal('ElasticDAOImplementationAddressUpdated'); + expect(logs.events[0].args.elasticDAOImplementationAddress).to.equal(elasticDAO.address); + }); + + it('Should not updateElasticDAOImplementationAddress when caller is not the manager', async () => { + const { agent, summoner2 } = await signers(); + + const elasticDAO = await deployments.deploy('ElasticDAO', { + from: agent.address, + args: [], + }); + + sdk.changeSigner(summoner2); + + await expect( + sdk.elasticDAOFactory.contract.updateElasticDAOImplementationAddress(elasticDAO.address), + ).to.be.revertedWith('ElasticDAO: Only manager'); + }); + it('Should updateFeeAddress', async () => { const { agent, summoner2 } = await signers(); @@ -113,7 +148,7 @@ describe('ElasticDAO: Factory', () => { ).to.be.revertedWith('ElasticDAO: Only manager'); }); - it('Should collectFees to the feeAddress', async () => { + it('Should collect fees to the feeAddress', async () => { const { agent } = await signers(); sdk.changeSigner(agent); @@ -126,7 +161,7 @@ describe('ElasticDAO: Factory', () => { const logs = await tx.wait(1); expect(logs.events[0].event).to.equal('FeesCollected'); - expect(logs.events[0].args.treasuryAddress).to.equal(agent.address); + expect(logs.events[0].args.feeAddress).to.equal(agent.address); expect(logs.events[0].args.amount).to.equal(feeAmountToCollect); }); }); From 3c724010ef7d875407c2812413c2c3ebfadef9e3 Mon Sep 17 00:00:00 2001 From: Nikoloz Date: Fri, 19 Feb 2021 20:05:45 +0200 Subject: [PATCH 069/118] refactors models documentation --- src/models/DAO.sol | 9 ++-- src/models/Ecosystem.sol | 13 +++-- src/models/EternalModel.sol | 96 ++++++++++++++++++++++--------------- src/models/Token.sol | 13 +++-- src/models/TokenHolder.sol | 13 +++-- 5 files changed, 87 insertions(+), 57 deletions(-) diff --git a/src/models/DAO.sol b/src/models/DAO.sol index 355a4da..24c96aa 100644 --- a/src/models/DAO.sol +++ b/src/models/DAO.sol @@ -7,9 +7,12 @@ import './EternalModel.sol'; import '../libraries/SafeMath.sol'; import '../services/ReentryProtection.sol'; -/// @author ElasticDAO - https://ElasticDAO.org -/// @notice This contract is used for storing core dao data -/// @dev ElasticDAO network contracts can read/write from this contract +/** + * @title Aecentralised Autonomous Organisation + * @author ElasticDAO - https://ElasticDAO.org + * @notice This contract is used for storing core DAO data + * @dev ElasticDAO network contracts can read/write from this contract + */ contract DAO is EternalModel, ReentryProtection { struct Instance { address uuid; diff --git a/src/models/Ecosystem.sol b/src/models/Ecosystem.sol index 212d27a..6fbb02d 100644 --- a/src/models/Ecosystem.sol +++ b/src/models/Ecosystem.sol @@ -6,11 +6,14 @@ import './EternalModel.sol'; import '../libraries/SafeMath.sol'; import '../services/ReentryProtection.sol'; -/// @author ElasticDAO - https://ElasticDAO.org -/// @notice This contract is used for storing core dao data -/// @dev ElasticDAO network contracts can read/write from this contract -/// Serialize -> Translation of data from the concerned struct to key-value pairs -/// Deserialize -> Translation of data from the key-value pairs to a struct +/** + * @title ElasticDAO ecosystem + * @author ElasticDAO - https://ElasticDAO.org + * @notice This contract is used for storing core dao data + * @dev ElasticDAO network contracts can read/write from this contract + * @dev Serialize - Translation of data from the concerned struct to key-value pairs + * @dev Deserialize - Translation of data from the key-value pairs to a struct + */ contract Ecosystem is EternalModel, ReentryProtection { struct Instance { address daoAddress; diff --git a/src/models/EternalModel.sol b/src/models/EternalModel.sol index 535173d..4ebdc3a 100644 --- a/src/models/EternalModel.sol +++ b/src/models/EternalModel.sol @@ -2,11 +2,13 @@ pragma solidity 0.7.2; pragma experimental ABIEncoderV2; -/// @author ElasticDAO - https://ElasticDAO.org -/// @title Implementation of Eternal Storage -/// (https://fravoll.github.io/solidity-patterns/eternal_storage.html) -/// @notice This contract is used for storing contract network data -/// @dev ElasticDAO network contracts can read/write from this contract +/** + * @title Implementation of Eternal Storage for ElasticDAO - + * - (https://fravoll.github.io/solidity-patterns/eternal_storage.html) + * @author ElasticDAO - https://ElasticDAO.org + * @notice This contract is used for storing contract network data + * @dev ElasticDAO network contracts can read/write from this contract + */ contract EternalModel { struct Storage { mapping(bytes32 => address) addressStorage; @@ -19,70 +21,86 @@ contract EternalModel { Storage internal s; - ////////////////////////////// - /// @notice Getter Functions - ///////////////////////////// + /** + * @notice Getter Functions + */ - /// @notice Get stored contract data in uint256 format - /// @param _key bytes32 location should be keccak256 and abi.encodePacked - /// @return uint256 _value from storage _key location + /** + * @notice Gets stored contract data in unit256 format + * @param _key bytes32 location should be keccak256 and abi.encodePacked + * @return uint256 _value from storage _key location + */ function getUint(bytes32 _key) internal view returns (uint256) { return s.uIntStorage[_key]; } - /// @notice Get stored contract data in string format - /// @param _key bytes32 location should be keccak256 and abi.encodePacked - /// @return string _value from storage _key location + /** + * @notice Get stored contract data in string format + * @param _key bytes32 location should be keccak256 and abi.encodePacked + * @return string _value from storage _key location + */ function getString(bytes32 _key) internal view returns (string memory) { return s.stringStorage[_key]; } - /// @notice Get stored contract data in address format - /// @param _key bytes32 location should be keccak256 and abi.encodePacked - /// @return address _value from storage _key location + /** + * @notice Get stored contract data in address format + * @param _key bytes32 location should be keccak256 and abi.encodePacked + * @return address _value from storage _key location + */ function getAddress(bytes32 _key) internal view returns (address) { return s.addressStorage[_key]; } - /// @notice Get stored contract data in bool format - /// @param _key bytes32 location should be keccak256 and abi.encodePacked - /// @return bool _value from storage _key location + /** + * @notice Get stored contract data in bool format + * @param _key bytes32 location should be keccak256 and abi.encodePacked + * @return bool _value from storage _key location + */ function getBool(bytes32 _key) internal view returns (bool) { return s.boolStorage[_key]; } - ////////////////////////////// - /// @notice Setter Functions - ///////////////////////////// + /** + * @notice Setters Functions + */ - /// @notice Store contract data in uint256 format - /// @dev restricted to latest ElasticDAO Networks contracts - /// @param _key bytes32 location should be keccak256 and abi.encodePacked - /// @param _value uint256 value + /** + * @notice Store contract data in uint256 format + * @dev restricted to latest ElasticDAO Networks contracts + * @param _key bytes32 location should be keccak256 and abi.encodePacked + * @param _value uint256 value + */ function setUint(bytes32 _key, uint256 _value) internal { s.uIntStorage[_key] = _value; } - /// @notice Store contract data in string format - /// @dev restricted to latest ElasticDAO Networks contracts - /// @param _key bytes32 location should be keccak256 and abi.encodePacked - /// @param _value string value + /** + * @notice Store contract data in string format + * @dev restricted to latest ElasticDAO Networks contracts + * @param _key bytes32 location should be keccak256 and abi.encodePacked + * @param _value string value + */ function setString(bytes32 _key, string memory _value) internal { s.stringStorage[_key] = _value; } - /// @notice Store contract data in address format - /// @dev restricted to latest ElasticDAO Networks contracts - /// @param _key bytes32 location should be keccak256 and abi.encodePacked - /// @param _value address value + /** + * @notice Store contract data in address format + * @dev restricted to latest ElasticDAO Networks contracts + * @param _key bytes32 location should be keccak256 and abi.encodePacked + * @param _value address value + */ function setAddress(bytes32 _key, address _value) internal { s.addressStorage[_key] = _value; } - /// @notice Store contract data in bool format - /// @dev restricted to latest ElasticDAO Networks contracts - /// @param _key bytes32 location should be keccak256 and abi.encodePacked - /// @param _value bool value + /** + * @notice Store contract data in bool format + * @dev restricted to latest ElasticDAO Networks contracts + * @param _key bytes32 location should be keccak256 and abi.encodePacked + * @param _value bool value + */ function setBool(bytes32 _key, bool _value) internal { s.boolStorage[_key] = _value; } diff --git a/src/models/Token.sol b/src/models/Token.sol index 96acb04..2f52070 100644 --- a/src/models/Token.sol +++ b/src/models/Token.sol @@ -8,11 +8,14 @@ import '../libraries/SafeMath.sol'; import '../services/ReentryProtection.sol'; import '../tokens/ElasticGovernanceToken.sol'; -/// @author ElasticDAO - https://ElasticDAO.org -/// @notice This contract is used for storing token data -/// @dev ElasticDAO network contracts can read/write from this contract -/// Serialize -> Translation of data from the concerned struct to key-value pairs -/// Deserialize -> Translation of data from the key-value pairs to a struct +/** + * @title A data storage for EGT (Elastic Governance Token) + * @notice More info about EGT could be found in ./tokens/ElasticGovernanceToken.sol + * @notice This contract is used for storing token data + * @dev ElasticDAO network contracts can read/write from this contract + * Serialize - Translation of data from the concerned struct to key-value pairs + * Deserialize - Translation of data from the key-value pairs to a struct + */ contract Token is EternalModel, ReentryProtection { struct Instance { address uuid; diff --git a/src/models/TokenHolder.sol b/src/models/TokenHolder.sol index c4f009c..380a424 100644 --- a/src/models/TokenHolder.sol +++ b/src/models/TokenHolder.sol @@ -8,11 +8,14 @@ import './Token.sol'; import '../libraries/SafeMath.sol'; import '../services/ReentryProtection.sol'; -/// @author ElasticDAO - https://ElasticDAO.org -/// @notice This contract is used for storing token data -/// @dev ElasticDAO network contracts can read/write from this contract -// Serialize -> Translation of data from the concerned struct to key-value pairs -/// Deserialize -> Translation of data from the key-value pairs to a struct +/** + * @title a data storage for Token holders + * @author ElasticDAO - https://ElasticDAO.org + * @notice This contract is used for storing token data + * @dev ElasticDAO network contracts can read/write from this contract + * Serialize - Translation of data from the concerned struct to key-value pairs + * Deserialize - Translation of data from the key-value pairs to a struct + */ contract TokenHolder is EternalModel, ReentryProtection { struct Instance { address account; From d3ea8b016cc68fb8336d318c1efce11cb7488c8e Mon Sep 17 00:00:00 2001 From: Nikoloz Date: Fri, 19 Feb 2021 21:59:22 +0200 Subject: [PATCH 070/118] refactors models to folow pattern --- src/models/DAO.sol | 24 ++++++++++++------------ src/models/Ecosystem.sol | 35 +++++++++++++++++++---------------- src/models/Token.sol | 32 ++++++++++++++++---------------- src/models/TokenHolder.sol | 10 +++++----- test/elasticDAOFactoryTest.js | 1 + 5 files changed, 53 insertions(+), 49 deletions(-) diff --git a/src/models/DAO.sol b/src/models/DAO.sol index 24c96aa..287f55e 100644 --- a/src/models/DAO.sol +++ b/src/models/DAO.sol @@ -70,27 +70,27 @@ contract DAO is EternalModel, ReentryProtection { /** * @dev serializes Instance struct - * @param record Instance + * @param _record Instance */ - function serialize(Instance memory record) external preventReentry { + function serialize(Instance memory _record) external preventReentry { require( - msg.sender == record.uuid || msg.sender == record.ecosystem.configuratorAddress, + msg.sender == _record.uuid || msg.sender == _record.ecosystem.configuratorAddress, 'ElasticDAO: Unauthorized' ); - setString(keccak256(abi.encode(record.uuid, 'name')), record.name); - setBool(keccak256(abi.encode(record.uuid, 'summoned')), record.summoned); + setString(keccak256(abi.encode(_record.uuid, 'name')), _record.name); + setBool(keccak256(abi.encode(_record.uuid, 'summoned')), _record.summoned); - if (record.summoners.length > 0) { - record.numberOfSummoners = record.summoners.length; - setUint(keccak256(abi.encode(record.uuid, 'numberOfSummoners')), record.numberOfSummoners); - for (uint256 i = 0; i < record.numberOfSummoners; i += 1) { - setBool(keccak256(abi.encode(record.uuid, 'summoner', record.summoners[i])), true); - setAddress(keccak256(abi.encode(record.uuid, 'summoners', i)), record.summoners[i]); + if (_record.summoners.length > 0) { + _record.numberOfSummoners = _record.summoners.length; + setUint(keccak256(abi.encode(_record.uuid, 'numberOfSummoners')), _record.numberOfSummoners); + for (uint256 i = 0; i < _record.numberOfSummoners; i += 1) { + setBool(keccak256(abi.encode(_record.uuid, 'summoner', _record.summoners[i])), true); + setAddress(keccak256(abi.encode(_record.uuid, 'summoners', i)), _record.summoners[i]); } } - setBool(keccak256(abi.encode(record.uuid, 'exists')), true); + setBool(keccak256(abi.encode(_record.uuid, 'exists')), true); } function _exists(address _uuid) internal view returns (bool) { diff --git a/src/models/Ecosystem.sol b/src/models/Ecosystem.sol index 6fbb02d..2ee21c2 100644 --- a/src/models/Ecosystem.sol +++ b/src/models/Ecosystem.sol @@ -68,37 +68,40 @@ contract Ecosystem is EternalModel, ReentryProtection { /** * @dev serializes Instance struct - * @param record Instance + * @param _record Instance */ - function serialize(Instance memory record) external preventReentry { - bool recordExists = _exists(record.daoAddress); + function serialize(Instance memory _record) external preventReentry { + bool recordExists = _exists(_record.daoAddress); require( - msg.sender == record.daoAddress || - msg.sender == record.configuratorAddress || - (record.daoAddress == address(0) && !recordExists), + msg.sender == _record.daoAddress || + msg.sender == _record.configuratorAddress || + (_record.daoAddress == address(0) && !recordExists), 'ElasticDAO: Unauthorized' ); setAddress( - keccak256(abi.encode(record.daoAddress, 'configuratorAddress')), - record.configuratorAddress + keccak256(abi.encode(_record.daoAddress, 'configuratorAddress')), + _record.configuratorAddress ); - setAddress(keccak256(abi.encode(record.daoAddress, 'daoModelAddress')), record.daoModelAddress); setAddress( - keccak256(abi.encode(record.daoAddress, 'governanceTokenAddress')), - record.governanceTokenAddress + keccak256(abi.encode(_record.daoAddress, 'daoModelAddress')), + _record.daoModelAddress ); setAddress( - keccak256(abi.encode(record.daoAddress, 'tokenHolderModelAddress')), - record.tokenHolderModelAddress + keccak256(abi.encode(_record.daoAddress, 'governanceTokenAddress')), + _record.governanceTokenAddress ); setAddress( - keccak256(abi.encode(record.daoAddress, 'tokenModelAddress')), - record.tokenModelAddress + keccak256(abi.encode(_record.daoAddress, 'tokenHolderModelAddress')), + _record.tokenHolderModelAddress + ); + setAddress( + keccak256(abi.encode(_record.daoAddress, 'tokenModelAddress')), + _record.tokenModelAddress ); - setBool(keccak256(abi.encode(record.daoAddress, 'exists')), true); + setBool(keccak256(abi.encode(_record.daoAddress, 'exists')), true); } function _exists(address _daoAddress) internal view returns (bool recordExists) { diff --git a/src/models/Token.sol b/src/models/Token.sol index 2f52070..6b0682c 100644 --- a/src/models/Token.sol +++ b/src/models/Token.sol @@ -65,33 +65,33 @@ contract Token is EternalModel, ReentryProtection { /** * @dev serializes Instance struct - * @param record Instance + * @param _record Instance */ - function serialize(Instance memory record) external preventReentry { + function serialize(Instance memory _record) external preventReentry { require( - msg.sender == record.uuid || - msg.sender == record.ecosystem.daoAddress || - (msg.sender == record.ecosystem.configuratorAddress && !_exists(record.uuid)), + msg.sender == _record.uuid || + msg.sender == _record.ecosystem.daoAddress || + (msg.sender == _record.ecosystem.configuratorAddress && !_exists(_record.uuid)), 'ElasticDAO: Unauthorized' ); - setString(keccak256(abi.encode(record.uuid, 'name')), record.name); - setString(keccak256(abi.encode(record.uuid, 'symbol')), record.symbol); - setUint(keccak256(abi.encode(record.uuid, 'eByL')), record.eByL); - setUint(keccak256(abi.encode(record.uuid, 'elasticity')), record.elasticity); - setUint(keccak256(abi.encode(record.uuid, 'k')), record.k); - setUint(keccak256(abi.encode(record.uuid, 'lambda')), record.lambda); - setUint(keccak256(abi.encode(record.uuid, 'm')), record.m); - setUint(keccak256(abi.encode(record.uuid, 'maxLambdaPurchase')), record.maxLambdaPurchase); + setString(keccak256(abi.encode(_record.uuid, 'name')), _record.name); + setString(keccak256(abi.encode(_record.uuid, 'symbol')), _record.symbol); + setUint(keccak256(abi.encode(_record.uuid, 'eByL')), _record.eByL); + setUint(keccak256(abi.encode(_record.uuid, 'elasticity')), _record.elasticity); + setUint(keccak256(abi.encode(_record.uuid, 'k')), _record.k); + setUint(keccak256(abi.encode(_record.uuid, 'lambda')), _record.lambda); + setUint(keccak256(abi.encode(_record.uuid, 'm')), _record.m); + setUint(keccak256(abi.encode(_record.uuid, 'maxLambdaPurchase')), _record.maxLambdaPurchase); - setBool(keccak256(abi.encode(record.uuid, 'exists')), true); + setBool(keccak256(abi.encode(_record.uuid, 'exists')), true); } - function updateNumberOfTokenHolders(Instance memory record, uint256 numberOfTokenHolders) + function updateNumberOfTokenHolders(Instance memory _record, uint256 numberOfTokenHolders) external preventReentry { - setUint(keccak256(abi.encode(record.uuid, 'numberOfTokenHolders')), numberOfTokenHolders); + setUint(keccak256(abi.encode(_record.uuid, 'numberOfTokenHolders')), numberOfTokenHolders); } function _exists(address _uuid) internal view returns (bool) { diff --git a/src/models/TokenHolder.sol b/src/models/TokenHolder.sol index 380a424..e7bb095 100644 --- a/src/models/TokenHolder.sol +++ b/src/models/TokenHolder.sol @@ -46,13 +46,13 @@ contract TokenHolder is EternalModel, ReentryProtection { /** * @dev serializes Instance struct - * @param record Instance + * @param _record Instance */ - function serialize(Instance memory record) external preventReentry { - require(msg.sender == record.token.uuid, 'ElasticDAO: Unauthorized'); + function serialize(Instance memory _record) external preventReentry { + require(msg.sender == _record.token.uuid, 'ElasticDAO: Unauthorized'); - setUint(keccak256(abi.encode(record.token.uuid, record.account, 'lambda')), record.lambda); - setBool(keccak256(abi.encode(record.token.uuid, record.account, 'exists')), true); + setUint(keccak256(abi.encode(_record.token.uuid, _record.account, 'lambda')), _record.lambda); + setBool(keccak256(abi.encode(_record.token.uuid, _record.account, 'exists')), true); } function _exists(address _account, Token.Instance memory _token) internal view returns (bool) { diff --git a/test/elasticDAOFactoryTest.js b/test/elasticDAOFactoryTest.js index 5f89b32..809c682 100644 --- a/test/elasticDAOFactoryTest.js +++ b/test/elasticDAOFactoryTest.js @@ -79,6 +79,7 @@ describe('ElasticDAO: Factory', () => { const tx = await sdk.elasticDAOFactory.contract.updateElasticDAOImplementationAddress( elasticDAO.address, ); + const logs = await tx.wait(1); expect(logs.events[0].event).to.equal('ElasticDAOImplementationAddressUpdated'); From 56a28ff85cfdae34de1e28e26d4f1bad022aef2b Mon Sep 17 00:00:00 2001 From: Arpan Dutta Date: Fri, 19 Feb 2021 23:33:18 +0200 Subject: [PATCH 071/118] refactors elasticGovernanceToken documentation --- src/tokens/ElasticGovernanceToken.sol | 123 +++++++++++++++++++++++--- 1 file changed, 109 insertions(+), 14 deletions(-) diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index 70ed00a..2030a77 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -16,7 +16,8 @@ import '../models/TokenHolder.sol'; import '../services/ReentryProtection.sol'; /** - * @dev Implementation of the IERC20 interface + * @dev ElasticGovernanceToken contract outlines and defines all the functionality + * of an ElasticGovernanceToken and also serves as it's storage */ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { address public burner; @@ -42,6 +43,19 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { _; } + /** + * @notice initializes the ElasticGovernanceToken + * + * @param _daoAddress - the address of the deployed ElasticDAO + * @param _ecosystemModelAddress - the address of the ecosystem model + * + * @dev Requirements: + * - The token should not already be initialized + * - The address of the deployed ElasticDAO cannot be zero + * - The address of the ecosystemModelAddress cannot be zero + * + * @return bool + */ function initialize(address _daoAddress, address _ecosystemModelAddress) external preventReentry @@ -61,12 +75,15 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { } /** - * @dev Returns the remaining number of tokens that @param _spender will be + * @notice Returns the remaining number of tokens that @param _spender will be * allowed to spend on behalf of @param _owner through {transferFrom}. This is * zero by default + * * @param _spender - the address of the spender * @param _owner - the address of the owner - * This value changes when {approve} or {transferFrom} are called + * + * @dev This value changes when {approve} or {transferFrom} are called + * * @return uint256 */ function allowance(address _owner, address _spender) external view override returns (uint256) { @@ -74,10 +91,11 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { } /** - * @dev Sets @param _amount as the allowance of @param _spender over the caller's tokens + * @notice Sets @param _amount as the allowance of @param _spender over the caller's tokens + * * @param _spender - the address of the spender - * Returns a boolean value indicating whether the operation succeeded * + * @dev * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race @@ -85,7 +103,8 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * - * Emits an {Approval} event + * @dev Emits an {Approval} event + * * @return bool */ function approve(address _spender, uint256 _amount) @@ -99,8 +118,20 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { } /** - * @dev Returns the amount of tokens owned by @param _account. + * @notice Returns the amount of tokens owned by @param _account using ElasticMath + * * @param _account - address of the account + * + * @dev the number of tokens is given by: + * t = lambda * m * k + * + * t - number of tokens + * m - lambda modifier - it's value increases every time someone joins the DAO + * k - constant token multiplier - it increases the number of tokens + * that each member of the DAO has with respect to their lambda + * + * Further math and documentaion of 't' can be found at ../libraries/ElasticMath.sol + * * @return uint256 */ function balanceOf(address _account) external view override returns (uint256) { @@ -112,8 +143,10 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { } /** - * @dev Returns the amount of shares owned by @param _account. + * @notice Returns the amount of shares ( lambda ) owned by _account. + * * @param _account - address of the account + * * @return lambda uint256 - lambda is the number of shares */ function balanceOfInShares(address _account) external view override returns (uint256) { @@ -121,6 +154,17 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { return tokenHolder.lambda; } + /** + * @notice Returns the amount of tokens @param _account can vote with, using ElasticMath + * + * @param _account - the address of the account + * + * @dev checks if @param _account has more or less lambda than maxVotingLambda, + * based on which number of tokens (t) @param _account can vote with is calculated. + * Further math and documentaion of 't' can be found at ../libraries/ElasticMath.sol + * + * @return balance uint256 numberOfTokens (t) + */ function balanceOfVoting(address _account) external view returns (uint256 balance) { Token.Instance memory token = _getToken(); TokenHolder.Instance memory tokenHolder = _getTokenHolder(_account); @@ -135,9 +179,12 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { } /** - * @dev Reduces the balance(tokens) of @param _account by @param _amount + * @notice Reduces the balance(tokens) of @param _account by _amount + * * @param _account address of the account + * * @param _amount - the amount by which the number of tokens is to be reduced + * * @return bool */ function burn(address _account, uint256 _amount) @@ -152,9 +199,12 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { } /** - * @dev Reduces the balance(shares) of @param _account by @param _amount + * @notice Reduces the balance(lambda) of @param _account by _amount + * * @param _account - address of the account + * * @param _amount - the amount by which the number of shares has to be reduced + * * @return bool */ function burnShares(address _account, uint256 _amount) @@ -169,7 +219,8 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { } /** - * @dev returns the number of decimals + * @notice returns the number of decimals + * * @return 18 */ function decimals() external pure returns (uint256) { @@ -177,9 +228,14 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { } /** - * @dev decreases the allowance of @param _spender by @param _subtractedValue + * @notice decreases the allowance of @param _spender by _subtractedValue + * * @param _spender - address of the spender * @param _subtractedValue - the value the allowance has to be decreased by + * + * @dev Requirement: + * Allowance cannot be lower than 0 + * * @return bool */ function decreaseAllowance(address _spender, uint256 _subtractedValue) @@ -196,9 +252,11 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { } /** - * @dev increases the allowance of @param _spender by @param _addedValue + * @notice increases the allowance of @param _spender by _addedValue + * * @param _spender - address of the spender * @param _addedValue - the value the allowance has to be increased by + * * @return bool */ function increaseAllowance(address _spender, uint256 _addedValue) @@ -252,10 +310,26 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { return _getToken().name; } + /** + * @notice Returns the number of token holders of ElasticGovernanceToken + * + * @return uint256 numberOfTokenHolders + */ function numberOfTokenHolders() external view override returns (uint256) { return _getToken().numberOfTokenHolders; } + /** + * @notice sets the burner of the ElasticGovernanceToken + * a Burner is an address that can burn tokens(reduce the amount of tokens in circulation) + * + * @param _burner - the address of the burner + * + * @dev Requirement: + * - Address of the burner cannot be zero address + * + * @return bool + */ function setBurner(address _burner) external onlyDAO preventReentry returns (bool) { require(_burner != address(0), 'ElasticDAO: Address Zero'); @@ -264,6 +338,17 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { return true; } + /** + * @notice sets the minter of the ElasticGovernanceToken + * a Minter is an address that can mint tokens(increase the amount of tokens in circulation) + * + * @param _minter - address of the minter + * + * @dev Requirement: + * - Address of the minter cannot be zero address + * + * @return bool + */ function setMinter(address _minter) external onlyDAO preventReentry returns (bool) { require(_minter != address(0), 'ElasticDAO: Address Zero'); @@ -275,6 +360,7 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { /** * @dev Returns the symbol of the token, usually a shorter version of the * name. + * * @return string - the symbol of the token */ function symbol() external view returns (string memory) { @@ -282,12 +368,16 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { } /** - * @dev returns the totalSupply of tokens in thee DAO + * @notice returns the totalSupply of tokens in the DAO + * + * @dev * t - the total number of tokens in the DAO * lambda - the total number of shares outstanding in the DAO currently * m - current value of the share modifier * k - constant * t = ( lambda * m * k ) + * Further math and documentaion of 't' can be found at ../libraries/ElasticMath.sol + * * @return uint256 - the value of t */ function totalSupply() external view override returns (uint256) { @@ -295,6 +385,11 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { return ElasticMath.t(token.lambda, token.k, token.m); } + /** + * @notice Returns the current lambda value + * + * @return uint256 lambda + */ function totalSupplyInShares() external view override returns (uint256) { Token.Instance memory token = _getToken(); return token.lambda; From 277452d2775c90614f9f15ea75938755b30964f7 Mon Sep 17 00:00:00 2001 From: Arpan Dutta Date: Mon, 22 Feb 2021 14:36:42 +0200 Subject: [PATCH 072/118] refactors docs, adds events to models --- src/core/ElasticDAOFactory.sol | 4 ++++ src/libraries/ElasticMath.sol | 15 +++++++++------ src/models/DAO.sol | 5 ++++- src/models/Ecosystem.sol | 4 ++++ src/models/Token.sol | 4 ++++ src/models/TokenHolder.sol | 4 ++++ 6 files changed, 29 insertions(+), 7 deletions(-) diff --git a/src/core/ElasticDAOFactory.sol b/src/core/ElasticDAOFactory.sol index 068c6fe..6a387d1 100644 --- a/src/core/ElasticDAOFactory.sol +++ b/src/core/ElasticDAOFactory.sol @@ -198,9 +198,13 @@ contract ElasticDAOFactory is ReentryProtection { * * @param _newManager - the address of the new manager * + * @dev Requirement + * - Address of the manager cannot be zero * @dev emits ManagerUpdated event */ function updateManager(address _newManager) external onlyManager preventReentry { + require(_newManager != address(0), 'ElasticDAO: Address Zero'); + manager = _newManager; emit ManagerUpdated(manager); } diff --git a/src/libraries/ElasticMath.sol b/src/libraries/ElasticMath.sol index b70d46c..b0f05ac 100644 --- a/src/libraries/ElasticMath.sol +++ b/src/libraries/ElasticMath.sol @@ -39,10 +39,12 @@ library ElasticMath { * @dev calculates the value of deltaE; the amount of ETH required to mint deltaLambda * @param deltaLambda = lambdaDash - lambda * @param capitalDeltaValue the ETH/token ratio; see capitalDelta(uint256, uint256) - * @param k a constant, initially set by the DAO - * @param elasticity the percentage by which capitalDelta should increase + * @param k constant token multiplier - it increases the number of tokens + * that each member of the DAO has with respect to their lambda + * @param elasticity the percentage by which capitalDelta (cost of entering the DAO) + * should increase on every join * @param lambda outstanding shares - * @param m share modifier + * @param m - lambda modifier - it's value increases every time someone joins the DAO * * lambdaDash = deltaLambda + lambda * mDash = ( lambdaDash / lambda ) * m @@ -72,10 +74,11 @@ library ElasticMath { /** * @dev calculates the lambda value given t, k, & m * @param tokens t value; number of tokens for which lambda should be calculated - * @param k a constant, initially set by the DAO - * @param m share modifier + * @param k constant token multiplier - it increases the number of tokens + * that each member of the DAO has with respect to their lambda + * @param m - lambda modifier - it's value increases every time someone joins the DAO * - * lambda = k * m / t + * lambda = t / ( m * k) * @return uint256 */ function lambdaFromT( diff --git a/src/models/DAO.sol b/src/models/DAO.sol index 287f55e..0d2d833 100644 --- a/src/models/DAO.sol +++ b/src/models/DAO.sol @@ -8,7 +8,6 @@ import '../libraries/SafeMath.sol'; import '../services/ReentryProtection.sol'; /** - * @title Aecentralised Autonomous Organisation * @author ElasticDAO - https://ElasticDAO.org * @notice This contract is used for storing core DAO data * @dev ElasticDAO network contracts can read/write from this contract @@ -23,6 +22,8 @@ contract DAO is EternalModel, ReentryProtection { Ecosystem.Instance ecosystem; } + event Serialized(address indexed uuid); + /** * @dev deserializes Instance struct * @param _uuid - address of the unique user ID @@ -91,6 +92,8 @@ contract DAO is EternalModel, ReentryProtection { } setBool(keccak256(abi.encode(_record.uuid, 'exists')), true); + + emit Serialized(_record.uuid); } function _exists(address _uuid) internal view returns (bool) { diff --git a/src/models/Ecosystem.sol b/src/models/Ecosystem.sol index 2ee21c2..38a237c 100644 --- a/src/models/Ecosystem.sol +++ b/src/models/Ecosystem.sol @@ -28,6 +28,8 @@ contract Ecosystem is EternalModel, ReentryProtection { address governanceTokenAddress; } + event Serialized(address indexed _daoAddress); + /** * @dev deserializes Instance struct * @param _daoAddress - address of the unique user ID @@ -102,6 +104,8 @@ contract Ecosystem is EternalModel, ReentryProtection { ); setBool(keccak256(abi.encode(_record.daoAddress, 'exists')), true); + + emit Serialized(_record.daoAddress); } function _exists(address _daoAddress) internal view returns (bool recordExists) { diff --git a/src/models/Token.sol b/src/models/Token.sol index 6b0682c..1e392fa 100644 --- a/src/models/Token.sol +++ b/src/models/Token.sol @@ -31,6 +31,8 @@ contract Token is EternalModel, ReentryProtection { Ecosystem.Instance ecosystem; } + event Serialized(address indexed uuid); + /** * @dev deserializes Instance struct * @param _uuid - address of the unique user ID @@ -85,6 +87,8 @@ contract Token is EternalModel, ReentryProtection { setUint(keccak256(abi.encode(_record.uuid, 'maxLambdaPurchase')), _record.maxLambdaPurchase); setBool(keccak256(abi.encode(_record.uuid, 'exists')), true); + + emit Serialized(_record.uuid); } function updateNumberOfTokenHolders(Instance memory _record, uint256 numberOfTokenHolders) diff --git a/src/models/TokenHolder.sol b/src/models/TokenHolder.sol index e7bb095..574ee99 100644 --- a/src/models/TokenHolder.sol +++ b/src/models/TokenHolder.sol @@ -24,6 +24,8 @@ contract TokenHolder is EternalModel, ReentryProtection { Token.Instance token; } + event Serialized(address indexed account, address indexed token); + function deserialize( address _account, Ecosystem.Instance memory _ecosystem, @@ -53,6 +55,8 @@ contract TokenHolder is EternalModel, ReentryProtection { setUint(keccak256(abi.encode(_record.token.uuid, _record.account, 'lambda')), _record.lambda); setBool(keccak256(abi.encode(_record.token.uuid, _record.account, 'exists')), true); + + emit Serialized(_record.account, _token.uuid); } function _exists(address _account, Token.Instance memory _token) internal view returns (bool) { From a3b5a480219ea2fd83b4e35147b2afcf1acc9a12 Mon Sep 17 00:00:00 2001 From: Arpan Dutta Date: Mon, 22 Feb 2021 14:54:21 +0200 Subject: [PATCH 073/118] refactors event on TokenHolder --- src/models/TokenHolder.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/models/TokenHolder.sol b/src/models/TokenHolder.sol index 574ee99..445d3a4 100644 --- a/src/models/TokenHolder.sol +++ b/src/models/TokenHolder.sol @@ -56,7 +56,7 @@ contract TokenHolder is EternalModel, ReentryProtection { setUint(keccak256(abi.encode(_record.token.uuid, _record.account, 'lambda')), _record.lambda); setBool(keccak256(abi.encode(_record.token.uuid, _record.account, 'exists')), true); - emit Serialized(_record.account, _token.uuid); + emit Serialized(_record.account, _record.token.uuid); } function _exists(address _account, Token.Instance memory _token) internal view returns (bool) { From c657b84469ba33efd8914c7e847830d82cb0f3ca Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Mon, 22 Feb 2021 19:23:31 +0200 Subject: [PATCH 074/118] swaps out hardhat proxy for PProxy, reuses implementations --- deploy/configurator.js | 1 - deploy/dao.js | 1 - deploy/ecosystem.js | 1 - deploy/elasticDAOFactory.js | 5 +- deploy/elasticGovernanceToken.js | 16 + deploy/initialDeployment.js | 5 +- deploy/token.js | 1 - deploy/tokenHolder.js | 1 - package.json | 3 +- src/core/ElasticDAO.sol | 100 ++-- src/core/ElasticDAOFactory.sol | 24 +- src/models/DAO.sol | 3 + src/services/Configurator.sol | 74 ++- src/tokens/ElasticGovernanceToken.sol | 29 +- test/ecosystemTests.js | 18 +- test/elasticDAOTests.js | 47 +- test/env.js | 19 +- yarn.lock | 705 +++++++++++++++++++++++++- 18 files changed, 852 insertions(+), 201 deletions(-) create mode 100644 deploy/elasticGovernanceToken.js diff --git a/deploy/configurator.js b/deploy/configurator.js index 13206ec..bc16c1e 100644 --- a/deploy/configurator.js +++ b/deploy/configurator.js @@ -5,7 +5,6 @@ module.exports = async ({ getNamedAccounts, deployments }) => { const configurator = await deploy('Configurator', { from: agent, args: [], - proxy: true, }); if (configurator.newlyDeployed) { diff --git a/deploy/dao.js b/deploy/dao.js index a5b848e..8a208b0 100644 --- a/deploy/dao.js +++ b/deploy/dao.js @@ -5,7 +5,6 @@ module.exports = async ({ getNamedAccounts, deployments }) => { const daoModel = await deploy('DAO', { from: agent, args: [], - proxy: true, }); if (daoModel.newlyDeployed) { diff --git a/deploy/ecosystem.js b/deploy/ecosystem.js index 70a3a77..d94c691 100644 --- a/deploy/ecosystem.js +++ b/deploy/ecosystem.js @@ -5,7 +5,6 @@ module.exports = async ({ getNamedAccounts, deployments }) => { const ecosystemModel = await deploy('Ecosystem', { from: agent, args: [], - proxy: true, }); if (ecosystemModel.newlyDeployed) { diff --git a/deploy/elasticDAOFactory.js b/deploy/elasticDAOFactory.js index 83863bd..f47ef2e 100644 --- a/deploy/elasticDAOFactory.js +++ b/deploy/elasticDAOFactory.js @@ -11,9 +11,6 @@ module.exports = async ({ getNamedAccounts, deployments }) => { const elasticDAOFactory = await deploy('ElasticDAOFactory', { from: agent, args: [], - proxy: { - proxyContract: 'EIP173ProxyWithReceive', - }, }); const factory = new ethers.Contract( @@ -28,4 +25,4 @@ module.exports = async ({ getNamedAccounts, deployments }) => { } }; module.exports.tags = ['ElasticDAOFactory']; -module.exports.dependencies = ['Ecosystem']; +module.exports.dependencies = ['Ecosystem', 'ElasticDAO', 'ElasticGovernanceToken']; diff --git a/deploy/elasticGovernanceToken.js b/deploy/elasticGovernanceToken.js new file mode 100644 index 0000000..537fac9 --- /dev/null +++ b/deploy/elasticGovernanceToken.js @@ -0,0 +1,16 @@ +module.exports = async ({ getNamedAccounts, deployments }) => { + const { deploy, log } = deployments; + const { agent } = await getNamedAccounts(); + + const elasticGovernanceToken = await deploy('ElasticGovernanceToken', { + from: agent, + args: [], + }); + + if (elasticGovernanceToken.newlyDeployed) { + log( + `##### ElasticDAO: ElasticGovernanceToken has been deployed: ${elasticGovernanceToken.address}`, + ); + } +}; +module.exports.tags = ['ElasticGovernanceToken']; diff --git a/deploy/initialDeployment.js b/deploy/initialDeployment.js index 0c75a61..df3c87a 100644 --- a/deploy/initialDeployment.js +++ b/deploy/initialDeployment.js @@ -13,6 +13,7 @@ module.exports = async ({ getNamedAccounts, deployments }) => { Ecosystem.abi, hre.provider.getSigner(agent), ); + const ElasticGovernanceToken = await deployments.get('ElasticGovernanceToken'); const Token = await deployments.get('Token'); const TokenHolder = await deployments.get('TokenHolder'); @@ -26,7 +27,7 @@ module.exports = async ({ getNamedAccounts, deployments }) => { // Services Configurator.address, // Tokens - ethers.constants.AddressZero, + ElasticGovernanceToken.address, ]; await ecosystemStorage.functions.serialize(ecosystemStructArray); @@ -39,7 +40,7 @@ module.exports.dependencies = [ 'DAO', 'Ecosystem', 'ElasticDAOFactory', - 'ReentryProtection', + 'ElasticGovernanceToken', 'Token', 'TokenHolder', ]; diff --git a/deploy/token.js b/deploy/token.js index 45483fd..0f9d372 100644 --- a/deploy/token.js +++ b/deploy/token.js @@ -5,7 +5,6 @@ module.exports = async ({ getNamedAccounts, deployments }) => { const tokenModel = await deploy('Token', { from: agent, args: [], - proxy: true, }); if (tokenModel.newlyDeployed) { diff --git a/deploy/tokenHolder.js b/deploy/tokenHolder.js index 7547eba..b577aee 100644 --- a/deploy/tokenHolder.js +++ b/deploy/tokenHolder.js @@ -5,7 +5,6 @@ module.exports = async ({ getNamedAccounts, deployments }) => { const tokenHolder = await deploy('TokenHolder', { from: agent, args: [], - proxy: true, }); if (tokenHolder.newlyDeployed) { diff --git a/package.json b/package.json index db8c20d..978b416 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "description": "Elastic DAO Contracts", "main": "index.js", "repository": "git@github.com:elasticdao/contracts.git", - "author": "alleycatdev ", + "author": "ElasticDAO Core ", "license": "GPLv3", "type": "module", "scripts": { @@ -30,6 +30,7 @@ "@nomiclabs/hardhat-etherscan": "2.1.1", "@nomiclabs/hardhat-waffle": "2.0.1", "@openzeppelin/contracts": "3.4.0", + "@pie-dao/proxy": "^1.0.0", "bignumber.js": "9.0.1", "dotenv": "8.2.0", "ethereum-waffle": "3.2.1", diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index 57bd1b6..c5fab7a 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -12,6 +12,8 @@ import '../models/Token.sol'; import '../services/Configurator.sol'; import '../services/ReentryProtection.sol'; +import '@pie-dao/proxy/contracts/PProxy.sol'; + /** * @dev The ElasticDAO contract outlines and defines all the functionality * such as initialize, Join, exit, etc for an elasticDAO. @@ -23,7 +25,6 @@ contract ElasticDAO is ReentryProtection { address public ecosystemModelAddress; address public controller; address[] public summoners; - uint256 public maxVotingLambda; bool public initialized; event ElasticGovernanceTokenDeployed(address indexed tokenAddress); @@ -88,10 +89,10 @@ contract ElasticDAO is ReentryProtection { * all the required parameters into the configurator * * @param _ecosystemModelAddress - the address of the ecosystem model - * @param _controller - the address of the controller + * @param _controller the address which can control the core DAO functions * @param _summoners - an array containing the addresses of the summoners * @param _name - the name of the DAO - * @param _maxVotingLambda -the maximum amount of lambda that can be used to vote in the DAO + * @param _maxVotingLambda - the maximum amount of lambda that can be used to vote in the DAO * * @dev * Requirements: @@ -108,55 +109,26 @@ contract ElasticDAO is ReentryProtection { uint256 _maxVotingLambda ) external preventReentry { require(initialized == false, 'ElasticDAO: Already initialized'); - require( _ecosystemModelAddress != address(0) || _controller != address(0), 'ElasticDAO: Address Zero' ); require(_summoners.length > 0, 'ElasticDAO: At least 1 summoner required'); - ecosystemModelAddress = _ecosystemModelAddress; + + Ecosystem.Instance memory defaults = Ecosystem(_ecosystemModelAddress).deserialize(address(0)); + Configurator configurator = Configurator(defaults.configuratorAddress); + Ecosystem.Instance memory ecosystem = configurator.buildEcosystem(controller, defaults); + ecosystemModelAddress = ecosystem.ecosystemModelAddress; + controller = _controller; deployer = msg.sender; - Ecosystem.Instance memory defaults = Ecosystem(_ecosystemModelAddress).deserialize(address(0)); - maxVotingLambda = _maxVotingLambda; summoners = _summoners; - Configurator configurator = Configurator(defaults.configuratorAddress); - Ecosystem.Instance memory ecosystem = configurator.buildEcosystem(defaults); - bool success = configurator.buildDAO(_summoners, _name, ecosystem); + bool success = configurator.buildDAO(_summoners, _name, _maxVotingLambda, ecosystem); initialized = true; require(success, 'ElasticDAO: Build DAO Failed'); } - /** - * @notice this function is to be used for exiting the DAO - * for the underlying ETH value of _deltaLambda - * - * The eth value of _deltaLambda is calculated using: - * - * eth to be transfered = ( deltaLambda/lambda ) * totalEthInTheDAO - * - * @param _deltaLambda - the amount of lambda the address exits with - * - * Requirement: - * - Should be able to successfully exit the DAO - * @dev emits ExitDAO event - */ - function exit(uint256 _deltaLambda) external onlyAfterSummoning preventReentry { - // burn the shares - Token.Instance memory token = _getToken(); - ElasticGovernanceToken tokenContract = ElasticGovernanceToken(token.uuid); - - // eth to be transfered = ( deltaLambda/lambda ) * totalEthInTheDAO - uint256 ratioOfShares = ElasticMath.wdiv(_deltaLambda, token.lambda); - uint256 ethToBeTransfered = ElasticMath.wmul(ratioOfShares, address(this).balance); - // transfer the eth - tokenContract.burnShares(msg.sender, _deltaLambda); - (bool success, ) = msg.sender.call{ value: ethToBeTransfered }(''); - require(success, 'ElasticDAO: Exit Failed'); - emit ExitDAO(address(this), msg.sender, _deltaLambda, ethToBeTransfered); - } - /** * @notice initializes the token of the DAO, using the Configurator * @@ -167,8 +139,6 @@ contract ElasticDAO is ReentryProtection { * @param _k - is the constant token multiplier * it increases the number of tokens that each member of the DAO has with respect to their lambda * @param _maxLambdaPurchase - is the maximum amount of lambda that can be purchased per wallet - * @param _salt-an arbitary value provided by the function caller - * (to follow the Create2 pattern of generating opcodes) * * @dev refer https://docs.openzeppelin.com/cli/2.8/deploying-with-create2#create2 * for further understanding of Create2 and salt @@ -185,31 +155,53 @@ contract ElasticDAO is ReentryProtection { uint256 _eByL, uint256 _elasticity, uint256 _k, - uint256 _maxLambdaPurchase, - bytes32 _salt + uint256 _maxLambdaPurchase ) external onlyBeforeSummoning onlyDeployer preventReentry { require(msg.sender == deployer, 'ElasticDAO: Only deployer can initialize the Token'); Ecosystem.Instance memory ecosystem = _getEcosystem(); Token.Instance memory token = Configurator(ecosystem.configuratorAddress).buildToken( + controller, _name, _symbol, _eByL, _elasticity, _k, _maxLambdaPurchase, - _salt, ecosystem ); + emit ElasticGovernanceTokenDeployed(token.uuid); + } + + /** + * @notice this function is to be used for exiting the DAO + * for the underlying ETH value of _deltaLambda + * + * The eth value of _deltaLambda is calculated using: + * + * eth to be transfered = ( deltaLambda/lambda ) * totalEthInTheDAO + * + * @param _deltaLambda - the amount of lambda the address exits with + * + * Requirement: + * - Should be able to successfully exit the DAO + * @dev emits ExitDAO event + */ + function exit(uint256 _deltaLambda) external onlyAfterSummoning preventReentry { + // burn the shares + Token.Instance memory token = _getToken(); ElasticGovernanceToken tokenContract = ElasticGovernanceToken(token.uuid); - bool success = tokenContract.setBurner(controller); - require(success, 'ElasticDAO: Set Burner failed during initialize token'); - success = tokenContract.setMinter(controller); - require(success, 'ElasticDAO: Set Minter failed during initialize token'); - emit ElasticGovernanceTokenDeployed(token.uuid); + // eth to be transfered = ( deltaLambda/lambda ) * totalEthInTheDAO + uint256 ratioOfShares = ElasticMath.wdiv(_deltaLambda, token.lambda); + uint256 ethToBeTransfered = ElasticMath.wmul(ratioOfShares, address(this).balance); + // transfer the eth + tokenContract.burnShares(msg.sender, _deltaLambda); + (bool success, ) = msg.sender.call{ value: ethToBeTransfered }(''); + require(success, 'ElasticDAO: Exit Failed'); + emit ExitDAO(address(this), msg.sender, _deltaLambda, ethToBeTransfered); } /** @@ -345,7 +337,7 @@ contract ElasticDAO is ReentryProtection { * * @dev emits ControllerChanged event * @dev Requirements: - * - Each address must have a corresponding amount to be penalized with + * - The controller must not be the 0 address * - The controller of the DAO should successfully be set as the burner of the tokens of the DAO * - The controller of the DAO should successfully be set as the minter of the tokens of the DAO */ @@ -353,6 +345,8 @@ contract ElasticDAO is ReentryProtection { require(_controller != address(0), 'ElasticDAO: Address Zero'); controller = _controller; + + // Update minter / burner ElasticGovernanceToken tokenContract = ElasticGovernanceToken(_getToken().uuid); bool success = tokenContract.setBurner(controller); require(success, 'ElasticDAO: Set Burner failed during setController'); @@ -368,7 +362,11 @@ contract ElasticDAO is ReentryProtection { * @dev emits MaxVotingLambda event */ function setMaxVotingLambda(uint256 _maxVotingLambda) external onlyController preventReentry { - maxVotingLambda = _maxVotingLambda; + Ecosystem.Instance memory ecosystem = _getEcosystem(); + DAO daoStorage = DAO(ecosystem.daoModelAddress); + DAO.Instance memory dao = daoStorage.deserialize(address(this), ecosystem); + dao.maxVotingLambda = _maxVotingLambda; + daoStorage.serialize(dao); emit MaxVotingLambdaChanged(address(this), 'setMaxVotingLambda', _maxVotingLambda); } diff --git a/src/core/ElasticDAOFactory.sol b/src/core/ElasticDAOFactory.sol index 6a387d1..20c0975 100644 --- a/src/core/ElasticDAOFactory.sol +++ b/src/core/ElasticDAOFactory.sol @@ -6,8 +6,8 @@ import './ElasticDAO.sol'; import '../models/Ecosystem.sol'; import '../services/ReentryProtection.sol'; -import '@openzeppelin/contracts/utils/Create2.sol'; -import 'hardhat-deploy/solc_0.7/proxy/EIP173ProxyWithReceive.sol'; + +import '@pie-dao/proxy/contracts/PProxy.sol'; /** * @dev The factory contract for ElasticDAO @@ -108,20 +108,15 @@ contract ElasticDAOFactory is ReentryProtection { uint256 _maxVotingLambda ) external payable preventReentry { require(fee == msg.value, 'ElasticDAO: A fee is required to deploy a DAO'); - bytes32 salt = keccak256(abi.encode(msg.sender, deployedDAOCount)); - // deploy proxy with the elasticDAO implementation address - EIP173ProxyWithReceive proxy = - new EIP173ProxyWithReceive( - elasticDAOImplementationAddress, - type(ElasticDAO).creationCode, - msg.sender - ); + // Deploy the DAO behind PProxy + PProxy proxy = new PProxy(); + proxy.setImplementation(elasticDAOImplementationAddress); + proxy.setProxyOwner(msg.sender); address payable daoAddress = address(proxy); - // deploy DAO with computed address and initialize - Create2.deploy(0, salt, type(ElasticDAO).creationCode); + // initialize the DAO ElasticDAO(daoAddress).initialize( ecosystemModelAddress, msg.sender, @@ -140,15 +135,14 @@ contract ElasticDAOFactory is ReentryProtection { _eByL, _elasticity, _k, - _maxLambdaPurchase, - salt + _maxLambdaPurchase ); emit DeployedDAO(daoAddress); } /** * @notice updates the address of the elasticDAO implementation - * @param _elasticDAOImplementationAddress - the new address of the fee reciever + * @param _elasticDAOImplementationAddress - the new address * @dev emits ElasticDAOImplementationAddressUpdated event * @dev Requirement: * - The elasticDAO implementation address cannot be zero address diff --git a/src/models/DAO.sol b/src/models/DAO.sol index 0d2d833..67a4dda 100644 --- a/src/models/DAO.sol +++ b/src/models/DAO.sol @@ -18,6 +18,7 @@ contract DAO is EternalModel, ReentryProtection { address[] summoners; bool summoned; string name; + uint256 maxVotingLambda; uint256 numberOfSummoners; Ecosystem.Instance ecosystem; } @@ -38,6 +39,7 @@ contract DAO is EternalModel, ReentryProtection { record.ecosystem = _ecosystem; if (_exists(_uuid)) { + record.maxVotingLambda = getUint(keccak256(abi.encode(_uuid, 'maxVotingLambda'))); record.name = getString(keccak256(abi.encode(_uuid, 'name'))); record.numberOfSummoners = getUint(keccak256(abi.encode(_uuid, 'numberOfSummoners'))); record.summoned = getBool(keccak256(abi.encode(_uuid, 'summoned'))); @@ -79,6 +81,7 @@ contract DAO is EternalModel, ReentryProtection { 'ElasticDAO: Unauthorized' ); + setUint(keccak256(abi.encode(_record.uuid, 'maxVotingLambda')), _record.maxVotingLambda); setString(keccak256(abi.encode(_record.uuid, 'name')), _record.name); setBool(keccak256(abi.encode(_record.uuid, 'summoned')), _record.summoned); diff --git a/src/services/Configurator.sol b/src/services/Configurator.sol index aa36c85..de3e44c 100644 --- a/src/services/Configurator.sol +++ b/src/services/Configurator.sol @@ -7,8 +7,8 @@ import '../models/Ecosystem.sol'; import '../models/Token.sol'; import '../tokens/ElasticGovernanceToken.sol'; -import 'hardhat-deploy/solc_0.7/proxy/EIP173Proxy.sol'; -import '@openzeppelin/contracts/utils/Create2.sol'; + +import '@pie-dao/proxy/contracts/PProxy.sol'; /** * @notice This contract is used for configuring ElasticDAOs @@ -20,11 +20,13 @@ contract Configurator { * @param _summoners addresses of the summoners * @param _name name of the DAO * @param _ecosystem instance of Ecosystem the DAO uses + * @param _maxVotingLambda - the maximum amount of lambda that can be used to vote in the DAO * @return bool true */ function buildDAO( address[] memory _summoners, string memory _name, + uint256 _maxVotingLambda, Ecosystem.Instance memory _ecosystem ) external returns (bool) { DAO daoStorage = DAO(_ecosystem.daoModelAddress); @@ -32,6 +34,7 @@ contract Configurator { dao.uuid = msg.sender; dao.ecosystem = _ecosystem; + dao.maxVotingLambda = _maxVotingLambda; dao.name = _name; dao.summoned = false; dao.summoners = _summoners; @@ -43,32 +46,32 @@ contract Configurator { /** * @dev duplicates the ecosystem contract address defaults so that each * deployed DAO has it's own ecosystem configuration - * @param defaults instance of Ecosystem + * @param _controller the address which can control the core DAO functions + * @param _defaults instance of Ecosystem with the implementation addresses * @return ecosystem Ecosystem.Instance */ - function buildEcosystem(Ecosystem.Instance memory defaults) + function buildEcosystem(address _controller, Ecosystem.Instance memory _defaults) external returns (Ecosystem.Instance memory ecosystem) { - Ecosystem ecosystemStorage = Ecosystem(defaults.ecosystemModelAddress); - + ecosystem.configuratorAddress = _defaults.configuratorAddress; ecosystem.daoAddress = msg.sender; + ecosystem.daoModelAddress = _deployProxy(_defaults.daoModelAddress, _controller); + ecosystem.ecosystemModelAddress = _deployProxy(_defaults.ecosystemModelAddress, _controller); + ecosystem.governanceTokenAddress = _deployProxy(_defaults.governanceTokenAddress, _controller); + ecosystem.tokenHolderModelAddress = _deployProxy( + _defaults.tokenHolderModelAddress, + _controller + ); + ecosystem.tokenModelAddress = _deployProxy(_defaults.tokenModelAddress, _controller); - // Models - ecosystem.daoModelAddress = defaults.daoModelAddress; - ecosystem.ecosystemModelAddress = defaults.ecosystemModelAddress; - ecosystem.tokenHolderModelAddress = defaults.tokenHolderModelAddress; - ecosystem.tokenModelAddress = defaults.tokenModelAddress; - - // Services - ecosystem.configuratorAddress = defaults.configuratorAddress; - - ecosystemStorage.serialize(ecosystem); + Ecosystem(ecosystem.ecosystemModelAddress).serialize(ecosystem); return ecosystem; } /** - * @dev creates a governance token proxy, implementation, and Token instance (storage) + * @dev creates a governance token proxy and Token instance (storage) + * @param _controller the address which can control the core DAO functions * @param _name name of the token * @param _symbol symbol of the token * @param _eByL initial ETH/token ratio @@ -76,18 +79,17 @@ contract Configurator { * @param _k a constant, initially set by the DAO * @param _maxLambdaPurchase maximum amount of lambda (shares) that can be * minted on each call to the join function in ElasticDAO.sol - * @param _salt unique identifier for use with create2 * @param _ecosystem the DAO's ecosystem instance * @return token Token.Instance */ function buildToken( + address _controller, string memory _name, string memory _symbol, uint256 _eByL, uint256 _elasticity, uint256 _k, uint256 _maxLambdaPurchase, - bytes32 _salt, Ecosystem.Instance memory _ecosystem ) external returns (Token.Instance memory token) { Token tokenStorage = Token(_ecosystem.tokenModelAddress); @@ -100,31 +102,27 @@ contract Configurator { token.maxLambdaPurchase = _maxLambdaPurchase; token.name = _name; token.symbol = _symbol; + token.uuid = _ecosystem.governanceTokenAddress; - // deploy new token with create2 and set the computed address as uuid - address tokenAddress = - Create2.computeAddress(_salt, keccak256(type(ElasticGovernanceToken).creationCode)); - // set token uuid to computed address - token.uuid = tokenAddress; - // create upgradeable ERC20 proxy - EIP173Proxy proxy = - new EIP173Proxy( - tokenAddress, - type(ElasticGovernanceToken).creationCode, - _ecosystem.daoAddress - ); - // deploy the new elastic governance token - Create2.deploy(0, _salt, type(ElasticGovernanceToken).creationCode); // initialize the token within the ecosystem - ElasticGovernanceToken(tokenAddress).initialize( - proxy.owner(), - _ecosystem.ecosystemModelAddress + ElasticGovernanceToken(token.uuid).initialize( + _controller, + _ecosystem.daoAddress, + _ecosystem.ecosystemModelAddress, + _controller ); - _ecosystem.governanceTokenAddress = token.uuid; - // serialize ecosystem + + // serialize ecosystem and token Ecosystem(_ecosystem.ecosystemModelAddress).serialize(_ecosystem); tokenStorage.serialize(token); return token; } + + function _deployProxy(address _implementationAddress, address _owner) internal returns (address) { + PProxy proxy = new PProxy(); + proxy.setImplementation(_implementationAddress); + proxy.setProxyOwner(_owner); + return address(proxy); + } } diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index 2030a77..e2b9b81 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -46,30 +46,37 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { /** * @notice initializes the ElasticGovernanceToken * + * @param _burner - the address which can burn tokens * @param _daoAddress - the address of the deployed ElasticDAO * @param _ecosystemModelAddress - the address of the ecosystem model + * @param _minter - the address which can mint tokens * * @dev Requirements: * - The token should not already be initialized + * - The address of the burner cannot be zero * - The address of the deployed ElasticDAO cannot be zero * - The address of the ecosystemModelAddress cannot be zero + * - The address of the minter cannot be zero * * @return bool */ - function initialize(address _daoAddress, address _ecosystemModelAddress) - external - preventReentry - returns (bool) - { + function initialize( + address _burner, + address _daoAddress, + address _ecosystemModelAddress, + address _minter + ) external preventReentry returns (bool) { require(initialized == false, 'ElasticDAO: Already initialized'); + require(_burner != address(0), 'ElasticDAO: Address Zero'); require(_daoAddress != address(0), 'ElasticDAO: Address Zero'); require(_ecosystemModelAddress != address(0), 'ElasticDAO: Address Zero'); + require(_minter != address(0), 'ElasticDAO: Address Zero'); initialized = true; - burner = _daoAddress; + burner = _burner; daoAddress = _daoAddress; ecosystemModelAddress = _ecosystemModelAddress; - minter = _daoAddress; + minter = _minter; return true; } @@ -168,8 +175,7 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { function balanceOfVoting(address _account) external view returns (uint256 balance) { Token.Instance memory token = _getToken(); TokenHolder.Instance memory tokenHolder = _getTokenHolder(_account); - ElasticDAO elasticDAO = ElasticDAO(payable(daoAddress)); - uint256 maxVotingLambda = elasticDAO.maxVotingLambda(); + uint256 maxVotingLambda = _getDAO().maxVotingLambda; if (tokenHolder.lambda > maxVotingLambda) { return ElasticMath.t(maxVotingLambda, token.k, token.m); @@ -560,6 +566,11 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { // Private Getters + function _getDAO() internal view returns (DAO.Instance memory) { + Ecosystem.Instance memory ecosystem = _getEcosystem(); + return DAO(ecosystem.daoModelAddress).deserialize(daoAddress, ecosystem); + } + function _getEcosystem() internal view returns (Ecosystem.Instance memory) { return Ecosystem(ecosystemModelAddress).deserialize(daoAddress); } diff --git a/test/ecosystemTests.js b/test/ecosystemTests.js index 1614ff3..8a5d3bc 100644 --- a/test/ecosystemTests.js +++ b/test/ecosystemTests.js @@ -5,33 +5,31 @@ const { deployments } = require('hardhat'); describe('ElasticDAO: Ecosystem Model', () => { let agent; - let Configurator; - let Dao; let Ecosystem; let ecosystemStorage; - let TokenHolder; - let Token; beforeEach(async () => { [agent] = await hre.getSigners(); // setup needed contracts - Configurator = await deployments.get('Configurator'); - Dao = await deployments.get('DAO'); Ecosystem = await deployments.get('Ecosystem'); ecosystemStorage = new ethers.Contract(Ecosystem.address, Ecosystem.abi, agent); - TokenHolder = await deployments.get('TokenHolder'); - Token = await deployments.get('Token'); }); it('Should look up and return ecosystem instance record by uuid address', async () => { + const Configurator = await deployments.get('Configurator'); + const DAO = await deployments.get('DAO'); + const ElasticGovernanceToken = await deployments.get('ElasticGovernanceToken'); + const TokenHolder = await deployments.get('TokenHolder'); + const Token = await deployments.get('Token'); + const record = await ecosystemStorage.deserialize(ethers.constants.AddressZero); expect(record.configuratorAddress).to.equal(Configurator.address); expect(record.daoAddress).to.equal(ethers.constants.AddressZero); - expect(record.daoModelAddress).to.equal(Dao.address); + expect(record.daoModelAddress).to.equal(DAO.address); expect(record.ecosystemModelAddress).to.equal(Ecosystem.address); - expect(record.governanceTokenAddress).to.equal(ethers.constants.AddressZero); + expect(record.governanceTokenAddress).to.equal(ElasticGovernanceToken.address); expect(record.tokenHolderModelAddress).to.equal(TokenHolder.address); expect(record.tokenModelAddress).to.equal(Token.address); }); diff --git a/test/elasticDAOTests.js b/test/elasticDAOTests.js index c694d5e..17b5942 100644 --- a/test/elasticDAOTests.js +++ b/test/elasticDAOTests.js @@ -6,15 +6,18 @@ const { ethBalance, SDK, signers, summoners, summonedDAO } = require('./helpers' describe('ElasticDAO: Core', () => { let dao; - let salt; - let mockDeployedDAOCount = 0; describe('before summoning', () => { + let sdk; + beforeEach(async () => { - const sdk = await SDK(); + sdk = await SDK(); const { summoner1 } = await signers(); + + const Ecosystem = await deployments.get('Ecosystem'); + const args = [ - sdk.env.elasticDAO.ecosystemModelAddress, + Ecosystem.address, summoner1.address, await summoners(), 'ElasticDAO', @@ -23,16 +26,15 @@ describe('ElasticDAO: Core', () => { const ElasticDAO = await hre.getContractFactory('ElasticDAO'); const elasticDAO = await ElasticDAO.deploy(); - mockDeployedDAOCount += 1; - salt = ethers.utils.solidityKeccak256( - ['address', 'uint'], - [summoner1.address, mockDeployedDAOCount], - ); await elasticDAO.initialize(...args); dao = await sdk.models.DAO.deserialize(elasticDAO.address); }); + it('Should see that the model exists', async () => { + expect(await sdk.models.DAO.exists(dao.uuid)).to.equal(true); + }); + it('Should allow a token to be initialized', async () => { await dao.elasticDAO.contract.initializeToken( 'Elastic Governance Token', @@ -41,7 +43,6 @@ describe('ElasticDAO: Core', () => { dao.toEthersBigNumber(0.02, 18), dao.toEthersBigNumber(100, 18), ethers.constants.WeiPerEther, - salt, ); await dao.ecosystem.refresh(); @@ -61,7 +62,6 @@ describe('ElasticDAO: Core', () => { dao.toEthersBigNumber(0.02, 18), dao.toEthersBigNumber(100, 18), ethers.constants.WeiPerEther, - salt, ), ).to.be.revertedWith('ElasticDAO: Only deployer'); }); @@ -74,7 +74,6 @@ describe('ElasticDAO: Core', () => { dao.toEthersBigNumber(0.02, 18), dao.toEthersBigNumber(100, 18), ethers.constants.WeiPerEther, - salt, ); const { summoner1 } = await signers(); @@ -94,7 +93,6 @@ describe('ElasticDAO: Core', () => { dao.toEthersBigNumber(0.02, 18), dao.toEthersBigNumber(100, 18), ethers.constants.WeiPerEther, // lambda - salt, ); const { summoner1 } = await signers(); @@ -133,7 +131,6 @@ describe('ElasticDAO: Core', () => { dao.toEthersBigNumber(0.02, 18), dao.toEthersBigNumber(100, 18), ethers.constants.WeiPerEther, // lambda - salt, ); await expect( @@ -149,7 +146,6 @@ describe('ElasticDAO: Core', () => { dao.toEthersBigNumber(0.02, 18), dao.toEthersBigNumber(100, 18), ethers.constants.WeiPerEther, - salt, ); const { agent, summoner1 } = await signers(); @@ -170,7 +166,6 @@ describe('ElasticDAO: Core', () => { dao.toEthersBigNumber(0.02, 18), dao.toEthersBigNumber(100, 18), ethers.constants.WeiPerEther, - salt, ); const { summoner1, summoner2, summoner3 } = await signers(); @@ -201,21 +196,6 @@ describe('ElasticDAO: Core', () => { expect(getEcosystem.daoAddress.toLowerCase()).to.equal(dao.id); }); - - it('Should check to see if a instance record exists by daoAddress', async () => { - const { agent } = await signers(); - const DAOModel = await deployments.get('DAO'); - const DAOModelStorage = new ethers.Contract(DAOModel.address, DAOModel.abi, agent); - const ecosystem = await dao.elasticDAO.contract.getEcosystem(); - const recordDoesntExist = await DAOModelStorage.exists( - ethers.constants.AddressZero, - ecosystem, - ); - const recordExists = await DAOModelStorage.exists(dao.uuid, ecosystem); - - expect(recordDoesntExist).to.equal(false); - expect(recordExists).to.equal(true); - }); }); describe('after summoning', () => { @@ -232,7 +212,6 @@ describe('ElasticDAO: Core', () => { dao.toEthersBigNumber(0.02, 18), dao.toEthersBigNumber(100, 18), ethers.constants.WeiPerEther, - salt, ), ).to.be.revertedWith('ElasticDAO: DAO must not be summoned'); }); @@ -262,8 +241,8 @@ describe('ElasticDAO: Core', () => { await dao.elasticDAO.contract.setMaxVotingLambda(dao.toEthersBigNumber(5, 18)); - const maxVotingLambda = await dao.elasticDAO.getMaxVotingLambda(); - expect(maxVotingLambda).to.equal(dao.toEthersBigNumber(5, 18)); + await dao.refresh(); + expect(dao.maxVotingLambda.toNumber()).to.equal(5); }); it('Should not allow the caller to setMaxVotingLambda if not controller', async () => { diff --git a/test/env.js b/test/env.js index 88e12e1..2c25cce 100644 --- a/test/env.js +++ b/test/env.js @@ -1,24 +1,9 @@ const { deployments } = require('hardhat'); module.exports = async () => { - const [DAO, Ecosystem, Factory, Token, TokenHolder] = await Promise.all([ - deployments.get('DAO'), - deployments.get('Ecosystem'), - deployments.get('ElasticDAOFactory'), - deployments.get('Token'), - deployments.get('TokenHolder'), - ]); + const Factory = await deployments.get('ElasticDAOFactory'); const env = { - elasticDAO: { - daoModelAddress: DAO.address, - ecosystemModelAddress: Ecosystem.address, - factoryAddress: Factory.address, - tokenModelAddress: Token.address, - tokenHolderModelAddress: TokenHolder.address, - }, - fees: { - deploy: 0.25, - }, + factoryAddress: Factory.address, }; return env; diff --git a/yarn.lock b/yarn.lock index 3f8ef34..94e846e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -487,6 +487,53 @@ "@nodelib/fs.scandir" "2.1.4" fastq "^1.6.0" +"@nomiclabs/buidler@1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@nomiclabs/buidler/-/buidler-1.3.0.tgz#2d4b00945bfceba2f7d0202b57e219641b1783ca" + integrity sha512-9Oalatnwb4xiJxdPQufvAXM58V9+MbbKudQz8ckUkLP0e17fF35XvV6+kxeigJKWkabOdBMN5s4YkjGJSzOfVA== + dependencies: + "@nomiclabs/ethereumjs-vm" "^4.1.1" + "@solidity-parser/parser" "^0.5.2" + "@types/bn.js" "^4.11.5" + "@types/lru-cache" "^5.1.0" + abort-controller "^3.0.0" + ansi-escapes "^4.3.0" + bip32 "^2.0.3" + bip39 "^3.0.2" + chalk "^2.4.2" + ci-info "^2.0.0" + debug "^4.1.1" + deepmerge "^2.1.0" + download "^7.1.0" + enquirer "^2.3.0" + eth-sig-util "^2.5.2" + ethereumjs-abi "^0.6.8" + ethereumjs-account "^3.0.0" + ethereumjs-block "^2.2.0" + ethereumjs-common "^1.3.2" + ethereumjs-tx "^2.1.1" + ethereumjs-util "^6.1.0" + find-up "^2.1.0" + fp-ts "1.19.3" + fs-extra "^7.0.1" + glob "^7.1.3" + io-ts "1.10.4" + is-installed-globally "^0.2.0" + lodash "^4.17.11" + merkle-patricia-tree "^3.0.0" + mocha "^5.2.0" + node-fetch "^2.6.0" + qs "^6.7.0" + raw-body "^2.4.1" + semver "^6.3.0" + slash "^3.0.0" + solc "0.5.15" + source-map-support "^0.5.13" + ts-essentials "^2.0.7" + tsort "0.0.1" + uuid "^3.3.2" + ws "^7.2.1" + "@nomiclabs/ethereumjs-vm@^4.1.1": version "4.2.1" resolved "https://registry.yarnpkg.com/@nomiclabs/ethereumjs-vm/-/ethereumjs-vm-4.2.1.tgz#768a6a071f88a9f3d27e560b899f86191d53bb72" @@ -539,6 +586,14 @@ resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-3.4.0.tgz#9a1669ad5f9fdfb6e273bb5a4fed10cb4cc35eb0" integrity sha512-qh+EiHWzfY/9CORr+eRUkeEUP1WiFUcq3974bLHwyYzLBUtK6HPaMkIUHi74S1rDTZ0sNz42DwPc5A4IJvN3rg== +"@pie-dao/proxy@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@pie-dao/proxy/-/proxy-1.0.0.tgz#0866289898dc6180161b5058f6ef8000f7b5e66f" + integrity sha512-4DGyK6o33YAY8led9FllFIu9HwmrUsq40wdLMjpNW9Ik+jDhoguKLaQ5oeDaGs8DyT+Z0LVSQJVkBNYGLWRJ6w== + dependencies: + "@nomiclabs/buidler" "1.3.0" + dotenv "^8.2.0" + "@pie-dao/utils@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@pie-dao/utils/-/utils-1.0.0.tgz#c504c080c5f3a8b0fba0e8d12d0881421ec2cec4" @@ -660,11 +715,21 @@ resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== +"@sindresorhus/is@^0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" + integrity sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow== + "@solidity-parser/parser@^0.11.0": version "0.11.1" resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.11.1.tgz#fa840af64840c930f24a9c82c08d4a092a068add" integrity sha512-H8BSBoKE8EubJa0ONqecA2TviT3TnHeC4NpgnAHSUiuhZoQBfPB4L2P9bs8R6AoTW10Endvh3vc+fomVMIDIYQ== +"@solidity-parser/parser@^0.5.2": + version "0.5.2" + resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.5.2.tgz#4d74670ead39e4f4fdab605a393ba8ea2390a2c4" + integrity sha512-uRyvnvVYmgNmTBpWDbBsH/0kPESQhQpEc4KsvMRLVzFJ1o1s0uIv0Y6Y9IB5vI1Dwz2CbS4X/y4Wyw/75cTFnQ== + "@solidity-parser/parser@^0.8.2": version "0.8.2" resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.8.2.tgz#a6a5e93ac8dca6884a99a532f133beba59b87b69" @@ -777,6 +842,16 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.22.tgz#0d29f382472c4ccf3bd96ff0ce47daf5b7b84b18" integrity sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw== +"@types/node@10.12.18": + version "10.12.18" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.18.tgz#1d3ca764718915584fcd9f6344621b7672665c67" + integrity sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ== + +"@types/node@11.11.6": + version "11.11.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-11.11.6.tgz#df929d1bb2eee5afdda598a41930fe50b43eaa6a" + integrity sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ== + "@types/node@^10.0.3", "@types/node@^10.12.18": version "10.17.51" resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.51.tgz#639538575befbcf3d3861f95c41de8e47124d674" @@ -1048,6 +1123,13 @@ anymatch@~3.1.1: normalize-path "^3.0.0" picomatch "^2.0.4" +archive-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/archive-type/-/archive-type-4.0.0.tgz#f92e72233056dfc6969472749c267bdb046b1d70" + integrity sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA= + dependencies: + file-type "^4.2.0" + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -1809,13 +1891,26 @@ binary-extensions@^2.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -bindings@^1.5.0: +bindings@^1.3.0, bindings@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== dependencies: file-uri-to-path "1.0.0" +bip32@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/bip32/-/bip32-2.0.6.tgz#6a81d9f98c4cd57d05150c60d8f9e75121635134" + integrity sha512-HpV5OMLLGTjSVblmrtYRfFFKuQB+GArM0+XP8HGWfJ5vxYBqo+DesvJwOdC2WJ3bCkZShGf0QIfoIpeomVzVdA== + 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" + bip39@2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/bip39/-/bip39-2.5.0.tgz#51cbd5179460504a63ea3c000db3f787ca051235" @@ -1827,6 +1922,16 @@ bip39@2.5.0: safe-buffer "^5.0.1" unorm "^1.3.3" +bip39@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/bip39/-/bip39-3.0.3.tgz#4a8b79067d6ed2e74f9199ac994a2ab61b176760" + integrity sha512-P0dKrz4g0V0BjXfx7d9QNkJ/Txcz/k+hM9TnjqjUaXtuOfAvxXSw2rJw8DX0e3ZPwnK/IgDxoRqf0bvoVCqbMg== + dependencies: + "@types/node" "11.11.6" + create-hash "^1.1.0" + pbkdf2 "^3.0.9" + randombytes "^2.0.1" + bip66@^1.1.5: version "1.1.5" resolved "https://registry.yarnpkg.com/bip66/-/bip66-1.1.5.tgz#01fa8748785ca70955d5011217d1b3139969ca22" @@ -1834,6 +1939,14 @@ bip66@^1.1.5: dependencies: safe-buffer "^5.0.1" +bl@^1.0.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/bl/-/bl-1.2.3.tgz#1e8dd80142eac80d7158c9dccc047fb620e035e7" + integrity sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww== + dependencies: + readable-stream "^2.3.5" + safe-buffer "^5.1.1" + blakejs@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.1.0.tgz#69df92ef953aa88ca51a32df6ab1c54a155fc7a5" @@ -1990,7 +2103,7 @@ bs58@^4.0.0: dependencies: base-x "^3.0.2" -bs58check@^2.1.2: +bs58check@<3.0.0, bs58check@^2.1.1, bs58check@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== @@ -1999,6 +2112,29 @@ bs58check@^2.1.2: create-hash "^1.1.0" safe-buffer "^5.1.2" +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= + buffer-from@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" @@ -2071,6 +2207,19 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +cacheable-request@^2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-2.1.4.tgz#0d808801b6342ad33c91df9d0b44dc09b91e5c3d" + integrity sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0= + dependencies: + clone-response "1.0.2" + get-stream "3.0.0" + http-cache-semantics "3.8.1" + keyv "3.0.0" + lowercase-keys "1.0.0" + normalize-url "2.0.1" + responselike "1.0.2" + cacheable-request@^6.0.0: version "6.1.0" resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" @@ -2149,6 +2298,16 @@ caseless@^0.12.0, caseless@~0.12.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= +caw@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/caw/-/caw-2.0.1.tgz#6c3ca071fc194720883c2dc5da9b074bfc7e9e95" + integrity sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA== + dependencies: + get-proxy "^2.0.0" + isurl "^1.0.0-alpha5" + tunnel-agent "^0.6.0" + url-to-options "^1.0.1" + cbor@^5.0.2: version "5.2.0" resolved "https://registry.yarnpkg.com/cbor/-/cbor-5.2.0.tgz#4cca67783ccd6de7b50ab4ed62636712f287a67c" @@ -2358,7 +2517,7 @@ cliui@^5.0.0: strip-ansi "^5.2.0" wrap-ansi "^5.1.0" -clone-response@^1.0.2: +clone-response@1.0.2, clone-response@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= @@ -2424,6 +2583,11 @@ command-exists@^1.2.8: resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== +commander@2.15.1: + version "2.15.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f" + integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag== + commander@2.18.0: version "2.18.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.18.0.tgz#2bf063ddee7c7891176981a2cc798e5754bc6970" @@ -2434,6 +2598,11 @@ commander@3.0.2: resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== +commander@^2.8.1: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + component-emitter@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" @@ -2454,6 +2623,14 @@ concat-stream@^1.5.1, concat-stream@^1.6.0, concat-stream@^1.6.2: readable-stream "^2.2.2" typedarray "^0.0.6" +config-chain@^1.1.11: + version "1.1.12" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" + integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + confusing-browser-globals@^1.0.10: version "1.0.10" resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59" @@ -2464,7 +2641,7 @@ contains-path@^0.1.0: resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= -content-disposition@0.5.3: +content-disposition@0.5.3, content-disposition@^0.5.2: version "0.5.3" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== @@ -2658,6 +2835,13 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.8, debug@^2.6. dependencies: ms "2.0.0" +debug@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + debug@3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" @@ -2708,6 +2892,59 @@ decompress-response@^3.2.0, decompress-response@^3.3.0: dependencies: mimic-response "^1.0.0" +decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-tar/-/decompress-tar-4.1.1.tgz#718cbd3fcb16209716e70a26b84e7ba4592e5af1" + integrity sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ== + dependencies: + file-type "^5.2.0" + is-stream "^1.1.0" + tar-stream "^1.5.2" + +decompress-tarbz2@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz#3082a5b880ea4043816349f378b56c516be1a39b" + integrity sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A== + dependencies: + decompress-tar "^4.1.0" + file-type "^6.1.0" + is-stream "^1.1.0" + seek-bzip "^1.0.5" + unbzip2-stream "^1.0.9" + +decompress-targz@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/decompress-targz/-/decompress-targz-4.1.1.tgz#c09bc35c4d11f3de09f2d2da53e9de23e7ce1eee" + integrity sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w== + dependencies: + decompress-tar "^4.1.1" + file-type "^5.2.0" + is-stream "^1.1.0" + +decompress-unzip@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/decompress-unzip/-/decompress-unzip-4.0.1.tgz#deaaccdfd14aeaf85578f733ae8210f9b4848f69" + integrity sha1-3qrM39FK6vhVePczroIQ+bSEj2k= + dependencies: + file-type "^3.8.0" + get-stream "^2.2.0" + pify "^2.3.0" + yauzl "^2.4.2" + +decompress@^4.2.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/decompress/-/decompress-4.2.1.tgz#007f55cc6a62c055afa37c07eb6a4ee1b773f118" + integrity sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ== + dependencies: + decompress-tar "^4.0.0" + decompress-tarbz2 "^4.0.0" + decompress-targz "^4.0.0" + decompress-unzip "^4.0.1" + graceful-fs "^4.1.10" + make-dir "^1.0.0" + pify "^2.3.0" + strip-dirs "^2.0.0" + deep-eql@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" @@ -2732,6 +2969,11 @@ deep-is@^0.1.3, deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= +deepmerge@^2.1.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170" + integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA== + defer-to-connect@^1.0.1: version "1.1.3" resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" @@ -2875,7 +3117,7 @@ dom-walk@^0.1.0: resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== -dotenv@8.2.0: +dotenv@8.2.0, dotenv@^8.2.0: version "8.2.0" resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== @@ -2887,6 +3129,24 @@ dotignore@~0.1.2: dependencies: minimatch "^3.0.4" +download@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/download/-/download-7.1.0.tgz#9059aa9d70b503ee76a132897be6dec8e5587233" + integrity sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ== + dependencies: + archive-type "^4.0.0" + caw "^2.0.1" + content-disposition "^0.5.2" + decompress "^4.2.0" + ext-name "^5.0.0" + file-type "^8.1.0" + filenamify "^2.0.0" + get-stream "^3.0.0" + got "^8.3.1" + make-dir "^1.2.0" + p-event "^2.1.0" + pify "^3.0.0" + drbg.js@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" @@ -2975,7 +3235,7 @@ encoding@^0.1.11: dependencies: iconv-lite "^0.6.2" -end-of-stream@^1.1.0: +end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== @@ -3951,6 +4211,21 @@ express@^4.14.0: utils-merge "1.0.1" vary "~1.1.2" +ext-list@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/ext-list/-/ext-list-2.2.2.tgz#0b98e64ed82f5acf0f2931babf69212ef52ddd37" + integrity sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA== + dependencies: + mime-db "^1.28.0" + +ext-name@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ext-name/-/ext-name-5.0.0.tgz#70781981d183ee15d13993c8822045c506c8f0a6" + integrity sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ== + dependencies: + ext-list "^2.0.0" + sort-keys-length "^1.0.0" + ext@^1.1.2: version "1.4.0" resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" @@ -4057,6 +4332,13 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= + dependencies: + pend "~1.2.0" + fetch-ponyfill@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/fetch-ponyfill/-/fetch-ponyfill-4.1.0.tgz#ae3ce5f732c645eab87e4ae8793414709b239893" @@ -4085,11 +4367,50 @@ file-entry-cache@^6.0.0: dependencies: flat-cache "^3.0.4" +file-type@^3.8.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" + integrity sha1-JXoHg4TR24CHvESdEH1SpSZyuek= + +file-type@^4.2.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-4.4.0.tgz#1b600e5fca1fbdc6e80c0a70c71c8dba5f7906c5" + integrity sha1-G2AOX8ofvcboDApwxxyNul95BsU= + +file-type@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-5.2.0.tgz#2ddbea7c73ffe36368dfae49dc338c058c2b8ad6" + integrity sha1-LdvqfHP/42No365J3DOMBYwritY= + +file-type@^6.1.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-6.2.0.tgz#e50cd75d356ffed4e306dc4f5bcf52a79903a919" + integrity sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg== + +file-type@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-8.1.0.tgz#244f3b7ef641bbe0cca196c7276e4b332399f68c" + integrity sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ== + file-uri-to-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== +filename-reserved-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz#abf73dfab735d045440abfea2d91f389ebbfa229" + integrity sha1-q/c9+rc10EVECr/qLZHzieu/oik= + +filenamify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/filenamify/-/filenamify-2.1.0.tgz#88faf495fb1b47abfd612300002a16228c677ee9" + integrity sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA== + dependencies: + filename-reserved-regex "^2.0.0" + strip-outer "^1.0.0" + trim-repeated "^1.0.0" + fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -4285,6 +4606,19 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= +from2@^2.1.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + fs-extra@^0.30.0: version "0.30.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" @@ -4454,11 +4788,26 @@ get-port@^3.1.0: resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" integrity sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw= -get-stream@^3.0.0: +get-proxy@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/get-proxy/-/get-proxy-2.1.0.tgz#349f2b4d91d44c4d4d4e9cba2ad90143fac5ef93" + integrity sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw== + dependencies: + npm-conf "^1.1.0" + +get-stream@3.0.0, get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= +get-stream@^2.2.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-2.3.1.tgz#5f38f93f346009666ee0150a054167f91bdd95de" + integrity sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4= + dependencies: + object-assign "^4.0.1" + pinkie-promise "^2.0.0" + get-stream@^4.0.0, get-stream@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -4500,6 +4849,18 @@ glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" +glob@7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" + integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ== + 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" + glob@7.1.3: version "7.1.3" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" @@ -4535,6 +4896,13 @@ glob@^5.0.15: once "^1.3.0" path-is-absolute "^1.0.0" +global-dirs@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-0.1.1.tgz#b319c0dd4607f353f3be9cca4c72fc148c49f445" + integrity sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU= + dependencies: + ini "^1.3.4" + global-modules@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" @@ -4627,6 +4995,34 @@ got@^7.1.0: url-parse-lax "^1.0.0" url-to-options "^1.0.1" +got@^8.3.1: + version "8.3.2" + resolved "https://registry.yarnpkg.com/got/-/got-8.3.2.tgz#1d23f64390e97f776cac52e5b936e5f514d2e937" + integrity sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw== + dependencies: + "@sindresorhus/is" "^0.7.0" + cacheable-request "^2.1.1" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + into-stream "^3.1.0" + is-retry-allowed "^1.1.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + mimic-response "^1.0.0" + p-cancelable "^0.4.0" + p-timeout "^2.0.1" + pify "^3.0.0" + safe-buffer "^5.1.1" + timed-out "^4.0.1" + url-parse-lax "^3.0.0" + url-to-options "^1.0.1" + +graceful-fs@^4.1.10: + version "4.2.6" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" + integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== + graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0: version "4.2.4" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" @@ -4856,6 +5252,11 @@ hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: inherits "^2.0.3" minimalistic-assert "^1.0.1" +he@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" + integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= + he@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" @@ -4898,6 +5299,11 @@ http-basic@^8.1.1: http-response-object "^3.0.1" parse-cache-control "^1.0.1" +http-cache-semantics@3.8.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" + integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== + http-cache-semantics@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" @@ -5049,7 +5455,7 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@^1.3.5: +ini@^1.3.4, ini@^1.3.5: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== @@ -5078,6 +5484,14 @@ interpret@^1.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== +into-stream@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6" + integrity sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY= + dependencies: + from2 "^2.1.1" + p-is-promise "^1.1.0" + invariant@^2.2.2: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" @@ -5272,11 +5686,24 @@ is-hex-prefixed@1.0.0: resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" integrity sha1-fY035q135dEnFIkTxXPggtd39VQ= +is-installed-globally@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.2.0.tgz#8cde07ade508458b51f14bcda315ffaf4898de30" + integrity sha512-g3TzWCnR/eO4Q3abCwgFjOFw7uVOfxG4m8hMr/39Jcf2YvE5mHrFKqpyuraWV4zwx9XhjnVO4nY0ZI4llzl0Pg== + dependencies: + global-dirs "^0.1.1" + is-path-inside "^2.1.0" + is-map@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.2.tgz#00922db8c9bf73e81b7a335827bc2a43f2b91127" integrity sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg== +is-natural-number@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" + integrity sha1-q5124dtM7VHjXeDHLr7PCfc0zeg= + is-negative-zero@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" @@ -5299,7 +5726,14 @@ is-object@^1.0.1: resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== -is-plain-obj@^1.1.0: +is-path-inside@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-2.1.0.tgz#7c9810587d659a40d27bcdb4d5616eab059494b2" + integrity sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg== + dependencies: + path-is-inside "^1.0.2" + +is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= @@ -5335,7 +5769,7 @@ is-regex@~1.0.5: dependencies: has "^1.0.3" -is-retry-allowed@^1.0.0: +is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== @@ -5638,6 +6072,13 @@ keccak@^2.0.0: nan "^2.14.0" safe-buffer "^5.2.0" +keyv@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373" + integrity sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA== + dependencies: + json-buffer "3.0.0" + keyv@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" @@ -5943,6 +6384,11 @@ loose-envify@^1.0.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" +lowercase-keys@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" + integrity sha1-TjNms55/VFfjXxMkvfb4jQv8cwY= + lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" @@ -5989,6 +6435,13 @@ ltgt@~2.1.1: resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.1.3.tgz#10851a06d9964b971178441c23c9e52698eece34" integrity sha1-EIUaBtmWS5cReEQcI8nlJpjuzjQ= +make-dir@^1.0.0, make-dir@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== + dependencies: + pify "^3.0.0" + map-age-cleaner@^0.1.1: version "0.1.3" resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" @@ -6152,6 +6605,11 @@ mime-db@1.45.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== +mime-db@^1.28.0: + version "1.46.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.46.0.tgz#6267748a7f799594de3cbc8cde91def349661cee" + integrity sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ== + mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.19, mime-types@~2.1.24: version "2.1.28" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd" @@ -6203,6 +6661,11 @@ minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: dependencies: brace-expansion "^1.1.7" +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + minimist@^1.2.0, minimist@^1.2.5, minimist@~1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" @@ -6243,6 +6706,13 @@ mkdirp@*: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +mkdirp@0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + dependencies: + minimist "0.0.8" + mkdirp@0.5.5, mkdirp@0.5.x, mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" @@ -6281,6 +6751,23 @@ mocha@8.2.1: yargs-parser "13.1.2" yargs-unparser "2.0.0" +mocha@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6" + integrity sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ== + dependencies: + browser-stdout "1.3.1" + commander "2.15.1" + debug "3.1.0" + diff "3.5.0" + escape-string-regexp "1.0.5" + glob "7.1.2" + growl "1.10.5" + he "1.1.1" + minimatch "3.0.4" + mkdirp "0.5.1" + supports-color "5.4.0" + mocha@^7.1.1, mocha@^7.1.2: version "7.2.0" resolved "https://registry.yarnpkg.com/mocha/-/mocha-7.2.0.tgz#01cc227b00d875ab1eed03a75106689cfed5a604" @@ -6390,7 +6877,7 @@ mute-stream@0.0.7: resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= -nan@^2.0.8, nan@^2.14.0: +nan@^2.0.8, nan@^2.13.2, nan@^2.14.0: version "2.14.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== @@ -6517,11 +7004,28 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +normalize-url@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" + integrity sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw== + dependencies: + prepend-http "^2.0.0" + query-string "^5.0.1" + sort-keys "^2.0.0" + normalize-url@^4.1.0: version "4.5.0" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== +npm-conf@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/npm-conf/-/npm-conf-1.1.3.tgz#256cc47bd0e218c259c4e9550bf413bc2192aff9" + integrity sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw== + dependencies: + config-chain "^1.1.11" + pify "^3.0.0" + npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" @@ -6547,7 +7051,7 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@^4, object-assign@^4.0.0, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4, object-assign@^4.0.0, object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -6735,6 +7239,11 @@ p-cancelable@^0.3.0: resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw== +p-cancelable@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.4.1.tgz#35f363d67d52081c8d9585e37bcceb7e0bbcb2a0" + integrity sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ== + p-cancelable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" @@ -6745,11 +7254,23 @@ p-defer@^1.0.0: resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= +p-event@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/p-event/-/p-event-2.3.1.tgz#596279ef169ab2c3e0cae88c1cfbb08079993ef6" + integrity sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA== + dependencies: + p-timeout "^2.0.1" + p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= +p-is-promise@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" + integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4= + p-is-promise@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" @@ -6804,6 +7325,13 @@ p-timeout@^1.1.1: dependencies: p-finally "^1.0.0" +p-timeout@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-2.0.1.tgz#d8dd1979595d2dc0139e1fe46b8b646cb3cdf038" + integrity sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA== + dependencies: + p-finally "^1.0.0" + p-try@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" @@ -6974,6 +7502,11 @@ pbkdf2@^3.0.17, pbkdf2@^3.0.3, pbkdf2@^3.0.9: safe-buffer "^5.0.1" sha.js "^2.4.8" +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= + performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" @@ -6989,6 +7522,11 @@ pify@^2.0.0, pify@^2.3.0: resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + pify@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" @@ -7119,6 +7657,11 @@ promise@^8.0.0: dependencies: asap "~2.0.6" +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= + proxy-addr@~2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" @@ -7343,7 +7886,7 @@ readable-stream@^1.0.33: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.2.2, readable-stream@^2.2.8, readable-stream@^2.2.9, readable-stream@^2.3.6, readable-stream@~2.3.6: +readable-stream@^2.0.0, readable-stream@^2.0.5, readable-stream@^2.2.2, readable-stream@^2.2.8, readable-stream@^2.2.9, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -7607,7 +8150,7 @@ resolve@^1.1.6, resolve@^1.10.0, resolve@^1.13.1, resolve@^1.17.0: is-core-module "^2.1.0" path-parse "^1.0.6" -responselike@^1.0.2: +responselike@1.0.2, responselike@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= @@ -7798,6 +8341,13 @@ seedrandom@3.0.1: resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-3.0.1.tgz#eb3dde015bcf55df05a233514e5df44ef9dce083" integrity sha512-1/02Y/rUeU1CJBAGLebiC5Lbo5FnB22gQbIFFYTLkwvp1xdABZJH1sn4ZT1MzXmPpzv+Rf/Lu2NcsLJiK4rcDg== +seek-bzip@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/seek-bzip/-/seek-bzip-1.0.6.tgz#35c4171f55a680916b52a07859ecf3b5857f21c4" + integrity sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ== + dependencies: + commander "^2.8.1" + semaphore@>=1.0.1, semaphore@^1.0.3, semaphore@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/semaphore/-/semaphore-1.1.0.tgz#aaad8b86b20fe8e9b32b16dc2ee682a8cd26a8aa" @@ -8038,6 +8588,20 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" +solc@0.5.15: + version "0.5.15" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.5.15.tgz#f674ce93d4d04a86b65a4393657edf03b2f26028" + integrity sha512-uI+7XtBu/0CXRc8IMjzxbh0haLwaBF32VxAkkks06zEk+mVcsQbHdjvojXX6zQYtZVuXdVYPVccoIjEhvvqKnQ== + dependencies: + command-exists "^1.2.8" + commander "3.0.2" + 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" + solc@0.7.2: version "0.7.2" resolved "https://registry.yarnpkg.com/solc/-/solc-0.7.2.tgz#5ffb5f204bf0727533c75d5efb7accbd84c9d2cd" @@ -8145,6 +8709,27 @@ solidity-coverage@0.7.14: shelljs "^0.8.3" web3-utils "^1.3.0" +sort-keys-length@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sort-keys-length/-/sort-keys-length-1.0.1.tgz#9cb6f4f4e9e48155a6aa0671edd336ff1479a188" + integrity sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg= + dependencies: + sort-keys "^1.0.0" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-1.1.2.tgz#441b6d4d346798f1b4e49e8920adfba0e543f9ad" + integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= + dependencies: + is-plain-obj "^1.0.0" + +sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= + dependencies: + is-plain-obj "^1.0.0" + source-map-resolve@^0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -8411,6 +8996,13 @@ strip-bom@^3.0.0: resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= +strip-dirs@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" + integrity sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g== + dependencies: + is-natural-number "^4.0.1" + strip-eof@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" @@ -8433,6 +9025,20 @@ strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1. resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +strip-outer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.1.tgz#b2fd2abf6604b9d1e6013057195df836b8a9d631" + integrity sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg== + dependencies: + escape-string-regexp "^1.0.2" + +supports-color@5.4.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" + integrity sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w== + dependencies: + has-flag "^3.0.0" + supports-color@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.0.0.tgz#76cfe742cf1f41bb9b1c29ad03068c05b4c0e40a" @@ -8540,6 +9146,19 @@ tape@^4.6.3: string.prototype.trim "~1.2.1" through "~2.3.8" +tar-stream@^1.5.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-1.6.2.tgz#8ea55dab37972253d9a9af90fdcd559ae435c555" + integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== + dependencies: + bl "^1.0.0" + buffer-alloc "^1.2.0" + end-of-stream "^1.0.0" + fs-constants "^1.0.0" + readable-stream "^2.3.0" + to-buffer "^1.1.1" + xtend "^4.0.0" + tar@^4.0.2: version "4.4.13" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" @@ -8588,7 +9207,7 @@ through2@^2.0.3: readable-stream "~2.3.6" xtend "~4.0.1" -through@^2.3.6, through@~2.3.4, through@~2.3.8: +through@^2.3.6, through@^2.3.8, through@~2.3.4, through@~2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -8598,6 +9217,17 @@ timed-out@^4.0.0, timed-out@^4.0.1: resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= +tiny-secp256k1@^1.1.3: + version "1.1.6" + resolved "https://registry.yarnpkg.com/tiny-secp256k1/-/tiny-secp256k1-1.1.6.tgz#7e224d2bee8ab8283f284e40e6b4acb74ffe047c" + integrity sha512-FmqJZGduTyvsr2cF3375fqGHUovSwDi/QytexX1Se4BPuPZpTE5Ftp5fg+EFSuEf3lhZqgCRjEG3ydUQ/aNiwA== + dependencies: + bindings "^1.3.0" + bn.js "^4.11.8" + create-hmac "^1.1.7" + elliptic "^6.4.0" + nan "^2.13.2" + tmp@0.0.33, tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -8612,6 +9242,11 @@ tmp@0.1.0: dependencies: rimraf "^2.6.3" +to-buffer@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/to-buffer/-/to-buffer-1.1.1.tgz#493bd48f62d7c43fcded313a03dcadb2e1213a80" + integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== + to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" @@ -8667,6 +9302,13 @@ tough-cookie@^2.3.3, tough-cookie@~2.5.0: psl "^1.1.28" punycode "^2.1.1" +trim-repeated@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/trim-repeated/-/trim-repeated-1.0.0.tgz#e3646a2ea4e891312bf7eace6cfb05380bc01c21" + integrity sha1-42RqLqTokTEr9+rObPsFOAvAHCE= + dependencies: + escape-string-regexp "^1.0.2" + trim-right@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" @@ -8677,6 +9319,11 @@ trim-right@^1.0.1: resolved "https://registry.yarnpkg.com/true-case-path/-/true-case-path-2.2.1.tgz#c5bf04a5bbec3fd118be4084461b3a27c4d796bf" integrity sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q== +ts-essentials@^2.0.7: + version "2.0.12" + resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-2.0.12.tgz#c9303f3d74f75fa7528c3d49b80e089ab09d8745" + integrity sha512-3IVX4nI6B5cc31/GFFE+i8ey/N2eA0CZDbo6n0yrz0zDX8ZJ8djmU1p+XRz7G3is0F3bB3pu2pAroFdAWQKU3w== + tsconfig-paths@^3.9.0: version "3.9.0" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" @@ -8783,6 +9430,11 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= +typeforce@^1.11.5: + version "1.18.0" + resolved "https://registry.yarnpkg.com/typeforce/-/typeforce-1.18.0.tgz#d7416a2c5845e085034d70fcc5b6cc4a90edbfdc" + integrity sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g== + typewise-core@^1.2, typewise-core@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/typewise-core/-/typewise-core-1.2.0.tgz#97eb91805c7f55d2f941748fa50d315d991ef195" @@ -8810,6 +9462,14 @@ ultron@~1.1.0: resolved "https://registry.yarnpkg.com/ultron/-/ultron-1.1.1.tgz#9fe1536a10a664a65266a1e3ccf85fd36302bc9c" integrity sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og== +unbzip2-stream@^1.0.9: + version "1.4.3" + resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" + integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== + dependencies: + buffer "^5.2.1" + through "^2.3.8" + underscore@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.9.1.tgz#06dce34a0e68a7babc29b365b8e74b8925203961" @@ -9560,6 +10220,13 @@ wide-align@1.1.3: dependencies: string-width "^1.0.2 || 2" +wif@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/wif/-/wif-2.0.6.tgz#08d3f52056c66679299726fade0d432ae74b4704" + integrity sha1-CNP1IFbGZnkplyb63g1DKudLRwQ= + dependencies: + bs58check "<3.0.0" + window-size@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" @@ -9802,6 +10469,14 @@ yargs@^4.7.1: y18n "^3.2.1" yargs-parser "^2.4.1" +yauzl@^2.4.2: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" + yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" From fa1c53350a31bfafb0f65e33fe517e47d1846400 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Mon, 22 Feb 2021 20:27:04 +0200 Subject: [PATCH 075/118] update SDK so tests pass without local version running --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 978b416..f5b3854 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "test": "yarn run prettier:tests && yarn run lint:tests && npx hardhat test --deploy-fixture" }, "dependencies": { - "@elastic-dao/sdk": "0.9.0-beta9", + "@elastic-dao/sdk": "0.9.0-beta11", "@nomiclabs/hardhat-ethers": "2.0.1", "@nomiclabs/hardhat-etherscan": "2.1.1", "@nomiclabs/hardhat-waffle": "2.0.1", diff --git a/yarn.lock b/yarn.lock index 94e846e..8f716df 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,10 +23,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@elastic-dao/sdk@0.9.0-beta9": - version "0.9.0-beta9" - resolved "https://registry.yarnpkg.com/@elastic-dao/sdk/-/sdk-0.9.0-beta9.tgz#99c0975cf2efe9cf40b84de51a5f231ea78bdf74" - integrity sha512-jYibutTtwFTnYr+PMjMK82xADH34J/n3LJWAmsRn5VFlmGazjk+p82lwwyE4sLznjZ5oflsLun3Z8+/TEzIHeA== +"@elastic-dao/sdk@0.9.0-beta11": + version "0.9.0-beta11" + resolved "https://registry.yarnpkg.com/@elastic-dao/sdk/-/sdk-0.9.0-beta11.tgz#81f1b6fc67a0794c70469049691f868b00d93a55" + integrity sha512-f7fSk7JhS5ZOqHzvmiJWeRnfPfd/uoTETKRAnlZwQghNubhFS4fRDMaYpKzqJkSkHVHGBbM7M/EaGEnGfi6Lww== dependencies: "@pie-dao/utils" "^1.0.0" bignumber.js "^9.0.0" From 58448144f215c1a072f1eead281e9cf194225026 Mon Sep 17 00:00:00 2001 From: alleycatdev Date: Wed, 24 Feb 2021 17:13:42 -0500 Subject: [PATCH 076/118] fix readme and remove file from slither --- ..inheritance-graph.dot | 43 ----------------------------------------- README.md | 2 +- 2 files changed, 1 insertion(+), 44 deletions(-) delete mode 100644 ..inheritance-graph.dot diff --git a/..inheritance-graph.dot b/..inheritance-graph.dot deleted file mode 100644 index df43940..0000000 --- a/..inheritance-graph.dot +++ /dev/null @@ -1,43 +0,0 @@ -digraph "" { -ElasticDAO -> ReentryProtection; -ElasticDAO[shape="box"label=<
ElasticDAO
Public Functions:
exit(uint256)
initializeToken(string,string,uint256,uint256,uint256,uint256)
join(uint256)
setController(address)
setMaxVotingLambda(uint256)
seedSummoning()
summon(uint256)
getDAO()
getEcosystem()
receive()
fallback()
Private Functions:
_getDAO()
_getEcosystem()
_getToken()
Modifiers:
onlyAfterSummoning()
onlyAfterTokenInitialized()
onlyBeforeSummoning()
onlyController()
onlyDeployer()
onlySummoners()
onlyWhenOpen()
Public Variables:
deployer
ecosystemModelAddress
controller
summoners
maxVotingLambda
>]; - -ElasticDAOFactory -> ReentryProtection; -ElasticDAOFactory[shape="box"label=<
ElasticDAOFactory
Public Functions:
deployDAOAndToken(address[],string,uint256,string,string,uint256,uint256,uint256,uint256)
updateFeeAddress(address)
collectFees()
receive()
fallback()
Modifiers:
onlyDeployer()
Public Variables:
deployer
ecosystemModelAddress
deployedDAOAddresses
deployedDAOCount
Private Variables:
feeAddress
>]; - -IERC20[shape="box"label=<
IERC20
Public Functions:
allowance(address,address)
approve(address,uint256)
balanceOf(address)
totalSupply()
transfer(address,uint256)
transferFrom(address,address,uint256)
>]; - -IElasticToken -> IERC20; -IElasticToken[shape="box"label=<
IElasticToken
Public Functions:
balanceOfInShares(address)
burn(address,uint256)
burnShares(address,uint256)
mintShares(address,uint256)
numberOfTokenHolders()
totalSupplyInShares()
>]; - -ElasticMath[shape="box"label=<
ElasticMath
Private Functions:
capitalDelta(uint256,uint256)
deltaE(uint256,uint256,uint256,uint256,uint256,uint256)
lambdaFromT(uint256,uint256,uint256)
mDash(uint256,uint256,uint256)
revamp(uint256)
t(uint256,uint256,uint256)
wmul(uint256,uint256)
wdiv(uint256,uint256)
>]; - -SafeMath[shape="box"label=<
SafeMath
Private Functions:
add(uint256,uint256)
sub(uint256,uint256)
sub(uint256,uint256,string)
mul(uint256,uint256)
pow(uint256,uint256)
>]; - -DAO -> EternalModel [ label="1" ]; -DAO -> ReentryProtection [ label="2" ]; -DAO[shape="box"label=<
DAO
Public Functions:
deserialize(address,Ecosystem.Instance)
exists(address,Ecosystem.Instance)
getSummoner(DAO.Instance,uint256)
isSummoner(DAO.Instance,address)
serialize(DAO.Instance)
Private Functions:
_exists(address)
>]; - -Ecosystem -> EternalModel [ label="1" ]; -Ecosystem -> ReentryProtection [ label="2" ]; -Ecosystem[shape="box"label=<
Ecosystem
Public Functions:
deserialize(address)
exists(address)
serialize(Ecosystem.Instance)
Private Functions:
_exists(address)
>]; - -EternalModel[shape="box"label=<
EternalModel
Private Functions:
getUint(bytes32)
getString(bytes32)
getAddress(bytes32)
getBool(bytes32)
setUint(bytes32,uint256)
setString(bytes32,string)
setAddress(bytes32,address)
setBool(bytes32,bool)
Private Variables:
s
>]; - -Token -> EternalModel [ label="1" ]; -Token -> ReentryProtection [ label="2" ]; -Token[shape="box"label=<
Token
Public Functions:
deserialize(address,Ecosystem.Instance)
exists(address,Ecosystem.Instance)
incrementCounter(Token.Instance)
serialize(Token.Instance)
updateNumberOfTokenHolders(Token.Instance,uint256)
Private Functions:
_exists(address)
>]; - -TokenHolder -> EternalModel [ label="1" ]; -TokenHolder -> ReentryProtection [ label="2" ]; -TokenHolder[shape="box"label=<
TokenHolder
Public Functions:
deserialize(address,Ecosystem.Instance,Token.Instance)
exists(address,Token.Instance)
serialize(TokenHolder.Instance)
Private Functions:
_exists(address,Token.Instance)
>]; - -Configurator[shape="box"label=<
Configurator
Public Functions:
buildDAO(address[],string,uint256,Ecosystem.Instance)
buildEcosystem(Ecosystem.Instance)
buildToken(string,string,uint256,uint256,uint256,uint256,Ecosystem.Instance)
>]; - -ReentryProtection[shape="box"label=<
ReentryProtection
Modifiers:
preventReentry()
Private Variables:
mutex
>]; - -ElasticGovernanceToken -> IElasticToken [ label="1" ]; -ElasticGovernanceToken -> ReentryProtection [ label="2" ]; -ElasticGovernanceToken[shape="box"label=<
ElasticGovernanceToken
Public Functions:
allowance(address,address)
approve(address,uint256)
balanceOf(address)
balanceOfInShares(address)
balanceOfVoting(address)
burn(address,uint256)
burnShares(address,uint256)
decimals()
decreaseAllowance(address,uint256)
increaseAllowance(address,uint256)
mint(address,uint256)
mintShares(address,uint256)
name()
numberOfTokenHolders()
setBurner(address)
setMinter(address)
symbol()
totalSupply()
totalSupplyInShares()
transfer(address,uint256)
transferFrom(address,address,uint256)
Private Functions:
_approve(address,address,uint256)
_burn(address,uint256)
_burnShares(address,uint256)
_mint(address,uint256)
_mintShares(address,uint256)
_transfer(address,address,uint256)
_updateBalance(Token.Instance,TokenHolder.Instance,bool,uint256)
_updateNumberOfTokenHolders(bool,Token.Instance,TokenHolder.Instance,Token)
_getEcosystem()
_getTokenHolder(address)
_getToken()
Modifiers:
onlyDAO()
onlyDAOorBurner()
onlyDAOorMinter()
Public Variables:
burner
daoAddress
ecosystemModelAddress
minter
Private Variables:
_allowances
>]; - -} \ No newline at end of file diff --git a/README.md b/README.md index 5cbfea6..e504a78 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Elastic DAO Contracts Contracts for the Elastic DAO platform. -This project uses [https://hardhat.io](Hardhat) +This project uses [Hardhat](https://hardhat.org) From fa1e5e3936e6a1549290dddde9f5731c6ee458de Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Fri, 26 Feb 2021 11:06:27 +0200 Subject: [PATCH 077/118] typo / doc cleanup --- src/core/ElasticDAO.sol | 14 +++++--------- src/services/Configurator.sol | 6 +++--- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index c5fab7a..df9d10b 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -140,14 +140,10 @@ contract ElasticDAO is ReentryProtection { * it increases the number of tokens that each member of the DAO has with respect to their lambda * @param _maxLambdaPurchase - is the maximum amount of lambda that can be purchased per wallet * - * @dev refer https://docs.openzeppelin.com/cli/2.8/deploying-with-create2#create2 - * for further understanding of Create2 and salt * @dev emits ElasticGovernanceTokenDeployed event * @dev * Requirements: * - Only the deployer of the DAO can initialize the Token - * - The controller of the DAO should successfully be set as the burner of the tokens of the DAO - * - The controller of the DAO should successfully be set as the minter of the tokens of the DAO */ function initializeToken( string memory _name, @@ -186,7 +182,7 @@ contract ElasticDAO is ReentryProtection { * @param _deltaLambda - the amount of lambda the address exits with * * Requirement: - * - Should be able to successfully exit the DAO + * - ETH transfer must be successful * @dev emits ExitDAO event */ function exit(uint256 _deltaLambda) external onlyAfterSummoning preventReentry { @@ -211,14 +207,14 @@ contract ElasticDAO is ReentryProtection { * Based on the current state of the DAO, capitalDelta, deltaE, mDash are calulated, * after which _deltaLambda is minted for the address calling the function. * - * @param _deltaLambda - the amount of lambda the address joins with + * @param _deltaLambda - the amount of lambda minted to the address * * @dev documentation and further math regarding capitalDelta, deltaE, * mDash can be found at ../libraries/ElasticMath.sol * @dev emits the JoinDAO event * * @dev Requirements: - * The amount of shares being purchased has to be lower than maxLambdaPurchase + * The amount of shares being purchased has to be lower than or equal to maxLambdaPurchase * (The value of maxLambdaPurchase is set during the initialzing of the DAO) * The correct value of ETH, calculated via deltaE, * must be sent in the transaction by the calling address @@ -277,7 +273,7 @@ contract ElasticDAO is ReentryProtection { } /** - * @notice penalizes @param _addresess with @param _amounts respectively + * @notice penalizes @param _addresses with @param _amounts respectively * * @param _addresses - an array of addresses * @param _amounts - an array containing the amounts each address has to be penalized respectively @@ -403,7 +399,7 @@ contract ElasticDAO is ReentryProtection { * Summoning the DAO results in all summoners getting _deltaLambda * after which people can enter the DAO using the join function * - * @param _deltaLambda - the amount of lambda each summoner address receieves + * @param _deltaLambda - the amount of lambda each summoner address receives * * @dev emits SummonedDAO event * @dev Requirement: diff --git a/src/services/Configurator.sol b/src/services/Configurator.sol index de3e44c..6440fbc 100644 --- a/src/services/Configurator.sol +++ b/src/services/Configurator.sol @@ -44,8 +44,8 @@ contract Configurator { } /** - * @dev duplicates the ecosystem contract address defaults so that each - * deployed DAO has it's own ecosystem configuration + * @dev Deploys proxies leveraging the implementation contracts found on the + * default Ecosystem.Instance record. * @param _controller the address which can control the core DAO functions * @param _defaults instance of Ecosystem with the implementation addresses * @return ecosystem Ecosystem.Instance @@ -70,7 +70,7 @@ contract Configurator { } /** - * @dev creates a governance token proxy and Token instance (storage) + * @dev creates a Token.Instance record and initializes the ElasticGovernanceToken. * @param _controller the address which can control the core DAO functions * @param _name name of the token * @param _symbol symbol of the token From da6a7e1e8f57e102866d5b3b4685e747b083b138 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Fri, 26 Feb 2021 11:17:07 +0200 Subject: [PATCH 078/118] add yarn seed command to simplify things --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index f5b3854..67cb094 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "prettier:es6": "prettier --write ./*.js --write deploy/*.js --write deploy/**/*.js", "prettier:solidity": "prettier --write src/**/*.sol --write src/**/**/*.sol --write src/**/**/**/*.sol", "prettier:tests": "yarn compile && prettier --write test/**/*.js test/*.js", + "seed": "npx hardhat seed --network localhost --account", "test": "yarn run prettier:tests && yarn run lint:tests && npx hardhat test --deploy-fixture" }, "dependencies": { From 83500abdb78a4a521857719533fc62692e174c61 Mon Sep 17 00:00:00 2001 From: AlleyCat <69900836+alleycatdev@users.noreply.github.com> Date: Thu, 4 Mar 2021 16:54:02 -0500 Subject: [PATCH 079/118] fixes collect fees (#42) --- src/core/ElasticDAOFactory.sol | 2 ++ test/elasticDAOFactoryTest.js | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/src/core/ElasticDAOFactory.sol b/src/core/ElasticDAOFactory.sol index 20c0975..cf3a768 100644 --- a/src/core/ElasticDAOFactory.sol +++ b/src/core/ElasticDAOFactory.sol @@ -71,6 +71,8 @@ contract ElasticDAOFactory is ReentryProtection { * - The fee collection transaction should be successful */ function collectFees() external preventReentry { + require(feeAddress != address(0), 'ElasticDAO: No feeAddress set'); + uint256 amount = address(this).balance; (bool success, ) = feeAddress.call{ value: amount }(''); diff --git a/test/elasticDAOFactoryTest.js b/test/elasticDAOFactoryTest.js index 809c682..b8b1119 100644 --- a/test/elasticDAOFactoryTest.js +++ b/test/elasticDAOFactoryTest.js @@ -165,4 +165,14 @@ describe('ElasticDAO: Factory', () => { expect(logs.events[0].args.feeAddress).to.equal(agent.address); expect(logs.events[0].args.amount).to.equal(feeAmountToCollect); }); + + it('Should not collect fees to the feeAddress if feeAddress is not set', async () => { + const { agent } = await signers(); + + sdk.changeSigner(agent); + + await expect(sdk.elasticDAOFactory.collectFees()).to.be.revertedWith( + 'ElasticDAO: No feeAddress set', + ); + }); }); From 46b5b2c48eabee83b9d9da6567cd6870b5865f9f Mon Sep 17 00:00:00 2001 From: AlleyCat <69900836+alleycatdev@users.noreply.github.com> Date: Fri, 5 Mar 2021 13:28:18 -0500 Subject: [PATCH 080/118] fixes serialization on token can be envoked by anyone (#43) --- deploy/configurator.js | 14 --- deploy/initialDeployment.js | 4 - src/core/ElasticDAO.sol | 117 +++++++++++++++++++++-- src/models/DAO.sol | 5 +- src/models/Ecosystem.sol | 13 +-- src/models/Token.sol | 85 +++++++++++------ src/services/Configurator.sol | 128 -------------------------- src/tokens/ElasticGovernanceToken.sol | 25 ++--- test/ecosystemTests.js | 2 - 9 files changed, 183 insertions(+), 210 deletions(-) delete mode 100644 deploy/configurator.js delete mode 100644 src/services/Configurator.sol diff --git a/deploy/configurator.js b/deploy/configurator.js deleted file mode 100644 index bc16c1e..0000000 --- a/deploy/configurator.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = async ({ getNamedAccounts, deployments }) => { - const { deploy, log } = deployments; - const { agent } = await getNamedAccounts(); - - const configurator = await deploy('Configurator', { - from: agent, - args: [], - }); - - if (configurator.newlyDeployed) { - log(`##### ElasticDAO: Configurator has been deployed: ${configurator.address}`); - } -}; -module.exports.tags = ['Configurator']; diff --git a/deploy/initialDeployment.js b/deploy/initialDeployment.js index df3c87a..64bdba5 100644 --- a/deploy/initialDeployment.js +++ b/deploy/initialDeployment.js @@ -5,7 +5,6 @@ module.exports = async ({ getNamedAccounts, deployments }) => { const { log } = deployments; const { agent } = await getNamedAccounts(); - const Configurator = await deployments.get('Configurator'); const Dao = await deployments.get('DAO'); const Ecosystem = await deployments.get('Ecosystem'); const ecosystemStorage = new ethers.Contract( @@ -24,8 +23,6 @@ module.exports = async ({ getNamedAccounts, deployments }) => { Ecosystem.address, TokenHolder.address, Token.address, - // Services - Configurator.address, // Tokens ElasticGovernanceToken.address, ]; @@ -36,7 +33,6 @@ module.exports = async ({ getNamedAccounts, deployments }) => { }; module.exports.tags = ['initialDeployment']; module.exports.dependencies = [ - 'Configurator', 'DAO', 'Ecosystem', 'ElasticDAOFactory', diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index df9d10b..4432d61 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -9,7 +9,6 @@ import '../models/DAO.sol'; import '../models/Ecosystem.sol'; import '../models/Token.sol'; -import '../services/Configurator.sol'; import '../services/ReentryProtection.sol'; import '@pie-dao/proxy/contracts/PProxy.sol'; @@ -85,8 +84,7 @@ contract ElasticDAO is ReentryProtection { } /** - * @notice Initializes and builds the ElasticDAO struct by passing and initializing - * all the required parameters into the configurator + * @notice Initializes and builds the ElasticDAO struct * * @param _ecosystemModelAddress - the address of the ecosystem model * @param _controller the address which can control the core DAO functions @@ -99,7 +97,6 @@ contract ElasticDAO is ReentryProtection { * - The DAO cannot already be initialized * - The ecosystem model address cannot be the zero address * - The DAO must have atleast one summoner to summon the DAO - * - The configurator should be able to successfully build the DAO */ function initialize( address _ecosystemModelAddress, @@ -116,21 +113,20 @@ contract ElasticDAO is ReentryProtection { require(_summoners.length > 0, 'ElasticDAO: At least 1 summoner required'); Ecosystem.Instance memory defaults = Ecosystem(_ecosystemModelAddress).deserialize(address(0)); - Configurator configurator = Configurator(defaults.configuratorAddress); - Ecosystem.Instance memory ecosystem = configurator.buildEcosystem(controller, defaults); + Ecosystem.Instance memory ecosystem = _buildEcosystem(controller, defaults); ecosystemModelAddress = ecosystem.ecosystemModelAddress; controller = _controller; deployer = msg.sender; summoners = _summoners; - bool success = configurator.buildDAO(_summoners, _name, _maxVotingLambda, ecosystem); + bool success = _buildDAO(_summoners, _name, _maxVotingLambda, ecosystem); initialized = true; require(success, 'ElasticDAO: Build DAO Failed'); } /** - * @notice initializes the token of the DAO, using the Configurator + * @notice initializes the token of the DAO * * @param _name - name of the token * @param _symbol - symbol of the token @@ -157,7 +153,7 @@ contract ElasticDAO is ReentryProtection { Ecosystem.Instance memory ecosystem = _getEcosystem(); Token.Instance memory token = - Configurator(ecosystem.configuratorAddress).buildToken( + _buildToken( controller, _name, _symbol, @@ -439,6 +435,109 @@ contract ElasticDAO is ReentryProtection { return _getEcosystem(); } + /** + * @dev creates DAO.Instance record + * @param _summoners addresses of the summoners + * @param _name name of the DAO + * @param _ecosystem instance of Ecosystem the DAO uses + * @param _maxVotingLambda - the maximum amount of lambda that can be used to vote in the DAO + * @return bool true + */ + function _buildDAO( + address[] memory _summoners, + string memory _name, + uint256 _maxVotingLambda, + Ecosystem.Instance memory _ecosystem + ) internal returns (bool) { + DAO daoStorage = DAO(_ecosystem.daoModelAddress); + DAO.Instance memory dao; + + dao.uuid = address(this); + dao.ecosystem = _ecosystem; + dao.maxVotingLambda = _maxVotingLambda; + dao.name = _name; + dao.summoned = false; + dao.summoners = _summoners; + daoStorage.serialize(dao); + + return true; + } + + /** + * @dev Deploys proxies leveraging the implementation contracts found on the + * default Ecosystem.Instance record. + * @param _controller the address which can control the core DAO functions + * @param _defaults instance of Ecosystem with the implementation addresses + * @return ecosystem Ecosystem.Instance + */ + function _buildEcosystem(address _controller, Ecosystem.Instance memory _defaults) + internal + returns (Ecosystem.Instance memory ecosystem) + { + ecosystem.daoAddress = address(this); + ecosystem.daoModelAddress = _deployProxy(_defaults.daoModelAddress, _controller); + ecosystem.ecosystemModelAddress = _deployProxy(_defaults.ecosystemModelAddress, _controller); + ecosystem.governanceTokenAddress = _deployProxy(_defaults.governanceTokenAddress, _controller); + ecosystem.tokenHolderModelAddress = _deployProxy( + _defaults.tokenHolderModelAddress, + _controller + ); + ecosystem.tokenModelAddress = _deployProxy(_defaults.tokenModelAddress, _controller); + + Ecosystem(ecosystem.ecosystemModelAddress).serialize(ecosystem); + return ecosystem; + } + + /** + * @dev creates a Token.Instance record and initializes the ElasticGovernanceToken. + * @param _controller the address which can control the core DAO functions + * @param _name name of the token + * @param _symbol symbol of the token + * @param _eByL initial ETH/token ratio + * @param _elasticity the percentage by which capitalDelta should increase + * @param _k a constant, initially set by the DAO + * @param _maxLambdaPurchase maximum amount of lambda (shares) that can be + * minted on each call to the join function in ElasticDAO.sol + * @param _ecosystem the DAO's ecosystem instance + * @return token Token.Instance + */ + function _buildToken( + address _controller, + string memory _name, + string memory _symbol, + uint256 _eByL, + uint256 _elasticity, + uint256 _k, + uint256 _maxLambdaPurchase, + Ecosystem.Instance memory _ecosystem + ) internal returns (Token.Instance memory token) { + token.eByL = _eByL; + token.ecosystem = _ecosystem; + token.elasticity = _elasticity; + token.k = _k; + token.lambda = 0; + token.m = 1000000000000000000; + token.maxLambdaPurchase = _maxLambdaPurchase; + token.name = _name; + token.symbol = _symbol; + token.uuid = _ecosystem.governanceTokenAddress; + + // initialize the token within the ecosystem + return ElasticGovernanceToken(token.uuid).initialize( + _controller, + _controller, + _ecosystem, + token + ); + } + + function _deployProxy(address _implementationAddress, address _owner) internal returns (address) { + PProxy proxy = new PProxy(); + proxy.setImplementation(_implementationAddress); + proxy.setProxyOwner(_owner); + return address(proxy); + } + // Private function _getDAO() internal view returns (DAO.Instance memory) { diff --git a/src/models/DAO.sol b/src/models/DAO.sol index 67a4dda..02e67fb 100644 --- a/src/models/DAO.sol +++ b/src/models/DAO.sol @@ -76,10 +76,7 @@ contract DAO is EternalModel, ReentryProtection { * @param _record Instance */ function serialize(Instance memory _record) external preventReentry { - require( - msg.sender == _record.uuid || msg.sender == _record.ecosystem.configuratorAddress, - 'ElasticDAO: Unauthorized' - ); + require(msg.sender == _record.uuid, 'ElasticDAO: Unauthorized'); setUint(keccak256(abi.encode(_record.uuid, 'maxVotingLambda')), _record.maxVotingLambda); setString(keccak256(abi.encode(_record.uuid, 'name')), _record.name); diff --git a/src/models/Ecosystem.sol b/src/models/Ecosystem.sol index 38a237c..9ac22d8 100644 --- a/src/models/Ecosystem.sol +++ b/src/models/Ecosystem.sol @@ -22,8 +22,6 @@ contract Ecosystem is EternalModel, ReentryProtection { address ecosystemModelAddress; address tokenHolderModelAddress; address tokenModelAddress; - // Services - address configuratorAddress; // Tokens address governanceTokenAddress; } @@ -38,9 +36,6 @@ contract Ecosystem is EternalModel, ReentryProtection { function deserialize(address _daoAddress) external view returns (Instance memory record) { if (_exists(_daoAddress)) { record.daoAddress = _daoAddress; - record.configuratorAddress = getAddress( - keccak256(abi.encode(record.daoAddress, 'configuratorAddress')) - ); record.daoModelAddress = getAddress( keccak256(abi.encode(record.daoAddress, 'daoModelAddress')) ); @@ -76,16 +71,10 @@ contract Ecosystem is EternalModel, ReentryProtection { bool recordExists = _exists(_record.daoAddress); require( - msg.sender == _record.daoAddress || - msg.sender == _record.configuratorAddress || - (_record.daoAddress == address(0) && !recordExists), + msg.sender == _record.daoAddress || (_record.daoAddress == address(0) && !recordExists), 'ElasticDAO: Unauthorized' ); - setAddress( - keccak256(abi.encode(_record.daoAddress, 'configuratorAddress')), - _record.configuratorAddress - ); setAddress( keccak256(abi.encode(_record.daoAddress, 'daoModelAddress')), _record.daoModelAddress diff --git a/src/models/Token.sol b/src/models/Token.sol index 1e392fa..9b13f54 100644 --- a/src/models/Token.sol +++ b/src/models/Token.sol @@ -46,23 +46,35 @@ contract Token is EternalModel, ReentryProtection { record.uuid = _uuid; record.ecosystem = _ecosystem; - if (_exists(_uuid)) { - record.eByL = getUint(keccak256(abi.encode(_uuid, 'eByL'))); - record.elasticity = getUint(keccak256(abi.encode(_uuid, 'elasticity'))); - record.k = getUint(keccak256(abi.encode(_uuid, 'k'))); - record.lambda = getUint(keccak256(abi.encode(_uuid, 'lambda'))); - record.m = getUint(keccak256(abi.encode(_uuid, 'm'))); - record.maxLambdaPurchase = getUint(keccak256(abi.encode(_uuid, 'maxLambdaPurchase'))); - record.name = getString(keccak256(abi.encode(_uuid, 'name'))); - record.numberOfTokenHolders = getUint(keccak256(abi.encode(_uuid, 'numberOfTokenHolders'))); - record.symbol = getString(keccak256(abi.encode(_uuid, 'symbol'))); + if (_exists(_uuid, _ecosystem.daoAddress)) { + record.eByL = getUint(keccak256(abi.encode(_uuid, record.ecosystem.daoAddress, 'eByL'))); + record.elasticity = getUint( + keccak256(abi.encode(_uuid, record.ecosystem.daoAddress, 'elasticity')) + ); + record.k = getUint(keccak256(abi.encode(_uuid, record.ecosystem.daoAddress, 'k'))); + record.lambda = getUint(keccak256(abi.encode(_uuid, record.ecosystem.daoAddress, 'lambda'))); + record.m = getUint(keccak256(abi.encode(_uuid, record.ecosystem.daoAddress, 'm'))); + record.maxLambdaPurchase = getUint( + keccak256(abi.encode(_uuid, record.ecosystem.daoAddress, 'maxLambdaPurchase')) + ); + record.name = getString(keccak256(abi.encode(_uuid, record.ecosystem.daoAddress, 'name'))); + record.numberOfTokenHolders = getUint( + keccak256(abi.encode(_uuid, record.ecosystem.daoAddress, 'numberOfTokenHolders')) + ); + record.symbol = getString( + keccak256(abi.encode(_uuid, record.ecosystem.daoAddress, 'symbol')) + ); } return record; } - function exists(address _uuid, Ecosystem.Instance memory) external view returns (bool) { - return _exists(_uuid); + function exists(address _uuid, Ecosystem.Instance memory _ecosystem) + external + view + returns (bool) + { + return _exists(_uuid, _ecosystem.daoAddress); } /** @@ -72,21 +84,39 @@ contract Token is EternalModel, ReentryProtection { function serialize(Instance memory _record) external preventReentry { require( msg.sender == _record.uuid || - msg.sender == _record.ecosystem.daoAddress || - (msg.sender == _record.ecosystem.configuratorAddress && !_exists(_record.uuid)), + (msg.sender == _record.ecosystem.daoAddress && + _exists(_record.uuid, _record.ecosystem.daoAddress)), 'ElasticDAO: Unauthorized' ); - setString(keccak256(abi.encode(_record.uuid, 'name')), _record.name); - setString(keccak256(abi.encode(_record.uuid, 'symbol')), _record.symbol); - setUint(keccak256(abi.encode(_record.uuid, 'eByL')), _record.eByL); - setUint(keccak256(abi.encode(_record.uuid, 'elasticity')), _record.elasticity); - setUint(keccak256(abi.encode(_record.uuid, 'k')), _record.k); - setUint(keccak256(abi.encode(_record.uuid, 'lambda')), _record.lambda); - setUint(keccak256(abi.encode(_record.uuid, 'm')), _record.m); - setUint(keccak256(abi.encode(_record.uuid, 'maxLambdaPurchase')), _record.maxLambdaPurchase); + setString( + keccak256(abi.encode(_record.uuid, _record.ecosystem.daoAddress, 'name')), + _record.name + ); + setString( + keccak256(abi.encode(_record.uuid, _record.ecosystem.daoAddress, 'symbol')), + _record.symbol + ); + setUint( + keccak256(abi.encode(_record.uuid, _record.ecosystem.daoAddress, 'eByL')), + _record.eByL + ); + setUint( + keccak256(abi.encode(_record.uuid, _record.ecosystem.daoAddress, 'elasticity')), + _record.elasticity + ); + setUint(keccak256(abi.encode(_record.uuid, _record.ecosystem.daoAddress, 'k')), _record.k); + setUint( + keccak256(abi.encode(_record.uuid, _record.ecosystem.daoAddress, 'lambda')), + _record.lambda + ); + setUint(keccak256(abi.encode(_record.uuid, _record.ecosystem.daoAddress, 'm')), _record.m); + setUint( + keccak256(abi.encode(_record.uuid, _record.ecosystem.daoAddress, 'maxLambdaPurchase')), + _record.maxLambdaPurchase + ); - setBool(keccak256(abi.encode(_record.uuid, 'exists')), true); + setBool(keccak256(abi.encode(_record.uuid, _record.ecosystem.daoAddress, 'exists')), true); emit Serialized(_record.uuid); } @@ -95,10 +125,13 @@ contract Token is EternalModel, ReentryProtection { external preventReentry { - setUint(keccak256(abi.encode(_record.uuid, 'numberOfTokenHolders')), numberOfTokenHolders); + setUint( + keccak256(abi.encode(_record.uuid, _record.ecosystem.daoAddress, 'numberOfTokenHolders')), + numberOfTokenHolders + ); } - function _exists(address _uuid) internal view returns (bool) { - return getBool(keccak256(abi.encode(_uuid, 'exists'))); + function _exists(address _uuid, address _daoAddress) internal view returns (bool) { + return getBool(keccak256(abi.encode(_uuid, _daoAddress, 'exists'))); } } diff --git a/src/services/Configurator.sol b/src/services/Configurator.sol deleted file mode 100644 index 6440fbc..0000000 --- a/src/services/Configurator.sol +++ /dev/null @@ -1,128 +0,0 @@ -// SPDX-License-Identifier: GPLv3 -pragma solidity 0.7.2; -pragma experimental ABIEncoderV2; - -import '../models/DAO.sol'; -import '../models/Ecosystem.sol'; -import '../models/Token.sol'; - -import '../tokens/ElasticGovernanceToken.sol'; - -import '@pie-dao/proxy/contracts/PProxy.sol'; - -/** - * @notice This contract is used for configuring ElasticDAOs - * @dev The main reason for having this is to decrease the size of ElasticDAO.sol - */ -contract Configurator { - /** - * @dev creates DAO.Instance record - * @param _summoners addresses of the summoners - * @param _name name of the DAO - * @param _ecosystem instance of Ecosystem the DAO uses - * @param _maxVotingLambda - the maximum amount of lambda that can be used to vote in the DAO - * @return bool true - */ - function buildDAO( - address[] memory _summoners, - string memory _name, - uint256 _maxVotingLambda, - Ecosystem.Instance memory _ecosystem - ) external returns (bool) { - DAO daoStorage = DAO(_ecosystem.daoModelAddress); - DAO.Instance memory dao; - - dao.uuid = msg.sender; - dao.ecosystem = _ecosystem; - dao.maxVotingLambda = _maxVotingLambda; - dao.name = _name; - dao.summoned = false; - dao.summoners = _summoners; - daoStorage.serialize(dao); - - return true; - } - - /** - * @dev Deploys proxies leveraging the implementation contracts found on the - * default Ecosystem.Instance record. - * @param _controller the address which can control the core DAO functions - * @param _defaults instance of Ecosystem with the implementation addresses - * @return ecosystem Ecosystem.Instance - */ - function buildEcosystem(address _controller, Ecosystem.Instance memory _defaults) - external - returns (Ecosystem.Instance memory ecosystem) - { - ecosystem.configuratorAddress = _defaults.configuratorAddress; - ecosystem.daoAddress = msg.sender; - ecosystem.daoModelAddress = _deployProxy(_defaults.daoModelAddress, _controller); - ecosystem.ecosystemModelAddress = _deployProxy(_defaults.ecosystemModelAddress, _controller); - ecosystem.governanceTokenAddress = _deployProxy(_defaults.governanceTokenAddress, _controller); - ecosystem.tokenHolderModelAddress = _deployProxy( - _defaults.tokenHolderModelAddress, - _controller - ); - ecosystem.tokenModelAddress = _deployProxy(_defaults.tokenModelAddress, _controller); - - Ecosystem(ecosystem.ecosystemModelAddress).serialize(ecosystem); - return ecosystem; - } - - /** - * @dev creates a Token.Instance record and initializes the ElasticGovernanceToken. - * @param _controller the address which can control the core DAO functions - * @param _name name of the token - * @param _symbol symbol of the token - * @param _eByL initial ETH/token ratio - * @param _elasticity the percentage by which capitalDelta should increase - * @param _k a constant, initially set by the DAO - * @param _maxLambdaPurchase maximum amount of lambda (shares) that can be - * minted on each call to the join function in ElasticDAO.sol - * @param _ecosystem the DAO's ecosystem instance - * @return token Token.Instance - */ - function buildToken( - address _controller, - string memory _name, - string memory _symbol, - uint256 _eByL, - uint256 _elasticity, - uint256 _k, - uint256 _maxLambdaPurchase, - Ecosystem.Instance memory _ecosystem - ) external returns (Token.Instance memory token) { - Token tokenStorage = Token(_ecosystem.tokenModelAddress); - token.eByL = _eByL; - token.ecosystem = _ecosystem; - token.elasticity = _elasticity; - token.k = _k; - token.lambda = 0; - token.m = 1000000000000000000; - token.maxLambdaPurchase = _maxLambdaPurchase; - token.name = _name; - token.symbol = _symbol; - token.uuid = _ecosystem.governanceTokenAddress; - - // initialize the token within the ecosystem - ElasticGovernanceToken(token.uuid).initialize( - _controller, - _ecosystem.daoAddress, - _ecosystem.ecosystemModelAddress, - _controller - ); - - // serialize ecosystem and token - Ecosystem(_ecosystem.ecosystemModelAddress).serialize(_ecosystem); - tokenStorage.serialize(token); - - return token; - } - - function _deployProxy(address _implementationAddress, address _owner) internal returns (address) { - PProxy proxy = new PProxy(); - proxy.setImplementation(_implementationAddress); - proxy.setProxyOwner(_owner); - return address(proxy); - } -} diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index e2b9b81..7f2c145 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -47,9 +47,9 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { * @notice initializes the ElasticGovernanceToken * * @param _burner - the address which can burn tokens - * @param _daoAddress - the address of the deployed ElasticDAO - * @param _ecosystemModelAddress - the address of the ecosystem model * @param _minter - the address which can mint tokens + * @param _ecosystem - Ecosystem Instance + * @param _token - Token Instance * * @dev Requirements: * - The token should not already be initialized @@ -62,23 +62,26 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { */ function initialize( address _burner, - address _daoAddress, - address _ecosystemModelAddress, - address _minter - ) external preventReentry returns (bool) { + address _minter, + Ecosystem.Instance memory _ecosystem, + Token.Instance memory _token + ) external preventReentry returns (Token.Instance memory) { require(initialized == false, 'ElasticDAO: Already initialized'); require(_burner != address(0), 'ElasticDAO: Address Zero'); - require(_daoAddress != address(0), 'ElasticDAO: Address Zero'); - require(_ecosystemModelAddress != address(0), 'ElasticDAO: Address Zero'); + require(_ecosystem.daoAddress != address(0), 'ElasticDAO: Address Zero'); + require(_ecosystem.ecosystemModelAddress != address(0), 'ElasticDAO: Address Zero'); require(_minter != address(0), 'ElasticDAO: Address Zero'); initialized = true; burner = _burner; - daoAddress = _daoAddress; - ecosystemModelAddress = _ecosystemModelAddress; + daoAddress = _ecosystem.daoAddress; + ecosystemModelAddress = _ecosystem.ecosystemModelAddress; minter = _minter; - return true; + Token tokenStorage = Token(_ecosystem.tokenModelAddress); + tokenStorage.serialize(_token); + + return _token; } /** diff --git a/test/ecosystemTests.js b/test/ecosystemTests.js index 8a5d3bc..822798c 100644 --- a/test/ecosystemTests.js +++ b/test/ecosystemTests.js @@ -17,7 +17,6 @@ describe('ElasticDAO: Ecosystem Model', () => { }); it('Should look up and return ecosystem instance record by uuid address', async () => { - const Configurator = await deployments.get('Configurator'); const DAO = await deployments.get('DAO'); const ElasticGovernanceToken = await deployments.get('ElasticGovernanceToken'); const TokenHolder = await deployments.get('TokenHolder'); @@ -25,7 +24,6 @@ describe('ElasticDAO: Ecosystem Model', () => { const record = await ecosystemStorage.deserialize(ethers.constants.AddressZero); - expect(record.configuratorAddress).to.equal(Configurator.address); expect(record.daoAddress).to.equal(ethers.constants.AddressZero); expect(record.daoModelAddress).to.equal(DAO.address); expect(record.ecosystemModelAddress).to.equal(Ecosystem.address); From a6310cec37901d1c4b0ab3856929842525b427c1 Mon Sep 17 00:00:00 2001 From: AlleyCat <69900836+alleycatdev@users.noreply.github.com> Date: Fri, 5 Mar 2021 14:06:56 -0500 Subject: [PATCH 081/118] Audit fix/bad behaving penalties#25 (#44) * fixes penalties * removes only on test --- src/core/ElasticDAO.sol | 17 ++++++++++- src/tokens/ElasticGovernanceToken.sol | 2 +- test/elasticDAOFactoryTest.js | 43 +++++++++++++-------------- test/elasticDAOTests.js | 39 ++++++++++++++++++++++-- 4 files changed, 74 insertions(+), 27 deletions(-) diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index 4432d61..7e3ba9e 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -35,6 +35,11 @@ contract ElasticDAO is ReentryProtection { uint256 shareAmount, uint256 ethAmount ); + event FailedToFullyPenalize( + address indexed memberAddress, + uint256 attemptedAmount, + uint256 actualAmount + ); event JoinDAO( address indexed daoAddress, address indexed memberAddress, @@ -290,7 +295,17 @@ contract ElasticDAO is ReentryProtection { ElasticGovernanceToken tokenContract = ElasticGovernanceToken(_getToken().uuid); for (uint256 i = 0; i < _addresses.length; i += 1) { - tokenContract.burnShares(_addresses[i], _amounts[i]); + uint256 lambda = tokenContract.balanceOfInShares(_addresses[i]); + + if(lambda < _amounts[i]) { + if(lambda != 0) { + tokenContract.burnShares(_addresses[i], lambda); + } + + FailedToFullyPenalize(_addresses[i], _amounts[i], lambda); + } else { + tokenContract.burnShares(_addresses[i], _amounts[i]); + } } } diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index 7f2c145..498730d 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -546,7 +546,7 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { if (_isIncreasing) { _tokenHolder.lambda = SafeMath.add(_tokenHolder.lambda, _deltaLambda); } else { - _tokenHolder.lambda = SafeMath.sub(_tokenHolder.lambda, _deltaLambda); + _tokenHolder.lambda = SafeMath.sub(_tokenHolder.lambda, _deltaLambda); } return _tokenHolder; diff --git a/test/elasticDAOFactoryTest.js b/test/elasticDAOFactoryTest.js index b8b1119..62d3eee 100644 --- a/test/elasticDAOFactoryTest.js +++ b/test/elasticDAOFactoryTest.js @@ -101,18 +101,6 @@ describe('ElasticDAO: Factory', () => { ).to.be.revertedWith('ElasticDAO: Only manager'); }); - it('Should updateFeeAddress', async () => { - const { agent, summoner2 } = await signers(); - - sdk.changeSigner(agent); - - const tx = await sdk.elasticDAOFactory.contract.updateFeeAddress(summoner2.address); - const logs = await tx.wait(1); - - expect(logs.events[0].event).to.equal('FeeAddressUpdated'); - expect(logs.events[0].args.feeReceiver).to.equal(summoner2.address); - }); - it('Should not updateFeeAddress when caller is not the manager', async () => { const { summoner2 } = await signers(); @@ -149,6 +137,27 @@ describe('ElasticDAO: Factory', () => { ).to.be.revertedWith('ElasticDAO: Only manager'); }); + it('Should not collect fees to the feeAddress if feeAddress is not set', async () => { + const { agent } = await signers(); + + sdk.changeSigner(agent); + await expect(sdk.elasticDAOFactory.collectFees()).to.be.revertedWith( + 'ElasticDAO: No feeAddress set', + ); + }); + + it('Should updateFeeAddress', async () => { + const { agent, summoner2 } = await signers(); + + sdk.changeSigner(agent); + + const tx = await sdk.elasticDAOFactory.contract.updateFeeAddress(summoner2.address); + const logs = await tx.wait(1); + + expect(logs.events[0].event).to.equal('FeeAddressUpdated'); + expect(logs.events[0].args.feeReceiver).to.equal(summoner2.address); + }); + it('Should collect fees to the feeAddress', async () => { const { agent } = await signers(); @@ -165,14 +174,4 @@ describe('ElasticDAO: Factory', () => { expect(logs.events[0].args.feeAddress).to.equal(agent.address); expect(logs.events[0].args.amount).to.equal(feeAmountToCollect); }); - - it('Should not collect fees to the feeAddress if feeAddress is not set', async () => { - const { agent } = await signers(); - - sdk.changeSigner(agent); - - await expect(sdk.elasticDAOFactory.collectFees()).to.be.revertedWith( - 'ElasticDAO: No feeAddress set', - ); - }); }); diff --git a/test/elasticDAOTests.js b/test/elasticDAOTests.js index 17b5942..c428d69 100644 --- a/test/elasticDAOTests.js +++ b/test/elasticDAOTests.js @@ -269,7 +269,7 @@ describe('ElasticDAO: Core', () => { it('Should not allow exit with too many shares', async () => { const totalShares = await dao.elasticGovernanceToken.totalSupplyInShares(); - await expect(dao.elasticDAO.exit(totalShares)).to.be.revertedWith( + await expect(dao.elasticDAO.exit(totalShares + 1)).to.be.revertedWith( 'SafeMath: subtraction overflow', ); }); @@ -305,7 +305,7 @@ describe('ElasticDAO: Core', () => { const { agent } = await signers(); const addresses = await summoners(); const amount = 0.01; - const rewards = addresses.map(() => dao.elasticDAO.toEthersBigNumber(amount, 18)); + const penalties = addresses.map(() => dao.elasticDAO.toEthersBigNumber(amount, 18)); const balances = await Promise.all( addresses.map((address) => dao.elasticGovernanceToken.balanceOfInShares(address)), @@ -314,7 +314,7 @@ describe('ElasticDAO: Core', () => { dao.sdk.changeSigner(agent); - await dao.elasticDAO.contract.penalize(addresses, rewards); + await dao.elasticDAO.contract.penalize(addresses, penalties); const newBalances = await Promise.all( addresses.map(async (address) => { @@ -327,5 +327,38 @@ describe('ElasticDAO: Core', () => { expect(expectedBalances[i]).to.equal(newBalances[i]); } }); + + it('Should allow multiple addresses to be penalized even if one tries to front run', async () => { + const { agent } = await signers(); + const addresses = await summoners(); + const amount = 0.01; + const penalties = addresses.map(() => dao.elasticDAO.toEthersBigNumber(amount, 18)); + + const balances = await Promise.all( + addresses.map((address) => dao.elasticGovernanceToken.balanceOfInShares(address)), + ); + const expectedBalances = balances.map((balance) => balance.minus(amount).toNumber()); + + // attempt to front run the penalty + await dao.elasticDAO.exit(10.09); + + dao.sdk.changeSigner(agent); + await dao.elasticDAO.contract.penalize(addresses, penalties); + + const newBalances = await Promise.all( + addresses.map(async (address) => { + const balance = await dao.elasticGovernanceToken.balanceOfInShares(address); + return balance.toNumber(); + }), + ); + + for (let i = 0; i < expectedBalances.length; i += 1) { + if (i === 0) { + expect(newBalances[i]).to.equal(0); + } else { + expect(expectedBalances[i]).to.equal(newBalances[i]); + } + } + }); }); }); From 25944f3433dc8c4df1e6bd9b11fccaa210e43085 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Fri, 5 Mar 2021 22:13:03 +0200 Subject: [PATCH 082/118] Audit fix/logic check#27 (#47) * fixes penalties * removes only on test * fixes guard logic in ElasticDAO.initialize Co-authored-by: alleycatdev --- src/core/ElasticDAO.sol | 2 +- test/elasticDAOTests.js | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index 7e3ba9e..c3b6a75 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -112,7 +112,7 @@ contract ElasticDAO is ReentryProtection { ) external preventReentry { require(initialized == false, 'ElasticDAO: Already initialized'); require( - _ecosystemModelAddress != address(0) || _controller != address(0), + _ecosystemModelAddress != address(0) && _controller != address(0), 'ElasticDAO: Address Zero' ); require(_summoners.length > 0, 'ElasticDAO: At least 1 summoner required'); diff --git a/test/elasticDAOTests.js b/test/elasticDAOTests.js index c428d69..03f16d4 100644 --- a/test/elasticDAOTests.js +++ b/test/elasticDAOTests.js @@ -7,6 +7,45 @@ const { ethBalance, SDK, signers, summoners, summonedDAO } = require('./helpers' describe('ElasticDAO: Core', () => { let dao; + describe('before initialize', () => { + it('should revert if ecosystem model address is 0', async () => { + const sdk = await SDK(); + const { summoner1 } = await signers(); + + const args = [ + ethers.constants.AddressZero, + summoner1.address, + await summoners(), + 'ElasticDAO', + sdk.elasticDAOFactory.toEthersBigNumber(1, 18), + ]; + + const ElasticDAO = await hre.getContractFactory('ElasticDAO'); + const elasticDAO = await ElasticDAO.deploy(); + + await expect(elasticDAO.initialize(...args)).to.be.revertedWith('ElasticDAO: Address Zero'); + }); + + it('should revert if controller address is 0', async () => { + const sdk = await SDK(); + + const Ecosystem = await deployments.get('Ecosystem'); + + const args = [ + Ecosystem.address, + ethers.constants.AddressZero, + await summoners(), + 'ElasticDAO', + sdk.elasticDAOFactory.toEthersBigNumber(1, 18), + ]; + + const ElasticDAO = await hre.getContractFactory('ElasticDAO'); + const elasticDAO = await ElasticDAO.deploy(); + + await expect(elasticDAO.initialize(...args)).to.be.revertedWith('ElasticDAO: Address Zero'); + }); + }); + describe('before summoning', () => { let sdk; From 4a65740dcd79b200f10e3c7b88c2b48263386bb9 Mon Sep 17 00:00:00 2001 From: smalldutta <49087443+smalldutta@users.noreply.github.com> Date: Fri, 5 Mar 2021 22:35:26 +0200 Subject: [PATCH 083/118] uses SafeMath for ElasticDAO capitalDelta calculation (#48) * uses SafeMath for ElasticDAO capitalDelta calculation * refactors for linting --- src/core/ElasticDAO.sol | 14 +++++--------- src/tokens/ElasticGovernanceToken.sol | 2 +- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index c3b6a75..05abe3c 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -240,7 +240,7 @@ contract ElasticDAO is ReentryProtection { ElasticMath.capitalDelta( // the current totalBalance of the DAO is inclusive of msg.value, // capitalDelta is to be calculated without the msg.value - address(this).balance - msg.value, + SafeMath.sub(address(this).balance, msg.value), tokenContract.totalSupply() ); uint256 deltaE = @@ -297,8 +297,8 @@ contract ElasticDAO is ReentryProtection { for (uint256 i = 0; i < _addresses.length; i += 1) { uint256 lambda = tokenContract.balanceOfInShares(_addresses[i]); - if(lambda < _amounts[i]) { - if(lambda != 0) { + if (lambda < _amounts[i]) { + if (lambda != 0) { tokenContract.burnShares(_addresses[i], lambda); } @@ -538,12 +538,8 @@ contract ElasticDAO is ReentryProtection { token.uuid = _ecosystem.governanceTokenAddress; // initialize the token within the ecosystem - return ElasticGovernanceToken(token.uuid).initialize( - _controller, - _controller, - _ecosystem, - token - ); + return + ElasticGovernanceToken(token.uuid).initialize(_controller, _controller, _ecosystem, token); } function _deployProxy(address _implementationAddress, address _owner) internal returns (address) { diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index 498730d..7f2c145 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -546,7 +546,7 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { if (_isIncreasing) { _tokenHolder.lambda = SafeMath.add(_tokenHolder.lambda, _deltaLambda); } else { - _tokenHolder.lambda = SafeMath.sub(_tokenHolder.lambda, _deltaLambda); + _tokenHolder.lambda = SafeMath.sub(_tokenHolder.lambda, _deltaLambda); } return _tokenHolder; From 7df80f6eff03c40eda9dd3abf7a5e801dd32cc21 Mon Sep 17 00:00:00 2001 From: AlleyCat <69900836+alleycatdev@users.noreply.github.com> Date: Mon, 8 Mar 2021 06:36:33 -0500 Subject: [PATCH 084/118] updates div to not pass message for gas savings (#46) --- src/libraries/ElasticMath.sol | 8 ++++++-- src/libraries/SafeMath.sol | 22 ++++++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/libraries/ElasticMath.sol b/src/libraries/ElasticMath.sol index b0f05ac..8a21312 100644 --- a/src/libraries/ElasticMath.sol +++ b/src/libraries/ElasticMath.sol @@ -144,7 +144,11 @@ library ElasticMath { * @return uint256 */ function wmul(uint256 a, uint256 b) internal pure returns (uint256) { - return SafeMath.add(SafeMath.mul(a, b), 1000000000000000000 / 2) / 1000000000000000000; + return + SafeMath.div( + SafeMath.add(SafeMath.mul(a, b), SafeMath.div(1000000000000000000, 2)), + 1000000000000000000 + ); } /** @@ -156,6 +160,6 @@ library ElasticMath { * @return uint256 */ function wdiv(uint256 a, uint256 b) internal pure returns (uint256) { - return SafeMath.add(SafeMath.mul(a, 1000000000000000000), b / 2) / b; + return SafeMath.div(SafeMath.add(SafeMath.mul(a, 1000000000000000000), SafeMath.div(b, 2)), b); } } diff --git a/src/libraries/SafeMath.sol b/src/libraries/SafeMath.sol index 71ba2cb..092036d 100644 --- a/src/libraries/SafeMath.sol +++ b/src/libraries/SafeMath.sol @@ -91,4 +91,26 @@ library SafeMath { return z; } } + + /** + * @dev Returns the integer division of two unsigned integers. Reverts with custom message on + * division by zero. The result is rounded towards zero. + * + * Counterpart to Solidity's `/` operator. Note: this function uses a + * `revert` opcode (which leaves remaining gas untouched) while Solidity + * uses an invalid opcode to revert (consuming all remaining gas). + * + * Requirements: + * - The divisor cannot be zero. + */ + function div( + uint256 a, + uint256 b + ) internal pure returns (uint256) { + // Solidity only automatically asserts when dividing by 0 + uint256 c = a / b; + require(c > 0, 'SafeMath: division by zero'); + + return c; + } } From 3f79462d02a85b41b2e72f9124637ecbb2f90e82 Mon Sep 17 00:00:00 2001 From: AlleyCat <69900836+alleycatdev@users.noreply.github.com> Date: Mon, 8 Mar 2021 06:45:48 -0500 Subject: [PATCH 085/118] replaces double invocation of _getEcosystem with variable version (#49) --- src/core/ElasticDAO.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index 05abe3c..ccae184 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -57,7 +57,7 @@ contract ElasticDAO is ReentryProtection { modifier onlyAfterTokenInitialized() { Ecosystem.Instance memory ecosystem = _getEcosystem(); bool tokenInitialized = - Token(_getEcosystem().tokenModelAddress).exists(ecosystem.governanceTokenAddress, ecosystem); + Token(ecosystem.tokenModelAddress).exists(ecosystem.governanceTokenAddress, ecosystem); require(tokenInitialized, 'ElasticDAO: Please call initializeToken first'); _; } From bd5eac634ceaefc5179e98f90e59b25ca888c274 Mon Sep 17 00:00:00 2001 From: AlleyCat <69900836+alleycatdev@users.noreply.github.com> Date: Mon, 8 Mar 2021 06:55:55 -0500 Subject: [PATCH 086/118] removes import of safemath when we import elasticmath (#50) --- src/core/ElasticDAO.sol | 1 - src/tokens/ElasticGovernanceToken.sol | 1 - 2 files changed, 2 deletions(-) diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index ccae184..098b315 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -3,7 +3,6 @@ pragma solidity 0.7.2; pragma experimental ABIEncoderV2; import '../libraries/ElasticMath.sol'; -import '../libraries/SafeMath.sol'; import '../models/DAO.sol'; import '../models/Ecosystem.sol'; diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index 7f2c145..4b1f48b 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -4,7 +4,6 @@ pragma experimental ABIEncoderV2; import '../interfaces/IElasticToken.sol'; -import '../libraries/SafeMath.sol'; import '../libraries/ElasticMath.sol'; import '../core/ElasticDAO.sol'; From cda5501d59deb483bad2bcb29f64fcb0581a999e Mon Sep 17 00:00:00 2001 From: AlleyCat <69900836+alleycatdev@users.noreply.github.com> Date: Mon, 8 Mar 2021 07:04:31 -0500 Subject: [PATCH 087/118] replaces deployedDAOCount with a function call of the same name to DAOAddresses.length (#51) --- src/core/ElasticDAOFactory.sol | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/core/ElasticDAOFactory.sol b/src/core/ElasticDAOFactory.sol index cf3a768..d1074d3 100644 --- a/src/core/ElasticDAOFactory.sol +++ b/src/core/ElasticDAOFactory.sol @@ -20,7 +20,6 @@ contract ElasticDAOFactory is ReentryProtection { address public manager; address payable feeAddress; address[] public deployedDAOAddresses; - uint256 public deployedDAOCount; uint256 public fee; bool public initialized = false; @@ -55,7 +54,6 @@ contract ElasticDAOFactory is ReentryProtection { 'ElasticDAO: Address Zero' ); - deployedDAOCount = 0; ecosystemModelAddress = _ecosystemModelAddress; elasticDAOImplementationAddress = _elasticDAOImplementationAddress; fee = 250000000000000000; @@ -128,7 +126,6 @@ contract ElasticDAOFactory is ReentryProtection { ); deployedDAOAddresses.push(daoAddress); - deployedDAOCount = SafeMath.add(deployedDAOCount, 1); // initialize the token ElasticDAO(daoAddress).initializeToken( @@ -142,6 +139,13 @@ contract ElasticDAOFactory is ReentryProtection { emit DeployedDAO(daoAddress); } + /** + * @notice returns deployed DAO count + */ + function deployedDAOCount() external view returns (uint) { + return deployedDAOAddresses.length; + } + /** * @notice updates the address of the elasticDAO implementation * @param _elasticDAOImplementationAddress - the new address From 9b801c1f1a5da32780f2bc0d6b1158bd85476894 Mon Sep 17 00:00:00 2001 From: AlleyCat <69900836+alleycatdev@users.noreply.github.com> Date: Mon, 8 Mar 2021 07:17:51 -0500 Subject: [PATCH 088/118] calculates t from Lambda and emits it in the Transfer event (#52) --- src/tokens/ElasticGovernanceToken.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index 4b1f48b..97561a5 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -478,7 +478,7 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { TokenHolder tokenHolderStorage = TokenHolder(ecosystem.tokenHolderModelAddress); tokenHolderStorage.serialize(tokenHolder); _updateNumberOfTokenHolders(alreadyTokenHolder, token, tokenHolder, tokenStorage); - emit Transfer(_account, address(0), _deltaLambda); + emit Transfer(_account, address(0), ElasticMath.t(_deltaLambda, token.k, token.m)); } function _mint(address _account, uint256 _deltaT) internal { From caa95b5b13813d016273bb787772afcf32205406 Mon Sep 17 00:00:00 2001 From: AlleyCat <69900836+alleycatdev@users.noreply.github.com> Date: Mon, 8 Mar 2021 07:28:10 -0500 Subject: [PATCH 089/118] adds gaurd to updateNumberOfTokenHolders (#53) --- src/models/Token.sol | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/models/Token.sol b/src/models/Token.sol index 9b13f54..a63dc21 100644 --- a/src/models/Token.sol +++ b/src/models/Token.sol @@ -125,6 +125,11 @@ contract Token is EternalModel, ReentryProtection { external preventReentry { + require( + msg.sender == _record.uuid && _exists(_record.uuid, _record.ecosystem.daoAddress), + 'ElasticDAO: Unauthorized' + ); + setUint( keccak256(abi.encode(_record.uuid, _record.ecosystem.daoAddress, 'numberOfTokenHolders')), numberOfTokenHolders From ea4a0fdd178bd4649ce4d6a0da779003a8fbe45c Mon Sep 17 00:00:00 2001 From: AlleyCat <69900836+alleycatdev@users.noreply.github.com> Date: Mon, 8 Mar 2021 07:37:54 -0500 Subject: [PATCH 090/118] removes minter from onlyDAO (#54) --- src/tokens/ElasticGovernanceToken.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index 97561a5..ea08a7c 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -28,7 +28,7 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { mapping(address => mapping(address => uint256)) private _allowances; modifier onlyDAO() { - require(msg.sender == daoAddress || msg.sender == minter, 'ElasticDAO: Not authorized'); + require(msg.sender == daoAddress, 'ElasticDAO: Not authorized'); _; } From b0047fd2b5dcfa6db6c3f6f5e8979e70aa5d6c68 Mon Sep 17 00:00:00 2001 From: AlleyCat <69900836+alleycatdev@users.noreply.github.com> Date: Mon, 8 Mar 2021 07:50:19 -0500 Subject: [PATCH 091/118] removes daoAddress from ElasticDAO.sol events (#55) --- src/core/ElasticDAO.sol | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index 098b315..6a90012 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -26,10 +26,9 @@ contract ElasticDAO is ReentryProtection { bool public initialized; event ElasticGovernanceTokenDeployed(address indexed tokenAddress); - event MaxVotingLambdaChanged(address indexed daoAddress, bytes32 settingName, uint256 value); - event ControllerChanged(address indexed daoAddress, bytes32 settingName, address value); + event MaxVotingLambdaChanged(bytes32 settingName, uint256 value); + event ControllerChanged(bytes32 settingName, address value); event ExitDAO( - address indexed daoAddress, address indexed memberAddress, uint256 shareAmount, uint256 ethAmount @@ -40,13 +39,12 @@ contract ElasticDAO is ReentryProtection { uint256 actualAmount ); event JoinDAO( - address indexed daoAddress, address indexed memberAddress, uint256 shareAmount, uint256 ethAmount ); - event SeedDAO(address indexed daoAddress, address indexed summonerAddress, uint256 amount); - event SummonedDAO(address indexed daoAddress, address indexed summonedBy); + event SeedDAO(address indexed summonerAddress, uint256 amount); + event SummonedDAO(address indexed summonedBy); modifier onlyAfterSummoning() { DAO.Instance memory dao = _getDAO(); @@ -197,7 +195,7 @@ contract ElasticDAO is ReentryProtection { tokenContract.burnShares(msg.sender, _deltaLambda); (bool success, ) = msg.sender.call{ value: ethToBeTransfered }(''); require(success, 'ElasticDAO: Exit Failed'); - emit ExitDAO(address(this), msg.sender, _deltaLambda, ethToBeTransfered); + emit ExitDAO(msg.sender, _deltaLambda, ethToBeTransfered); } /** @@ -269,7 +267,7 @@ contract ElasticDAO is ReentryProtection { // tokencontract mint shares bool success = tokenContract.mintShares(msg.sender, _deltaLambda); require(success, 'ElasticDAO: Mint Shares Failed during Join'); - emit JoinDAO(address(this), msg.sender, _deltaLambda, msg.value); + emit JoinDAO(msg.sender, _deltaLambda, msg.value); } /** @@ -359,7 +357,7 @@ contract ElasticDAO is ReentryProtection { success = tokenContract.setMinter(controller); require(success, 'ElasticDAO: Set Minter failed during setController'); - emit ControllerChanged(address(this), 'setController', controller); + emit ControllerChanged('setController', controller); } /** @@ -374,7 +372,7 @@ contract ElasticDAO is ReentryProtection { dao.maxVotingLambda = _maxVotingLambda; daoStorage.serialize(dao); - emit MaxVotingLambdaChanged(address(this), 'setMaxVotingLambda', _maxVotingLambda); + emit MaxVotingLambdaChanged('setMaxVotingLambda', _maxVotingLambda); } /** @@ -401,7 +399,7 @@ contract ElasticDAO is ReentryProtection { uint256 deltaLambda = ElasticMath.wdiv(deltaE, token.eByL); ElasticGovernanceToken(token.uuid).mintShares(msg.sender, deltaLambda); - emit SeedDAO(address(this), msg.sender, deltaLambda); + emit SeedDAO(msg.sender, deltaLambda); } /** @@ -436,7 +434,7 @@ contract ElasticDAO is ReentryProtection { dao.summoned = true; daoContract.serialize(dao); - emit SummonedDAO(address(this), msg.sender); + emit SummonedDAO(msg.sender); } // Getters From d6f3018a3a16a49aff841c1dd62635f4fda60496 Mon Sep 17 00:00:00 2001 From: AlleyCat <69900836+alleycatdev@users.noreply.github.com> Date: Mon, 8 Mar 2021 07:59:19 -0500 Subject: [PATCH 092/118] remove unnecessary guard (#56) --- src/core/ElasticDAO.sol | 1 - 1 file changed, 1 deletion(-) diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index 6a90012..0b13285 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -151,7 +151,6 @@ contract ElasticDAO is ReentryProtection { uint256 _k, uint256 _maxLambdaPurchase ) external onlyBeforeSummoning onlyDeployer preventReentry { - require(msg.sender == deployer, 'ElasticDAO: Only deployer can initialize the Token'); Ecosystem.Instance memory ecosystem = _getEcosystem(); Token.Instance memory token = From c1e91d3ab734c24ddd1ab0b92c6aa4f3d104e770 Mon Sep 17 00:00:00 2001 From: AlleyCat <69900836+alleycatdev@users.noreply.github.com> Date: Mon, 8 Mar 2021 08:22:14 -0500 Subject: [PATCH 093/118] removes ecosystem from DAO exists and passes daoAddress instead of ecosystem in TOken (#57) --- src/core/ElasticDAO.sol | 17 ++++++----------- src/core/ElasticDAOFactory.sol | 4 ++-- src/libraries/SafeMath.sol | 5 +---- src/models/DAO.sol | 2 +- src/models/Token.sol | 8 ++------ 5 files changed, 12 insertions(+), 24 deletions(-) diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index 0b13285..a13548a 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -28,21 +28,13 @@ contract ElasticDAO is ReentryProtection { event ElasticGovernanceTokenDeployed(address indexed tokenAddress); event MaxVotingLambdaChanged(bytes32 settingName, uint256 value); event ControllerChanged(bytes32 settingName, address value); - event ExitDAO( - address indexed memberAddress, - uint256 shareAmount, - uint256 ethAmount - ); + event ExitDAO(address indexed memberAddress, uint256 shareAmount, uint256 ethAmount); event FailedToFullyPenalize( address indexed memberAddress, uint256 attemptedAmount, uint256 actualAmount ); - event JoinDAO( - address indexed memberAddress, - uint256 shareAmount, - uint256 ethAmount - ); + event JoinDAO(address indexed memberAddress, uint256 shareAmount, uint256 ethAmount); event SeedDAO(address indexed summonerAddress, uint256 amount); event SummonedDAO(address indexed summonedBy); @@ -54,7 +46,10 @@ contract ElasticDAO is ReentryProtection { modifier onlyAfterTokenInitialized() { Ecosystem.Instance memory ecosystem = _getEcosystem(); bool tokenInitialized = - Token(ecosystem.tokenModelAddress).exists(ecosystem.governanceTokenAddress, ecosystem); + Token(_getEcosystem().tokenModelAddress).exists( + ecosystem.governanceTokenAddress, + ecosystem.daoAddress + ); require(tokenInitialized, 'ElasticDAO: Please call initializeToken first'); _; } diff --git a/src/core/ElasticDAOFactory.sol b/src/core/ElasticDAOFactory.sol index d1074d3..1612ce8 100644 --- a/src/core/ElasticDAOFactory.sol +++ b/src/core/ElasticDAOFactory.sol @@ -142,8 +142,8 @@ contract ElasticDAOFactory is ReentryProtection { /** * @notice returns deployed DAO count */ - function deployedDAOCount() external view returns (uint) { - return deployedDAOAddresses.length; + function deployedDAOCount() external view returns (uint256) { + return deployedDAOAddresses.length; } /** diff --git a/src/libraries/SafeMath.sol b/src/libraries/SafeMath.sol index 092036d..da3c4bc 100644 --- a/src/libraries/SafeMath.sol +++ b/src/libraries/SafeMath.sol @@ -103,10 +103,7 @@ library SafeMath { * Requirements: * - The divisor cannot be zero. */ - function div( - uint256 a, - uint256 b - ) internal pure returns (uint256) { + function div(uint256 a, uint256 b) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 uint256 c = a / b; require(c > 0, 'SafeMath: division by zero'); diff --git a/src/models/DAO.sol b/src/models/DAO.sol index 02e67fb..17eb045 100644 --- a/src/models/DAO.sol +++ b/src/models/DAO.sol @@ -53,7 +53,7 @@ contract DAO is EternalModel, ReentryProtection { * @param _uuid - address of the unique user ID * @return recordExists bool */ - function exists(address _uuid, Ecosystem.Instance memory) external view returns (bool) { + function exists(address _uuid) external view returns (bool) { return _exists(_uuid); } diff --git a/src/models/Token.sol b/src/models/Token.sol index a63dc21..b5effdb 100644 --- a/src/models/Token.sol +++ b/src/models/Token.sol @@ -69,12 +69,8 @@ contract Token is EternalModel, ReentryProtection { return record; } - function exists(address _uuid, Ecosystem.Instance memory _ecosystem) - external - view - returns (bool) - { - return _exists(_uuid, _ecosystem.daoAddress); + function exists(address _uuid, address _daoAddress) external view returns (bool) { + return _exists(_uuid, _daoAddress); } /** From b92232d57d6246c994362ddcb78f559d73315948 Mon Sep 17 00:00:00 2001 From: AlleyCat <69900836+alleycatdev@users.noreply.github.com> Date: Mon, 8 Mar 2021 15:38:30 -0500 Subject: [PATCH 094/118] Audit fix/sybil attack enhancements#24 (#59) * only allows one to join by purchasing maxTokenLambda * remove deltaLambda from join and only allows purchase of full token Lambda on curve * fixes join griefing * removes .only --- src/core/ElasticDAO.sol | 27 ++++++++++++------------ test/capitalDeltaTest.js | 29 +++++++++++++++++++------- test/elasticDAOTests.js | 45 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 79 insertions(+), 22 deletions(-) diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index a13548a..61f79b0 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -199,8 +199,6 @@ contract ElasticDAO is ReentryProtection { * Based on the current state of the DAO, capitalDelta, deltaE, mDash are calulated, * after which _deltaLambda is minted for the address calling the function. * - * @param _deltaLambda - the amount of lambda minted to the address - * * @dev documentation and further math regarding capitalDelta, deltaE, * mDash can be found at ../libraries/ElasticMath.sol * @dev emits the JoinDAO event @@ -212,7 +210,7 @@ contract ElasticDAO is ReentryProtection { * must be sent in the transaction by the calling address * The token contract should be successfully be able to mint _deltaLambda */ - function join(uint256 _deltaLambda) + function join() external payable onlyAfterSummoning @@ -221,10 +219,6 @@ contract ElasticDAO is ReentryProtection { { Token.Instance memory token = _getToken(); - require( - _deltaLambda <= token.maxLambdaPurchase, - 'ElasticDAO: Cannot purchase those many lambda at once' - ); ElasticGovernanceToken tokenContract = ElasticGovernanceToken(token.uuid); uint256 capitalDelta = @@ -236,7 +230,7 @@ contract ElasticDAO is ReentryProtection { ); uint256 deltaE = ElasticMath.deltaE( - _deltaLambda, + token.maxLambdaPurchase, capitalDelta, token.k, token.elasticity, @@ -244,12 +238,10 @@ contract ElasticDAO is ReentryProtection { token.m ); - if (deltaE != msg.value) { - revert('ElasticDAO: Incorrect ETH amount'); - } + require(msg.value >= deltaE, 'ElasticDAO: Incorrect ETH amount'); // mdash - uint256 lambdaDash = SafeMath.add(_deltaLambda, token.lambda); + uint256 lambdaDash = SafeMath.add(token.maxLambdaPurchase, token.lambda); uint256 mDash = ElasticMath.mDash(lambdaDash, token.lambda, token.m); // serialize the token @@ -259,9 +251,16 @@ contract ElasticDAO is ReentryProtection { tokenStorage.serialize(token); // tokencontract mint shares - bool success = tokenContract.mintShares(msg.sender, _deltaLambda); + bool success = tokenContract.mintShares(msg.sender, token.maxLambdaPurchase); require(success, 'ElasticDAO: Mint Shares Failed during Join'); - emit JoinDAO(msg.sender, _deltaLambda, msg.value); + + // return extra ETH + if(success && msg.value > deltaE) { + (success, ) = msg.sender.call{ value: SafeMath.sub(msg.value, deltaE) }(''); + require(success, 'ElasticDAO: TransactionFailed'); + } + + emit JoinDAO(msg.sender, token.maxLambdaPurchase, msg.value); } /** diff --git a/test/capitalDeltaTest.js b/test/capitalDeltaTest.js index 5706964..49b9aa5 100644 --- a/test/capitalDeltaTest.js +++ b/test/capitalDeltaTest.js @@ -1,7 +1,6 @@ const { expect } = require('chai'); const { capitalDelta, deltaE, mDash } = require('@elastic-dao/sdk'); -const BigNumber = require('bignumber.js'); const { ONE } = require('./constants'); const { ethBalance, signers, summonedDAO } = require('./helpers'); @@ -30,10 +29,17 @@ describe('ElasticDAO: CapitalDelta value of a token', () => { // calculate deltaE using capital Delta to buy ONE_TENTH shares // deltaE = capitalDelta * k * ( (lambdaDash*mDash*revamp) - (lambda*m) ) - const dE = deltaE(0.1, cDelta, token.k, token.elasticity, token.lambda, token.m); + const dE = deltaE( + token.maxLambdaPurchase, + cDelta, + token.k, + token.elasticity, + token.lambda, + token.m, + ); // send that value of deltaE to joinDAO to buy ONE_TENTH shares - const tx = dao.elasticDAO.join(0.1, { value: dE }); + const tx = dao.elasticDAO.join({ value: dE }); // transaction reverts with 'ElasticDAO: Incorrect ETH amount' await expect(tx).to.be.revertedWith('ElasticDAO: Incorrect ETH amount'); @@ -53,13 +59,20 @@ describe('ElasticDAO: CapitalDelta value of a token', () => { // calculate deltaE using capital Delta to buy ONE_TENTH shares // deltaE = capitalDelta * k * ( (lambdaDash*mDash*revamp) - (lambda*m) ) - const deltaLambda = BigNumber(0.1); - const lambdaDash = token.lambda.plus(deltaLambda); - const dE = deltaE(deltaLambda, cDelta, token.k, token.elasticity, token.lambda, token.m); + const lambdaDash = token.lambda.plus(token.maxLambdaPurchase); + const dE = deltaE( + token.maxLambdaPurchase, + cDelta, + token.k, + token.elasticity, + token.lambda, + token.m, + ); + const mD = mDash(lambdaDash, token.lambda, token.m); - // send that value of deltaE to joinDAO to buy ONE_TENTH shares - await dao.elasticDAO.join(deltaLambda, { value: dE }); + // send that value of deltaE to joinDAO to buy ONE share + await dao.elasticDAO.join({ value: dE }); await token.refresh(); // post join check the following values: diff --git a/test/elasticDAOTests.js b/test/elasticDAOTests.js index 03f16d4..88bf8af 100644 --- a/test/elasticDAOTests.js +++ b/test/elasticDAOTests.js @@ -1,5 +1,6 @@ const { expect } = require('chai'); const { ethers } = require('ethers'); +const { capitalDelta, deltaE, mDash } = require('@elastic-dao/sdk'); const { deployments } = require('hardhat'); const hre = require('hardhat').ethers; const { ethBalance, SDK, signers, summoners, summonedDAO } = require('./helpers'); @@ -399,5 +400,49 @@ describe('ElasticDAO: Core', () => { } } }); + + it('Should allow a new member to join as long as they send more ETH than deltaE', async () => { + dao = await summonedDAO(); + const token = await dao.token(); + // get the eth balance of elasticDAO + const ethBalanceElasticDAOBeforeJoin = await ethBalance(dao.uuid); + + // get the T value of the token + const totalSupplyOfToken = await dao.elasticGovernanceToken.totalSupply(); + + // calculate capital Delta + const cDelta = capitalDelta(ethBalanceElasticDAOBeforeJoin, totalSupplyOfToken); + + // calculate deltaE using capital Delta to buy ONE_TENTH shares + // deltaE = capitalDelta * k * ( (lambdaDash*mDash*revamp) - (lambda*m) ) + const lambdaDash = token.lambda.plus(token.maxLambdaPurchase); + const dE = deltaE( + token.maxLambdaPurchase, + cDelta, + token.k, + token.elasticity, + token.lambda, + token.m, + ); + + const mD = mDash(lambdaDash, token.lambda, token.m); + + // send that value of deltaE to joinDAO to buy ONE share + 1 + await dao.elasticDAO.join({ value: dE.plus(1) }); + await token.refresh(); + + // post join check the following values: + // check the m value- after join,previous mDash should be current m + await expect(token.m.toString()).to.equal(mD.toString()); + await expect(token.lambda.toString()).to.equal(lambdaDash.toString()); + + // check the the total eth - which should be initial eth, plus delta e + const ethBalanceElasticDAOAfterJoin = await ethBalance(dao.uuid); + + const expectedEthInElasticDAOAfterJoin = ethBalanceElasticDAOBeforeJoin.plus(dE); + await expect(ethBalanceElasticDAOAfterJoin.toString()).to.equal( + expectedEthInElasticDAOAfterJoin.toString(), + ); + }); }); }); From 44fdb3463e02aa3076afd93796c05d66260628fc Mon Sep 17 00:00:00 2001 From: Nikoloz <74304890+NikolozMeMy@users.noreply.github.com> Date: Mon, 8 Mar 2021 23:10:16 +0200 Subject: [PATCH 095/118] fixes require newAllowance issue (#60) --- src/tokens/ElasticGovernanceToken.sol | 2 +- test/elasticGovernanceTokenTest.js | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index ea08a7c..c30658e 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -253,7 +253,7 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { { uint256 newAllowance = SafeMath.sub(_allowances[msg.sender][_spender], _subtractedValue); - require(newAllowance > 0, 'ElasticDAO: Allowance decrease less than 0'); + require(newAllowance >= 0, 'ElasticDAO: Allowance decrease less than 0'); _approve(msg.sender, _spender, newAllowance); return true; diff --git a/test/elasticGovernanceTokenTest.js b/test/elasticGovernanceTokenTest.js index f1919bb..639f584 100644 --- a/test/elasticGovernanceTokenTest.js +++ b/test/elasticGovernanceTokenTest.js @@ -66,6 +66,25 @@ describe('ElasticDAO: Elastic Governance Token', () => { expect(allowance.toFixed()).to.equal('1'); }); + it('Should decrease allowance to 0', async () => { + const { summoner1, summoner2 } = await signers(); + const spenderAmount = 10; + await dao.elasticGovernanceToken.approve(summoner2.address, spenderAmount); + + await dao.elasticGovernanceToken.allowance(summoner1.address, summoner2.address); + + await dao.elasticGovernanceToken.decreaseAllowance(summoner2.address, spenderAmount); + + const newAllowance = await dao.elasticGovernanceToken.allowance( + summoner1.address, + summoner2.address, + ); + + console.log(newAllowance.toString()); + + expect(newAllowance.toString()).to.equal('0'); + }); + it('Should mint tokens', async () => { const { agent, summoner1 } = await signers(); dao.sdk.changeSigner(agent); From a4ab180446358539b4d1a3862d1ae4647f1f046b Mon Sep 17 00:00:00 2001 From: smalldutta <49087443+smalldutta@users.noreply.github.com> Date: Mon, 8 Mar 2021 23:53:01 +0200 Subject: [PATCH 096/118] Audit fix/safemath pow in elasticmath revamp#29 (#58) * replaces safemath pow * fixes number to be used in revamp * removes pow function in SafeMath --- src/libraries/ElasticMath.sol | 2 +- src/libraries/SafeMath.sol | 20 -------------------- 2 files changed, 1 insertion(+), 21 deletions(-) diff --git a/src/libraries/ElasticMath.sol b/src/libraries/ElasticMath.sol index 8a21312..74b5b96 100644 --- a/src/libraries/ElasticMath.sol +++ b/src/libraries/ElasticMath.sol @@ -115,7 +115,7 @@ library ElasticMath { * @return uint256 */ function revamp(uint256 elasticity) internal pure returns (uint256) { - return SafeMath.add(elasticity, SafeMath.pow(10, 18)); + return SafeMath.add(elasticity, 1000000000000000000); } /** diff --git a/src/libraries/SafeMath.sol b/src/libraries/SafeMath.sol index da3c4bc..c07faef 100644 --- a/src/libraries/SafeMath.sol +++ b/src/libraries/SafeMath.sol @@ -72,26 +72,6 @@ library SafeMath { return c; } - /** - * @dev Returns one unsigned integer to the power of another, reverting on - * a multiplication overflow. - * - * Counterpart to Solidity's `**` operator. - */ - function pow(uint256 base, uint256 exponent) internal pure returns (uint256) { - if (exponent == 0) { - return 1; - } else if (exponent == 1) { - return base; - } else if (base == 0 && exponent != 0) { - return 0; - } else { - uint256 z = base; - for (uint256 i = 1; i < exponent; i += 1) z = mul(z, base); - return z; - } - } - /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. From d394a49594bf9f15782c3662d363fecedbe51e84 Mon Sep 17 00:00:00 2001 From: AlleyCat <69900836+alleycatdev@users.noreply.github.com> Date: Tue, 9 Mar 2021 10:08:00 -0500 Subject: [PATCH 097/118] fixes updateFeeAddress comment (#68) --- src/core/ElasticDAOFactory.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/ElasticDAOFactory.sol b/src/core/ElasticDAOFactory.sol index 1612ce8..003410c 100644 --- a/src/core/ElasticDAOFactory.sol +++ b/src/core/ElasticDAOFactory.sol @@ -181,7 +181,7 @@ contract ElasticDAOFactory is ReentryProtection { * * @param _feeReceiver - the new address of the fee reciever * - * @dev emits FeeUpdated event + * @dev emits FeeAddressUpdated event * @dev * Requirement: * - The fee receiver address cannot be zero address From 6d59749c071babf032001a9549c3082e17a14fc3 Mon Sep 17 00:00:00 2001 From: AlleyCat <69900836+alleycatdev@users.noreply.github.com> Date: Tue, 9 Mar 2021 10:09:30 -0500 Subject: [PATCH 098/118] updates max voting lambda comment (#70) --- src/core/ElasticDAO.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index 61f79b0..64152d4 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -356,7 +356,7 @@ contract ElasticDAO is ReentryProtection { /** * @notice sets the max voting lambda value for the DAO * @param _maxVotingLambda - the value of the maximum amount of lambda that can be used for voting - * @dev emits MaxVotingLambda event + * @dev emits MaxVotingLambdaChanged event */ function setMaxVotingLambda(uint256 _maxVotingLambda) external onlyController preventReentry { Ecosystem.Instance memory ecosystem = _getEcosystem(); From 874d362c9f5f00aa6772f7ca89a2c5c0f5654759 Mon Sep 17 00:00:00 2001 From: AlleyCat <69900836+alleycatdev@users.noreply.github.com> Date: Tue, 9 Mar 2021 10:10:14 -0500 Subject: [PATCH 099/118] updates join comment to match new functionality of purchasing maxTokenLambda (#73) --- src/core/ElasticDAO.sol | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index 64152d4..86018de 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -197,18 +197,17 @@ contract ElasticDAO is ReentryProtection { * Joining the DAO is syntactically equal to minting _deltaLambda for the function caller. * * Based on the current state of the DAO, capitalDelta, deltaE, mDash are calulated, - * after which _deltaLambda is minted for the address calling the function. + * after which maxTokenLambda is minted for the address calling the function. * * @dev documentation and further math regarding capitalDelta, deltaE, * mDash can be found at ../libraries/ElasticMath.sol * @dev emits the JoinDAO event * * @dev Requirements: - * The amount of shares being purchased has to be lower than or equal to maxLambdaPurchase * (The value of maxLambdaPurchase is set during the initialzing of the DAO) * The correct value of ETH, calculated via deltaE, * must be sent in the transaction by the calling address - * The token contract should be successfully be able to mint _deltaLambda + * The token contract should be successfully be able to mint token.makxLambdaPurchase */ function join() external From 54c910f80b37eaa1b248ed0170ebbe69a4e90a8a Mon Sep 17 00:00:00 2001 From: Nikoloz <74304890+NikolozMeMy@users.noreply.github.com> Date: Tue, 9 Mar 2021 17:18:49 +0200 Subject: [PATCH 100/118] fixes issue with unused imports of SafeMath in the models (#75) --- src/core/ElasticDAO.sol | 11 ++--------- src/models/DAO.sol | 1 - src/models/Ecosystem.sol | 1 - src/models/Token.sol | 1 - src/models/TokenHolder.sol | 1 - 5 files changed, 2 insertions(+), 13 deletions(-) diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index 86018de..e6ffd96 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -209,16 +209,9 @@ contract ElasticDAO is ReentryProtection { * must be sent in the transaction by the calling address * The token contract should be successfully be able to mint token.makxLambdaPurchase */ - function join() - external - payable - onlyAfterSummoning - onlyWhenOpen - preventReentry - { + function join() external payable onlyAfterSummoning onlyWhenOpen preventReentry { Token.Instance memory token = _getToken(); - ElasticGovernanceToken tokenContract = ElasticGovernanceToken(token.uuid); uint256 capitalDelta = ElasticMath.capitalDelta( @@ -254,7 +247,7 @@ contract ElasticDAO is ReentryProtection { require(success, 'ElasticDAO: Mint Shares Failed during Join'); // return extra ETH - if(success && msg.value > deltaE) { + if (success && msg.value > deltaE) { (success, ) = msg.sender.call{ value: SafeMath.sub(msg.value, deltaE) }(''); require(success, 'ElasticDAO: TransactionFailed'); } diff --git a/src/models/DAO.sol b/src/models/DAO.sol index 17eb045..50517b2 100644 --- a/src/models/DAO.sol +++ b/src/models/DAO.sol @@ -4,7 +4,6 @@ pragma experimental ABIEncoderV2; import './Ecosystem.sol'; import './EternalModel.sol'; -import '../libraries/SafeMath.sol'; import '../services/ReentryProtection.sol'; /** diff --git a/src/models/Ecosystem.sol b/src/models/Ecosystem.sol index 9ac22d8..b483536 100644 --- a/src/models/Ecosystem.sol +++ b/src/models/Ecosystem.sol @@ -3,7 +3,6 @@ pragma solidity 0.7.2; pragma experimental ABIEncoderV2; import './EternalModel.sol'; -import '../libraries/SafeMath.sol'; import '../services/ReentryProtection.sol'; /** diff --git a/src/models/Token.sol b/src/models/Token.sol index b5effdb..7ad644f 100644 --- a/src/models/Token.sol +++ b/src/models/Token.sol @@ -4,7 +4,6 @@ pragma experimental ABIEncoderV2; import './Ecosystem.sol'; import './EternalModel.sol'; -import '../libraries/SafeMath.sol'; import '../services/ReentryProtection.sol'; import '../tokens/ElasticGovernanceToken.sol'; diff --git a/src/models/TokenHolder.sol b/src/models/TokenHolder.sol index 445d3a4..3867737 100644 --- a/src/models/TokenHolder.sol +++ b/src/models/TokenHolder.sol @@ -5,7 +5,6 @@ pragma experimental ABIEncoderV2; import './Ecosystem.sol'; import './EternalModel.sol'; import './Token.sol'; -import '../libraries/SafeMath.sol'; import '../services/ReentryProtection.sol'; /** From d60db2489392d26d00a39459f1c45427e5af002b Mon Sep 17 00:00:00 2001 From: AlleyCat <69900836+alleycatdev@users.noreply.github.com> Date: Tue, 9 Mar 2021 10:19:24 -0500 Subject: [PATCH 101/118] replaces second use of _getEcosystem with already instantiated one. (#76) --- src/core/ElasticDAO.sol | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index e6ffd96..f6741cb 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -45,8 +45,9 @@ contract ElasticDAO is ReentryProtection { } modifier onlyAfterTokenInitialized() { Ecosystem.Instance memory ecosystem = _getEcosystem(); + bool tokenInitialized = - Token(_getEcosystem().tokenModelAddress).exists( + Token(ecosystem.tokenModelAddress).exists( ecosystem.governanceTokenAddress, ecosystem.daoAddress ); From 983a7e5e71fdaebed8802a686c9fb6ba59c58fa9 Mon Sep 17 00:00:00 2001 From: Nikoloz <74304890+NikolozMeMy@users.noreply.github.com> Date: Tue, 9 Mar 2021 17:31:36 +0200 Subject: [PATCH 102/118] fixes incorrect triggering of Approval event (#77) --- src/tokens/ElasticGovernanceToken.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index c30658e..0546276 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -435,7 +435,7 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { if (msg.sender != _from && _allowances[_from][msg.sender] != uint256(-1)) { _allowances[_from][msg.sender] = SafeMath.sub(_allowances[_from][msg.sender], _amount); - emit Approval(msg.sender, _to, _allowances[_from][msg.sender]); + emit Approval(_from, msg.sender, _allowances[_from][msg.sender]); } _transfer(_from, _to, _amount); From 6ec2a60458ba40670e2ec97092e0bc60ce27471e Mon Sep 17 00:00:00 2001 From: AlleyCat <69900836+alleycatdev@users.noreply.github.com> Date: Tue, 9 Mar 2021 10:44:05 -0500 Subject: [PATCH 103/118] =?UTF-8?q?adds=20guard=20so=20that=20someone=20ca?= =?UTF-8?q?n't=20bork=20a=20deployment=20by=20submitting=20a=20su=E2=80=A6?= =?UTF-8?q?=20(#78)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * adds gaurd so that someone can't bork a deployment by submitting a summoner w/ a zero address * removes exclusive testing --- src/core/ElasticDAO.sol | 6 ++++++ test/elasticDAOTests.js | 21 +++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index f6741cb..b7c3d5e 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -110,6 +110,12 @@ contract ElasticDAO is ReentryProtection { ); require(_summoners.length > 0, 'ElasticDAO: At least 1 summoner required'); + for (uint256 i = 0; i < _summoners.length; i += 1) { + if (_summoners[i] == address(0)) { + revert('ElasticDAO: Summoner address can not be zero address'); + } + } + Ecosystem.Instance memory defaults = Ecosystem(_ecosystemModelAddress).deserialize(address(0)); Ecosystem.Instance memory ecosystem = _buildEcosystem(controller, defaults); ecosystemModelAddress = ecosystem.ecosystemModelAddress; diff --git a/test/elasticDAOTests.js b/test/elasticDAOTests.js index 88bf8af..21f18ca 100644 --- a/test/elasticDAOTests.js +++ b/test/elasticDAOTests.js @@ -225,6 +225,27 @@ describe('ElasticDAO: Core', () => { expect(summoner3balance.toNumber()).to.equal(100); }); + it('Should not allow the DAO to be summoned if summoner address is zero address', async () => { + const { agent } = await signers(); + + sdk.changeSigner(agent); + + await expect( + sdk.elasticDAOFactory.contract.deployDAOAndToken( + [ethers.constants.AddressZero], + 'Elastic DAO', + 'Elastic Governance Token', + 'EGT', + sdk.elasticDAOFactory.toEthersBigNumber(0.1, 18), + sdk.elasticDAOFactory.toEthersBigNumber(0.02, 18), + sdk.elasticDAOFactory.toEthersBigNumber(100, 18), + sdk.elasticDAOFactory.toEthersBigNumber(1, 18), + sdk.elasticDAOFactory.toEthersBigNumber(1, 18), + { value: sdk.elasticDAOFactory.toEthersBigNumber(0.25, 18) }, + ), + ).to.be.revertedWith('ElasticDAO: Summoner address can not be zero address'); + }); + it('Should getDAO', async () => { const getDAO = await dao.elasticDAO.contract.getDAO(); From db132ddfd7ce8407a32a1fd215bbedf245d64b01 Mon Sep 17 00:00:00 2001 From: AlleyCat <69900836+alleycatdev@users.noreply.github.com> Date: Tue, 9 Mar 2021 11:26:00 -0500 Subject: [PATCH 104/118] replaces reentry protection with oz implementation (#79) * replaces reentry protection with oz implementation * removes unused ReentryProtection.sol Co-authored-by: Dan Matthews --- src/core/ElasticDAO.sol | 24 +++++++++++------------ src/core/ElasticDAOFactory.sol | 18 ++++++++--------- src/models/DAO.sol | 7 ++++--- src/models/Ecosystem.sol | 7 ++++--- src/models/Token.sol | 8 ++++---- src/models/TokenHolder.sol | 7 ++++--- src/services/ReentryProtection.sol | 26 ------------------------- src/tokens/ElasticGovernanceToken.sol | 28 +++++++++++++-------------- 8 files changed, 51 insertions(+), 74 deletions(-) delete mode 100644 src/services/ReentryProtection.sol diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index b7c3d5e..9bf2396 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -8,7 +8,7 @@ import '../models/DAO.sol'; import '../models/Ecosystem.sol'; import '../models/Token.sol'; -import '../services/ReentryProtection.sol'; +import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; import '@pie-dao/proxy/contracts/PProxy.sol'; @@ -18,7 +18,7 @@ import '@pie-dao/proxy/contracts/PProxy.sol'; * * It also serves as the vault for ElasticDAO. */ -contract ElasticDAO is ReentryProtection { +contract ElasticDAO is ReentrancyGuard { address public deployer; address public ecosystemModelAddress; address public controller; @@ -102,7 +102,7 @@ contract ElasticDAO is ReentryProtection { address[] memory _summoners, string memory _name, uint256 _maxVotingLambda - ) external preventReentry { + ) external nonReentrant { require(initialized == false, 'ElasticDAO: Already initialized'); require( _ecosystemModelAddress != address(0) && _controller != address(0), @@ -152,7 +152,7 @@ contract ElasticDAO is ReentryProtection { uint256 _elasticity, uint256 _k, uint256 _maxLambdaPurchase - ) external onlyBeforeSummoning onlyDeployer preventReentry { + ) external onlyBeforeSummoning onlyDeployer nonReentrant { Ecosystem.Instance memory ecosystem = _getEcosystem(); Token.Instance memory token = @@ -184,7 +184,7 @@ contract ElasticDAO is ReentryProtection { * - ETH transfer must be successful * @dev emits ExitDAO event */ - function exit(uint256 _deltaLambda) external onlyAfterSummoning preventReentry { + function exit(uint256 _deltaLambda) external onlyAfterSummoning nonReentrant { // burn the shares Token.Instance memory token = _getToken(); ElasticGovernanceToken tokenContract = ElasticGovernanceToken(token.uuid); @@ -216,7 +216,7 @@ contract ElasticDAO is ReentryProtection { * must be sent in the transaction by the calling address * The token contract should be successfully be able to mint token.makxLambdaPurchase */ - function join() external payable onlyAfterSummoning onlyWhenOpen preventReentry { + function join() external payable onlyAfterSummoning onlyWhenOpen nonReentrant { Token.Instance memory token = _getToken(); ElasticGovernanceToken tokenContract = ElasticGovernanceToken(token.uuid); @@ -274,7 +274,7 @@ contract ElasticDAO is ReentryProtection { function penalize(address[] memory _addresses, uint256[] memory _amounts) external onlyController - preventReentry + nonReentrant { require( _addresses.length == _amounts.length, @@ -310,7 +310,7 @@ contract ElasticDAO is ReentryProtection { function reward(address[] memory _addresses, uint256[] memory _amounts) external onlyController - preventReentry + nonReentrant { require( _addresses.length == _amounts.length, @@ -337,7 +337,7 @@ contract ElasticDAO is ReentryProtection { * - The controller of the DAO should successfully be set as the burner of the tokens of the DAO * - The controller of the DAO should successfully be set as the minter of the tokens of the DAO */ - function setController(address _controller) external onlyController preventReentry { + function setController(address _controller) external onlyController nonReentrant { require(_controller != address(0), 'ElasticDAO: Address Zero'); controller = _controller; @@ -357,7 +357,7 @@ contract ElasticDAO is ReentryProtection { * @param _maxVotingLambda - the value of the maximum amount of lambda that can be used for voting * @dev emits MaxVotingLambdaChanged event */ - function setMaxVotingLambda(uint256 _maxVotingLambda) external onlyController preventReentry { + function setMaxVotingLambda(uint256 _maxVotingLambda) external onlyController nonReentrant { Ecosystem.Instance memory ecosystem = _getEcosystem(); DAO daoStorage = DAO(ecosystem.daoModelAddress); DAO.Instance memory dao = daoStorage.deserialize(address(this), ecosystem); @@ -383,7 +383,7 @@ contract ElasticDAO is ReentryProtection { onlyBeforeSummoning onlySummoners onlyAfterTokenInitialized - preventReentry + nonReentrant { Token.Instance memory token = _getToken(); @@ -409,7 +409,7 @@ contract ElasticDAO is ReentryProtection { * @dev documentation and further math regarding capitalDelta * can be found at ../libraries/ElasticMath.sol */ - function summon(uint256 _deltaLambda) external onlyBeforeSummoning onlySummoners preventReentry { + function summon(uint256 _deltaLambda) external onlyBeforeSummoning onlySummoners nonReentrant { require(address(this).balance > 0, 'ElasticDAO: Please seed DAO with ETH to set ETH:EGT ratio'); Ecosystem.Instance memory ecosystem = _getEcosystem(); diff --git a/src/core/ElasticDAOFactory.sol b/src/core/ElasticDAOFactory.sol index 003410c..1b157c2 100644 --- a/src/core/ElasticDAOFactory.sol +++ b/src/core/ElasticDAOFactory.sol @@ -5,7 +5,7 @@ pragma experimental ABIEncoderV2; import './ElasticDAO.sol'; import '../models/Ecosystem.sol'; -import '../services/ReentryProtection.sol'; +import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; import '@pie-dao/proxy/contracts/PProxy.sol'; @@ -14,7 +14,7 @@ import '@pie-dao/proxy/contracts/PProxy.sol'; * Deploys ElasticDAO's and also sets all the required parameters and permissions, * Collects a fee which is later used by ELasticDAO for further development of the project. */ -contract ElasticDAOFactory is ReentryProtection { +contract ElasticDAOFactory is ReentrancyGuard { address public ecosystemModelAddress; address public elasticDAOImplementationAddress; address public manager; @@ -46,7 +46,7 @@ contract ElasticDAOFactory is ReentryProtection { */ function initialize(address _ecosystemModelAddress, address _elasticDAOImplementationAddress) external - preventReentry + nonReentrant { require(initialized == false, 'ElasticDAO: Factory already initialized'); require( @@ -68,7 +68,7 @@ contract ElasticDAOFactory is ReentryProtection { * Requirement: * - The fee collection transaction should be successful */ - function collectFees() external preventReentry { + function collectFees() external nonReentrant { require(feeAddress != address(0), 'ElasticDAO: No feeAddress set'); uint256 amount = address(this).balance; @@ -106,7 +106,7 @@ contract ElasticDAOFactory is ReentryProtection { uint256 _k, uint256 _maxLambdaPurchase, uint256 _maxVotingLambda - ) external payable preventReentry { + ) external payable nonReentrant { require(fee == msg.value, 'ElasticDAO: A fee is required to deploy a DAO'); // Deploy the DAO behind PProxy @@ -156,7 +156,7 @@ contract ElasticDAOFactory is ReentryProtection { function updateElasticDAOImplementationAddress(address _elasticDAOImplementationAddress) external onlyManager - preventReentry + nonReentrant { require(_elasticDAOImplementationAddress != address(0), 'ElasticDAO: Address Zero'); @@ -171,7 +171,7 @@ contract ElasticDAOFactory is ReentryProtection { * * @dev emits FeeUpdated event */ - function updateFee(uint256 _amount) external onlyManager preventReentry { + function updateFee(uint256 _amount) external onlyManager nonReentrant { fee = _amount; emit FeeUpdated(fee); } @@ -186,7 +186,7 @@ contract ElasticDAOFactory is ReentryProtection { * Requirement: * - The fee receiver address cannot be zero address */ - function updateFeeAddress(address _feeReceiver) external onlyManager preventReentry { + function updateFeeAddress(address _feeReceiver) external onlyManager nonReentrant { require(_feeReceiver != address(0), 'ElasticDAO: Address Zero'); feeAddress = payable(_feeReceiver); @@ -202,7 +202,7 @@ contract ElasticDAOFactory is ReentryProtection { * - Address of the manager cannot be zero * @dev emits ManagerUpdated event */ - function updateManager(address _newManager) external onlyManager preventReentry { + function updateManager(address _newManager) external onlyManager nonReentrant { require(_newManager != address(0), 'ElasticDAO: Address Zero'); manager = _newManager; diff --git a/src/models/DAO.sol b/src/models/DAO.sol index 50517b2..293a095 100644 --- a/src/models/DAO.sol +++ b/src/models/DAO.sol @@ -2,16 +2,17 @@ pragma solidity 0.7.2; pragma experimental ABIEncoderV2; +import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; + import './Ecosystem.sol'; import './EternalModel.sol'; -import '../services/ReentryProtection.sol'; /** * @author ElasticDAO - https://ElasticDAO.org * @notice This contract is used for storing core DAO data * @dev ElasticDAO network contracts can read/write from this contract */ -contract DAO is EternalModel, ReentryProtection { +contract DAO is EternalModel, ReentrancyGuard { struct Instance { address uuid; address[] summoners; @@ -74,7 +75,7 @@ contract DAO is EternalModel, ReentryProtection { * @dev serializes Instance struct * @param _record Instance */ - function serialize(Instance memory _record) external preventReentry { + function serialize(Instance memory _record) external nonReentrant { require(msg.sender == _record.uuid, 'ElasticDAO: Unauthorized'); setUint(keccak256(abi.encode(_record.uuid, 'maxVotingLambda')), _record.maxVotingLambda); diff --git a/src/models/Ecosystem.sol b/src/models/Ecosystem.sol index b483536..45c33e4 100644 --- a/src/models/Ecosystem.sol +++ b/src/models/Ecosystem.sol @@ -2,8 +2,9 @@ pragma solidity 0.7.2; pragma experimental ABIEncoderV2; +import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; + import './EternalModel.sol'; -import '../services/ReentryProtection.sol'; /** * @title ElasticDAO ecosystem @@ -13,7 +14,7 @@ import '../services/ReentryProtection.sol'; * @dev Serialize - Translation of data from the concerned struct to key-value pairs * @dev Deserialize - Translation of data from the key-value pairs to a struct */ -contract Ecosystem is EternalModel, ReentryProtection { +contract Ecosystem is EternalModel, ReentrancyGuard { struct Instance { address daoAddress; // Models @@ -66,7 +67,7 @@ contract Ecosystem is EternalModel, ReentryProtection { * @dev serializes Instance struct * @param _record Instance */ - function serialize(Instance memory _record) external preventReentry { + function serialize(Instance memory _record) external nonReentrant { bool recordExists = _exists(_record.daoAddress); require( diff --git a/src/models/Token.sol b/src/models/Token.sol index 7ad644f..6fb7c1d 100644 --- a/src/models/Token.sol +++ b/src/models/Token.sol @@ -1,10 +1,10 @@ // SPDX-License-Identifier: GPLv3 pragma solidity 0.7.2; pragma experimental ABIEncoderV2; +import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; import './Ecosystem.sol'; import './EternalModel.sol'; -import '../services/ReentryProtection.sol'; import '../tokens/ElasticGovernanceToken.sol'; /** @@ -15,7 +15,7 @@ import '../tokens/ElasticGovernanceToken.sol'; * Serialize - Translation of data from the concerned struct to key-value pairs * Deserialize - Translation of data from the key-value pairs to a struct */ -contract Token is EternalModel, ReentryProtection { +contract Token is EternalModel, ReentrancyGuard { struct Instance { address uuid; string name; @@ -76,7 +76,7 @@ contract Token is EternalModel, ReentryProtection { * @dev serializes Instance struct * @param _record Instance */ - function serialize(Instance memory _record) external preventReentry { + function serialize(Instance memory _record) external nonReentrant { require( msg.sender == _record.uuid || (msg.sender == _record.ecosystem.daoAddress && @@ -118,7 +118,7 @@ contract Token is EternalModel, ReentryProtection { function updateNumberOfTokenHolders(Instance memory _record, uint256 numberOfTokenHolders) external - preventReentry + nonReentrant { require( msg.sender == _record.uuid && _exists(_record.uuid, _record.ecosystem.daoAddress), diff --git a/src/models/TokenHolder.sol b/src/models/TokenHolder.sol index 3867737..3518045 100644 --- a/src/models/TokenHolder.sol +++ b/src/models/TokenHolder.sol @@ -2,10 +2,11 @@ pragma solidity 0.7.2; pragma experimental ABIEncoderV2; +import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; + import './Ecosystem.sol'; import './EternalModel.sol'; import './Token.sol'; -import '../services/ReentryProtection.sol'; /** * @title a data storage for Token holders @@ -15,7 +16,7 @@ import '../services/ReentryProtection.sol'; * Serialize - Translation of data from the concerned struct to key-value pairs * Deserialize - Translation of data from the key-value pairs to a struct */ -contract TokenHolder is EternalModel, ReentryProtection { +contract TokenHolder is EternalModel, ReentrancyGuard { struct Instance { address account; uint256 lambda; @@ -49,7 +50,7 @@ contract TokenHolder is EternalModel, ReentryProtection { * @dev serializes Instance struct * @param _record Instance */ - function serialize(Instance memory _record) external preventReentry { + function serialize(Instance memory _record) external nonReentrant { require(msg.sender == _record.token.uuid, 'ElasticDAO: Unauthorized'); setUint(keccak256(abi.encode(_record.token.uuid, _record.account, 'lambda')), _record.lambda); diff --git a/src/services/ReentryProtection.sol b/src/services/ReentryProtection.sol deleted file mode 100644 index 5dfb09f..0000000 --- a/src/services/ReentryProtection.sol +++ /dev/null @@ -1,26 +0,0 @@ -// SPDX-License-Identifier: GPLv3 -pragma solidity 0.7.2; - -/// @author ElasticDAO - https://ElasticDAO.org -/// @notice This contract is used for reentry protection -/// based on implementation -/// https://github.com/o0ragman0o/ReentryProtected/blob/master/ReentryProtected.sol -/// @dev ElasticDAO network contracts can read/write from this contract -contract ReentryProtection { - // The reentry protection state mutex - bool internal mutex = false; - - // This modifier can be used on functions with external calls to - // prevent reentry attacks. - // Constraints: - // Protected functions must have only one point of exit. - // Protected functions cannot use the `return` keyword - // Protected functions return values must be through return parameters. - modifier preventReentry() { - require(!mutex, 'ElasticDAO: Reentry Detected'); - - mutex = true; - _; - mutex = false; - } -} diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index 0546276..e1847cf 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -12,13 +12,13 @@ import '../models/Ecosystem.sol'; import '../models/Token.sol'; import '../models/TokenHolder.sol'; -import '../services/ReentryProtection.sol'; +import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; /** * @dev ElasticGovernanceToken contract outlines and defines all the functionality * of an ElasticGovernanceToken and also serves as it's storage */ -contract ElasticGovernanceToken is IElasticToken, ReentryProtection { +contract ElasticGovernanceToken is IElasticToken, ReentrancyGuard { address public burner; address public daoAddress; address public ecosystemModelAddress; @@ -64,7 +64,7 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { address _minter, Ecosystem.Instance memory _ecosystem, Token.Instance memory _token - ) external preventReentry returns (Token.Instance memory) { + ) external nonReentrant returns (Token.Instance memory) { require(initialized == false, 'ElasticDAO: Already initialized'); require(_burner != address(0), 'ElasticDAO: Address Zero'); require(_ecosystem.daoAddress != address(0), 'ElasticDAO: Address Zero'); @@ -119,7 +119,7 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { function approve(address _spender, uint256 _amount) external override - preventReentry + nonReentrant returns (bool) { _approve(msg.sender, _spender, _amount); @@ -199,7 +199,7 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { external override onlyDAOorBurner - preventReentry + nonReentrant returns (bool) { _burn(_account, _amount); @@ -219,7 +219,7 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { external override onlyDAOorBurner - preventReentry + nonReentrant returns (bool) { _burnShares(_account, _amount); @@ -248,7 +248,7 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { */ function decreaseAllowance(address _spender, uint256 _subtractedValue) external - preventReentry + nonReentrant returns (bool) { uint256 newAllowance = SafeMath.sub(_allowances[msg.sender][_spender], _subtractedValue); @@ -269,7 +269,7 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { */ function increaseAllowance(address _spender, uint256 _addedValue) external - preventReentry + nonReentrant returns (bool) { _approve(msg.sender, _spender, SafeMath.add(_allowances[msg.sender][_spender], _addedValue)); @@ -285,7 +285,7 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { function mint(address _account, uint256 _amount) external onlyDAOorMinter - preventReentry + nonReentrant returns (bool) { _mint(_account, _amount); @@ -303,7 +303,7 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { external override onlyDAOorMinter - preventReentry + nonReentrant returns (bool) { _mintShares(_account, _amount); @@ -338,7 +338,7 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { * * @return bool */ - function setBurner(address _burner) external onlyDAO preventReentry returns (bool) { + function setBurner(address _burner) external onlyDAO nonReentrant returns (bool) { require(_burner != address(0), 'ElasticDAO: Address Zero'); burner = _burner; @@ -357,7 +357,7 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { * * @return bool */ - function setMinter(address _minter) external onlyDAO preventReentry returns (bool) { + function setMinter(address _minter) external onlyDAO nonReentrant returns (bool) { require(_minter != address(0), 'ElasticDAO: Address Zero'); minter = _minter; @@ -411,7 +411,7 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { * Emits a {Transfer} event * @return bool */ - function transfer(address _to, uint256 _amount) external override preventReentry returns (bool) { + function transfer(address _to, uint256 _amount) external override nonReentrant returns (bool) { _transfer(msg.sender, _to, _amount); return true; } @@ -430,7 +430,7 @@ contract ElasticGovernanceToken is IElasticToken, ReentryProtection { address _from, address _to, uint256 _amount - ) external override preventReentry returns (bool) { + ) external override nonReentrant returns (bool) { require(msg.sender == _from || _amount <= _allowances[_from][msg.sender], 'ERC20: Bad Caller'); if (msg.sender != _from && _allowances[_from][msg.sender] != uint256(-1)) { From f0a76b9044503a78c524cc64b5240c72c862994f Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Wed, 10 Mar 2021 23:17:42 +0200 Subject: [PATCH 105/118] consistency fix --- src/tokens/ElasticGovernanceToken.sol | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index e1847cf..6bbe0e0 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -470,6 +470,8 @@ contract ElasticGovernanceToken is IElasticToken, ReentrancyGuard { TokenHolder.Instance memory tokenHolder = _getTokenHolder(_account); bool alreadyTokenHolder = tokenHolder.lambda > 0; + uint256 deltaT = ElasticMath.t(_deltaLambda, token.k, token.m); + tokenHolder = _updateBalance(tokenHolder, false, _deltaLambda); token.lambda = SafeMath.sub(token.lambda, _deltaLambda); @@ -478,7 +480,7 @@ contract ElasticGovernanceToken is IElasticToken, ReentrancyGuard { TokenHolder tokenHolderStorage = TokenHolder(ecosystem.tokenHolderModelAddress); tokenHolderStorage.serialize(tokenHolder); _updateNumberOfTokenHolders(alreadyTokenHolder, token, tokenHolder, tokenStorage); - emit Transfer(_account, address(0), ElasticMath.t(_deltaLambda, token.k, token.m)); + emit Transfer(_account, address(0), deltaT); } function _mint(address _account, uint256 _deltaT) internal { From ae4c37ac5ce28c42b71b2ef6c8e07c6acd8141ad Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Wed, 10 Mar 2021 23:32:54 +0200 Subject: [PATCH 106/118] remove unnecessary check (#81) --- src/tokens/ElasticGovernanceToken.sol | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index 6bbe0e0..e79d7fa 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -252,9 +252,6 @@ contract ElasticGovernanceToken is IElasticToken, ReentrancyGuard { returns (bool) { uint256 newAllowance = SafeMath.sub(_allowances[msg.sender][_spender], _subtractedValue); - - require(newAllowance >= 0, 'ElasticDAO: Allowance decrease less than 0'); - _approve(msg.sender, _spender, newAllowance); return true; } From d73c12c2c687d145a30ae5c6803eca17d6ac0492 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Thu, 11 Mar 2021 02:12:05 +0200 Subject: [PATCH 107/118] adds mint to the IElasticToken interface (#83) --- src/interfaces/IElasticToken.sol | 8 ++++++++ src/tokens/ElasticGovernanceToken.sol | 3 ++- test/elasticGovernanceTokenTest.js | 2 -- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/interfaces/IElasticToken.sol b/src/interfaces/IElasticToken.sol index 409b10f..b975108 100644 --- a/src/interfaces/IElasticToken.sol +++ b/src/interfaces/IElasticToken.sol @@ -27,6 +27,14 @@ interface IElasticToken is IERC20 { */ function burnShares(address _account, uint256 _amount) external returns (bool); + /** + * @dev mints @param _amount tokens for @param _account + * @param _account - the address of the account for whom the token have to be minted to + * @param _amount - the amount of tokens to be minted + * @return bool + */ + function mint(address _account, uint256 _amount) external returns (bool); + /** * @dev mints @param _amount of shares for @param _account * @param _account address of the account diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index e79d7fa..e91722e 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -275,12 +275,13 @@ contract ElasticGovernanceToken is IElasticToken, ReentrancyGuard { /** * @dev mints @param _amount tokens for @param _account - * @param _amount - the amount of tokens to be minted * @param _account - the address of the account for whom the token have to be minted to + * @param _amount - the amount of tokens to be minted * @return bool */ function mint(address _account, uint256 _amount) external + override onlyDAOorMinter nonReentrant returns (bool) diff --git a/test/elasticGovernanceTokenTest.js b/test/elasticGovernanceTokenTest.js index 639f584..17230c0 100644 --- a/test/elasticGovernanceTokenTest.js +++ b/test/elasticGovernanceTokenTest.js @@ -80,8 +80,6 @@ describe('ElasticDAO: Elastic Governance Token', () => { summoner2.address, ); - console.log(newAllowance.toString()); - expect(newAllowance.toString()).to.equal('0'); }); From 3ecca30752cdb0035ed578a0b841516f93f7c394 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Thu, 11 Mar 2021 02:46:09 +0200 Subject: [PATCH 108/118] removed extra param from setting changed events (#85) --- src/core/ElasticDAO.sol | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index 9bf2396..f676d58 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -26,8 +26,8 @@ contract ElasticDAO is ReentrancyGuard { bool public initialized; event ElasticGovernanceTokenDeployed(address indexed tokenAddress); - event MaxVotingLambdaChanged(bytes32 settingName, uint256 value); - event ControllerChanged(bytes32 settingName, address value); + event MaxVotingLambdaChanged(uint256 value); + event ControllerChanged(address value); event ExitDAO(address indexed memberAddress, uint256 shareAmount, uint256 ethAmount); event FailedToFullyPenalize( address indexed memberAddress, @@ -349,7 +349,7 @@ contract ElasticDAO is ReentrancyGuard { success = tokenContract.setMinter(controller); require(success, 'ElasticDAO: Set Minter failed during setController'); - emit ControllerChanged('setController', controller); + emit ControllerChanged(controller); } /** @@ -364,7 +364,7 @@ contract ElasticDAO is ReentrancyGuard { dao.maxVotingLambda = _maxVotingLambda; daoStorage.serialize(dao); - emit MaxVotingLambdaChanged('setMaxVotingLambda', _maxVotingLambda); + emit MaxVotingLambdaChanged(_maxVotingLambda); } /** From 7c0ccc18256ecff07d7caf3ef24828f85d731381 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Thu, 11 Mar 2021 17:25:04 +0200 Subject: [PATCH 109/118] linter fixes --- src/core/ElasticDAO.sol | 2 +- src/core/ElasticDAOFactory.sol | 2 +- src/models/DAO.sol | 2 +- src/models/Ecosystem.sol | 2 +- src/models/Token.sol | 2 +- src/models/TokenHolder.sol | 2 +- src/tokens/ElasticGovernanceToken.sol | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index f676d58..7c61204 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -8,7 +8,7 @@ import '../models/DAO.sol'; import '../models/Ecosystem.sol'; import '../models/Token.sol'; -import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; +import '@openzeppelin/contracts/utils/ReentrancyGuard.sol'; import '@pie-dao/proxy/contracts/PProxy.sol'; diff --git a/src/core/ElasticDAOFactory.sol b/src/core/ElasticDAOFactory.sol index 1b157c2..ca5dd8e 100644 --- a/src/core/ElasticDAOFactory.sol +++ b/src/core/ElasticDAOFactory.sol @@ -5,7 +5,7 @@ pragma experimental ABIEncoderV2; import './ElasticDAO.sol'; import '../models/Ecosystem.sol'; -import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; +import '@openzeppelin/contracts/utils/ReentrancyGuard.sol'; import '@pie-dao/proxy/contracts/PProxy.sol'; diff --git a/src/models/DAO.sol b/src/models/DAO.sol index 293a095..ff59f73 100644 --- a/src/models/DAO.sol +++ b/src/models/DAO.sol @@ -2,7 +2,7 @@ pragma solidity 0.7.2; pragma experimental ABIEncoderV2; -import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; +import '@openzeppelin/contracts/utils/ReentrancyGuard.sol'; import './Ecosystem.sol'; import './EternalModel.sol'; diff --git a/src/models/Ecosystem.sol b/src/models/Ecosystem.sol index 45c33e4..9dde4b6 100644 --- a/src/models/Ecosystem.sol +++ b/src/models/Ecosystem.sol @@ -2,7 +2,7 @@ pragma solidity 0.7.2; pragma experimental ABIEncoderV2; -import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; +import '@openzeppelin/contracts/utils/ReentrancyGuard.sol'; import './EternalModel.sol'; diff --git a/src/models/Token.sol b/src/models/Token.sol index 6fb7c1d..e671023 100644 --- a/src/models/Token.sol +++ b/src/models/Token.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPLv3 pragma solidity 0.7.2; pragma experimental ABIEncoderV2; -import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; +import '@openzeppelin/contracts/utils/ReentrancyGuard.sol'; import './Ecosystem.sol'; import './EternalModel.sol'; diff --git a/src/models/TokenHolder.sol b/src/models/TokenHolder.sol index 3518045..7c27550 100644 --- a/src/models/TokenHolder.sol +++ b/src/models/TokenHolder.sol @@ -2,7 +2,7 @@ pragma solidity 0.7.2; pragma experimental ABIEncoderV2; -import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; +import '@openzeppelin/contracts/utils/ReentrancyGuard.sol'; import './Ecosystem.sol'; import './EternalModel.sol'; diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index e91722e..f33de04 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -12,7 +12,7 @@ import '../models/Ecosystem.sol'; import '../models/Token.sol'; import '../models/TokenHolder.sol'; -import "@openzeppelin/contracts/utils/ReentrancyGuard.sol"; +import '@openzeppelin/contracts/utils/ReentrancyGuard.sol'; /** * @dev ElasticGovernanceToken contract outlines and defines all the functionality From 5e135e867898d6217180c8211dfd2da03a9166f8 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Thu, 11 Mar 2021 17:46:38 +0200 Subject: [PATCH 110/118] t is 0 when lambda is 0 --- src/libraries/ElasticMath.sol | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/libraries/ElasticMath.sol b/src/libraries/ElasticMath.sol index 74b5b96..0e39ac9 100644 --- a/src/libraries/ElasticMath.sol +++ b/src/libraries/ElasticMath.sol @@ -131,7 +131,11 @@ library ElasticMath { uint256 lambda, uint256 k, uint256 m - ) internal pure returns (uint256) { + ) internal view returns (uint256) { + if (lambda == 0) { + return 0; + } + return wmul(wmul(lambda, k), m); } From 35c57ce02d67613ed23822577d1a27b2ae3be4e7 Mon Sep 17 00:00:00 2001 From: AlleyCat <69900836+alleycatdev@users.noreply.github.com> Date: Sat, 13 Mar 2021 19:15:15 -0500 Subject: [PATCH 111/118] =?UTF-8?q?adds=20amm=20compatability=20and=20call?= =?UTF-8?q?s=20sync()=20on=20all=20liquidity=20pools=20after=20=E2=80=A6?= =?UTF-8?q?=20(#86)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * adds amm compatability and calls sync() on all liquidity pools after join * WIP * Uniswap Sync * Update ElasticDAO.sol Co-authored-by: Dan Matthews --- src/core/ElasticDAO.sol | 45 +++++++++++++++++++++++++++++++ src/interfaces/IUniswapV2Pair.sol | 6 +++++ 2 files changed, 51 insertions(+) create mode 100644 src/interfaces/IUniswapV2Pair.sol diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index 7c61204..ac8568f 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -2,6 +2,8 @@ pragma solidity 0.7.2; pragma experimental ABIEncoderV2; +import '../interfaces/IUniswapV2Pair.sol'; + import '../libraries/ElasticMath.sol'; import '../models/DAO.sol'; @@ -11,6 +13,7 @@ import '../models/Token.sol'; import '@openzeppelin/contracts/utils/ReentrancyGuard.sol'; import '@pie-dao/proxy/contracts/PProxy.sol'; +import 'hardhat/console.sol'; /** * @dev The ElasticDAO contract outlines and defines all the functionality @@ -23,6 +26,7 @@ contract ElasticDAO is ReentrancyGuard { address public ecosystemModelAddress; address public controller; address[] public summoners; + address[] public liquidityPools; bool public initialized; event ElasticGovernanceTokenDeployed(address indexed tokenAddress); @@ -35,6 +39,8 @@ contract ElasticDAO is ReentrancyGuard { uint256 actualAmount ); event JoinDAO(address indexed memberAddress, uint256 shareAmount, uint256 ethAmount); + event LiquidityPoolAdded(address indexed poolAddress); + event LiquidityPoolRemoved(address indexed poolAddress); event SeedDAO(address indexed summonerAddress, uint256 amount); event SummonedDAO(address indexed summonedBy); @@ -129,6 +135,17 @@ contract ElasticDAO is ReentrancyGuard { require(success, 'ElasticDAO: Build DAO Failed'); } + function addLiquidityPool(address _poolAddress) + external + onlyController + nonReentrant + returns (bool) + { + liquidityPools.push(_poolAddress); + + emit LiquidityPoolAdded(_poolAddress); + } + /** * @notice initializes the token of the DAO * @@ -199,6 +216,14 @@ contract ElasticDAO is ReentrancyGuard { emit ExitDAO(msg.sender, _deltaLambda, ethToBeTransfered); } + /** + * @notice this function returns the length of the liquidity pools array + * + */ + function getLiquidityPoolCount() public view returns (uint256) { + return liquidityPools.length; + } + /** * @notice this function is used to join the DAO after it has been summoned * Joining the DAO is syntactically equal to minting _deltaLambda for the function caller. @@ -253,6 +278,10 @@ contract ElasticDAO is ReentrancyGuard { bool success = tokenContract.mintShares(msg.sender, token.maxLambdaPurchase); require(success, 'ElasticDAO: Mint Shares Failed during Join'); + for (uint256 i = 0; i < liquidityPools.length; i += 1) { + IUniswapV2Pair(liquidityPools[i]).sync(); + } + // return extra ETH if (success && msg.value > deltaE) { (success, ) = msg.sender.call{ value: SafeMath.sub(msg.value, deltaE) }(''); @@ -298,6 +327,22 @@ contract ElasticDAO is ReentrancyGuard { } } + function removeLiquidityPool(address _poolAddress) + external + onlyController + nonReentrant + returns (bool) + { + for (uint256 i = 0; i < liquidityPools.length; i += 1) { + if (liquidityPools[i] == _poolAddress) { + liquidityPools[i] = liquidityPools[liquidityPools.length - 1]; + liquidityPools.pop(); + } + } + + emit LiquidityPoolRemoved(_poolAddress); + } + /** * @notice rewards @param _addresess with @param _amounts respectively * diff --git a/src/interfaces/IUniswapV2Pair.sol b/src/interfaces/IUniswapV2Pair.sol new file mode 100644 index 0000000..cf29237 --- /dev/null +++ b/src/interfaces/IUniswapV2Pair.sol @@ -0,0 +1,6 @@ +// SPDX-License-Identifier: GPLv3 +pragma solidity 0.7.2; + +interface IUniswapV2Pair { + function sync() external; +} From 178874c3c94c26603f640c784750bbb10017622b Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Tue, 16 Mar 2021 14:31:10 +0200 Subject: [PATCH 112/118] adds kovan config --- hardhat.config.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/hardhat.config.js b/hardhat.config.js index 5e6990d..4a4cd3b 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -9,7 +9,9 @@ require('hardhat-deploy'); require('hardhat-contract-sizer'); require('solidity-coverage'); +const ALCHEMY_KEY = process.env.ALCHEMY_KEY || ''; const ETHERSCAN_API_KEY = process.env.ETHERSCAN || ''; +const KOVAN_PRIVATE_KEY = process.env.KOVAN_PRIVATE_KEY || ''; const TESTNET_SEED = process.env.TESTNET_SEED || ''; // Tasks @@ -58,6 +60,11 @@ module.exports = { count: 10, }, }, + kovan: { + url: `https://eth-kovan.alchemyapi.io/v2/${ALCHEMY_KEY}`, + chainId: 42, + accounts: [`0x${KOVAN_PRIVATE_KEY}`], + }, }, gasReporter: { src: 'src', From dac6d496452465f97b978eae466f28f38d5469e0 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Tue, 16 Mar 2021 15:26:38 +0200 Subject: [PATCH 113/118] don't fail to run without a kovan private key --- hardhat.config.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/hardhat.config.js b/hardhat.config.js index 4a4cd3b..c644cc7 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -1,4 +1,5 @@ /* eslint no-undef: 0 */ +/* eslint operator-linebreak: 0 */ require('dotenv').config(); require('@nomiclabs/hardhat-waffle'); @@ -11,7 +12,9 @@ require('solidity-coverage'); const ALCHEMY_KEY = process.env.ALCHEMY_KEY || ''; const ETHERSCAN_API_KEY = process.env.ETHERSCAN || ''; -const KOVAN_PRIVATE_KEY = process.env.KOVAN_PRIVATE_KEY || ''; +const KOVAN_PRIVATE_KEY = + process.env.KOVAN_PRIVATE_KEY || + '0000000000000000000000000000000000000000000000000000000000000000'; const TESTNET_SEED = process.env.TESTNET_SEED || ''; // Tasks From 0c4ed6c3a6b5a17a9c43fe6434348bebd60f8734 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Tue, 16 Mar 2021 16:14:45 +0200 Subject: [PATCH 114/118] adds ropsten deploy config --- hardhat.config.js | 8 ++++++++ package.json | 1 + yarn.lock | 5 +++++ 3 files changed, 14 insertions(+) diff --git a/hardhat.config.js b/hardhat.config.js index c644cc7..d4313eb 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -15,6 +15,9 @@ const ETHERSCAN_API_KEY = process.env.ETHERSCAN || ''; const KOVAN_PRIVATE_KEY = process.env.KOVAN_PRIVATE_KEY || '0000000000000000000000000000000000000000000000000000000000000000'; +const ROPSTEN_PRIVATE_KEY = + process.env.ROPSTEN_PRIVATE_KEY || + '0000000000000000000000000000000000000000000000000000000000000000'; const TESTNET_SEED = process.env.TESTNET_SEED || ''; // Tasks @@ -68,6 +71,11 @@ module.exports = { chainId: 42, accounts: [`0x${KOVAN_PRIVATE_KEY}`], }, + ropsten: { + url: `https://eth-ropsten.alchemyapi.io/v2/${ALCHEMY_KEY}`, + chainId: 3, + accounts: [`0x${ROPSTEN_PRIVATE_KEY}`], + }, }, gasReporter: { src: 'src', diff --git a/package.json b/package.json index 67cb094..deee9da 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,7 @@ "@pie-dao/proxy": "^1.0.0", "bignumber.js": "9.0.1", "dotenv": "8.2.0", + "env": "^0.0.2", "ethereum-waffle": "3.2.1", "ethers": "5.0.26", "hardhat": "2.0.8", diff --git a/yarn.lock b/yarn.lock index 8f716df..40b2f78 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3254,6 +3254,11 @@ env-paths@^2.2.0: resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43" integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA== +env@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/env/-/env-0.0.2.tgz#50c19f307b129a45845b6b686df5b39dd40d1cf0" + integrity sha1-UMGfMHsSmkWEW2tobfWzndQNHPA= + errno@~0.1.1: version "0.1.8" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" From 5f5ef1c533d6ef1082476a3f33b9034083f3e7a3 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Tue, 16 Mar 2021 20:57:31 +0200 Subject: [PATCH 115/118] fixes bug in the proxy owner setup --- src/core/ElasticDAO.sol | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/core/ElasticDAO.sol b/src/core/ElasticDAO.sol index ac8568f..25e3666 100644 --- a/src/core/ElasticDAO.sol +++ b/src/core/ElasticDAO.sol @@ -122,14 +122,14 @@ contract ElasticDAO is ReentrancyGuard { } } - Ecosystem.Instance memory defaults = Ecosystem(_ecosystemModelAddress).deserialize(address(0)); - Ecosystem.Instance memory ecosystem = _buildEcosystem(controller, defaults); - ecosystemModelAddress = ecosystem.ecosystemModelAddress; - controller = _controller; deployer = msg.sender; summoners = _summoners; + Ecosystem.Instance memory defaults = Ecosystem(_ecosystemModelAddress).deserialize(address(0)); + Ecosystem.Instance memory ecosystem = _buildEcosystem(controller, defaults); + ecosystemModelAddress = ecosystem.ecosystemModelAddress; + bool success = _buildDAO(_summoners, _name, _maxVotingLambda, ecosystem); initialized = true; require(success, 'ElasticDAO: Build DAO Failed'); From 5778635dd5882a44e8b805d3d6110de939d8affb Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Wed, 17 Mar 2021 16:00:08 +0200 Subject: [PATCH 116/118] adds mainnet --- hardhat.config.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hardhat.config.js b/hardhat.config.js index d4313eb..5bdcc70 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -71,6 +71,11 @@ module.exports = { chainId: 42, accounts: [`0x${KOVAN_PRIVATE_KEY}`], }, + mainnet: { + url: `https://eth-mainnet.alchemyapi.io/v2/${ALCHEMY_KEY}`, + chainId: 1, + accounts: [`0x${MAINNET_PRIVATE_KEY}`], + }, ropsten: { url: `https://eth-ropsten.alchemyapi.io/v2/${ALCHEMY_KEY}`, chainId: 3, From fe7728dacc27b82ab330524e1d5ddea8753c5020 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Wed, 17 Mar 2021 16:07:36 +0200 Subject: [PATCH 117/118] add the var --- hardhat.config.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hardhat.config.js b/hardhat.config.js index 5bdcc70..53aeb70 100644 --- a/hardhat.config.js +++ b/hardhat.config.js @@ -15,6 +15,9 @@ const ETHERSCAN_API_KEY = process.env.ETHERSCAN || ''; const KOVAN_PRIVATE_KEY = process.env.KOVAN_PRIVATE_KEY || '0000000000000000000000000000000000000000000000000000000000000000'; +const MAINNET_PRIVATE_KEY = + process.env.MAINNET_PRIVATE_KEY || + '0000000000000000000000000000000000000000000000000000000000000000'; const ROPSTEN_PRIVATE_KEY = process.env.ROPSTEN_PRIVATE_KEY || '0000000000000000000000000000000000000000000000000000000000000000'; From 073b60111c7395e95600bef0062b82ec8afb8324 Mon Sep 17 00:00:00 2001 From: Dan Matthews Date: Mon, 5 Apr 2021 16:52:10 +0300 Subject: [PATCH 118/118] fixes infinite minting bug --- src/tokens/ElasticGovernanceToken.sol | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/tokens/ElasticGovernanceToken.sol b/src/tokens/ElasticGovernanceToken.sol index f33de04..692577b 100644 --- a/src/tokens/ElasticGovernanceToken.sol +++ b/src/tokens/ElasticGovernanceToken.sol @@ -513,6 +513,8 @@ contract ElasticGovernanceToken is IElasticToken, ReentrancyGuard { address _to, uint256 _deltaT ) internal { + require(_from != _to, 'ElasticDAO: Can not transfer to self'); + Ecosystem.Instance memory ecosystem = _getEcosystem(); Token tokenStorage = Token(ecosystem.tokenModelAddress); Token.Instance memory token = tokenStorage.deserialize(address(this), ecosystem);